顧客管理の暗号鍵(CMEK)の使用

このページでは、顧客管理の暗号鍵のサービス アカウントと鍵の設定方法と、顧客管理の暗号鍵を使用するインスタンスの作成方法について説明します。Cloud SQL で顧客管理の暗号鍵を使用する方法の詳細は、顧客管理の暗号鍵の概要を参照してください。

始める前に

    gcloud_init
  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP Console のプロジェクト セレクタのページで、GCP プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. ユーザー アカウントに Cloud SQL 管理者の役割があることを確認します。

    Cloud IAM ページに移動

  5. cloudkms.googleapis.com Cloud Key Management Service API

CMEK を使用して Cloud SQL インスタンスを作成するためのワークフロー

  1. 顧客管理の暗号鍵が必要なプロジェクトごとにサービス アカウントを作成します。
  2. キーリングと鍵を作成し、鍵ごとに場所を設定します。
  3. サービス アカウントに鍵のアクセス権を付与してください。
  4. 鍵 ID(KMS_RESOURCE_ID)と場所をメモします。CMEK を有効にしたインスタンスを作成するには、この情報が必要です。
  5. プロジェクトに移動して、次のオプションを使用して Cloud SQL インスタンスを作成します。
    1. 顧客管理の暗号鍵と同じ場所
    2. 顧客管理の暗号鍵の構成
    3. 顧客管理の暗号鍵 ID

CMEK で Cloud SQL インスタンスが有効になります。

サービス アカウントの作成

顧客管理の暗号鍵が必要なプロジェクトごとにサービス アカウントを作成する必要があります。現在使用できるのは、gcloud コマンドライン ツールコマンドを使用して、顧客管理の暗号鍵に必要なサービス アカウントの種類を作成する方法だけです。

サービス アカウントを作成するには gcloud コマンドライン ツールで次のコマンドを実行します。

gcloud beta services identity create --service=sqladmin.googleapis.com \
                 --project=[USER_PROJECT]
    

このコマンドは、次の形式でサービス アカウント名を返します。

    service-[PROJECT_NUMBER]@gcp-sa-cloud-sql.iam.gserviceaccount.com
    

例:

    service-534582264470@gcp-sa-cloud-sql.iam.gserviceaccount.com
    

このサービス アカウント名は、サービス アカウントへの鍵へのアクセス権の付与の手順で使用します。

鍵の作成

鍵は、Cloud SQL インスタンスと同じ GCP プロジェクトで作成するか、別のユーザー プロジェクトで作成します。Cloud KMS キーリングの場所は、Cloud SQL インスタンスを作成するリージョンと一致する必要があります。マルチリージョンまたはグローバル リージョン鍵は使用できません。リージョンが一致しない場合、Cloud SQL インスタンスの作成リクエストは失敗します。

Cloud KMS 鍵を作成するには:

CONSOLE

  1. [暗号鍵] ページに移動します。

    [暗号鍵] ページに移動

  2. [キーリングを作成] をクリックします。

  3. [キーリング名] を追加します。

  4. [キーリングの場所] を追加します。

  5. [作成] をクリックします。[鍵の作成] ページが開きます。

  6. [鍵の名前] を追加します。

  7. [目的] を選択します(対称または非対称)。

  8. [ローテーション期間] と [開始日] を選択します。

  9. [作成] をクリックします。

  10. [] のテーブルで、最後の列の 3 つのドットをクリックし、[リソース ID のコピー] を選択します。これが KMS_RESOURCE_ID です。この KMS_RESOURCE_ID は Cloud SQL インスタンスの作成時に必要です。

GCLOUD

  1. 新しいキーリングを作成します。

    gcloud kms keyrings create [KEYRING_NAME] --location [LOCATION]
        
  2. キーリングで鍵を作成します。

    gcloud kms keys create [KEY_NAME] --location [LOCATION] \
              --keyring [KEYRING_NAME] --purpose encryption
        

サービス アカウントへの鍵のアクセス権の付与

サービス アカウントへのアクセス権を付与するには:

CONSOLE

  1. [暗号鍵] ページに移動します。

    Cloud KMS ページに移動

  2. 顧客管理の暗号鍵用に作成した鍵を選択します。

  3. [情報パネルを表示] を選択します。

  4. [メンバーを追加] をクリックします。 メンバーの追加ボタン

  5. [新しいメンバー] で作成したサービス アカウント名を追加します。

  6. [役割を選択] で、[Cloud KMS] > [クラウド KMS 暗号鍵の暗号化 / 復号化] を選択します。

  7. [保存] をクリックします。

  8. [暗号鍵] ページに戻り、鍵をもう一度選択します。

  9. [情報パネルを表示] を選択します。[**役割 / メンバー **] 列に役割が表示されます。

GCLOUD

gcloud kms keys add-iam-policy-binding \
           [KEY_NAME] --location [LOCATION] --keyring [KEY_RING_NAME] \
           --member serviceAccount:service-[PROJECT_NUMBER]@gcp-sa-cloud-sql.iam.gserviceaccount.com \
           --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

CMEK を使用した Cloud SQL インスタンスの作成

顧客管理の暗号鍵を使用してインスタンスを作成するには:

GCLOUD

gcloud sql instances create [INSTANCE_NAME] --project [PROJECT_ID] \
                --disk-encryption-key [KMS_RESOURCE_ID]
    

CURL

顧客管理の暗号鍵を使用してインスタンスを作成するには、diskEncryptionConfiguration をコマンドに渡します。このパラメータの値は、鍵の作成手順から受け取った KMS_RESOURCE_ID です。

gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name":"[INSTANCE_NAME]", "region":"[REGION]",
                  "diskEncryptionConfiguration" : {"kmsKeyName" : "[KMS_RESOURCE_ID]"},
                  "settings": {"tier":"[MACHINE_TYPE]",
                  "backupConfiguration": {"binaryLogEnabled":true, "enabled":true}}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    

この cURL コマンドは、インスタンス: 挿入を使用します。

CMEK 対応インスタンスのバックアップの作成

Cloud SQL インスタンスのバックアップを作成すると、バックアップは、プライマリ インスタンスと同じ顧客管理の暗号鍵で暗号化されます。

オンデマンド バックアップと自動バックアップの作成と管理をご覧ください。唯一の変更点として、[バックアップの作成] ページに、「バックアップは、このインスタンスの顧客管理の暗号鍵を使用して暗号化されます。誰かがこの鍵を破棄すると、この鍵を使用して暗号化されているすべてのデータが完全に失われます。」という警告が表示されます。

CMEK 対応インスタンスのレプリカの作成

Cloud SQL インスタンスのリードレプリカは、親インスタンスと同じ顧客管理の暗号鍵を継承します。

リードレプリカの作成をご覧ください。唯一の変更点は、[リードレプリカの作成] ページに次のような警告が表示されることです。「レプリカは、マスター インスタンスの顧客管理の暗号鍵を使用して暗号化されます。誰かがこの鍵を破棄すると、この鍵を使用して暗号化されているすべてのデータが完全に失われます。」

CMEK 対応インスタンスのクローンの作成

Cloud SQL インスタンスのクローンを作成すると、ソース インスタンスの暗号化に使用したものと同じ顧客管理の暗号鍵を継承します。

インスタンスのクローンを作成するをご覧ください。唯一の変更点は、[クローンの作成] ページに次のような警告が表示されることです。「クローンは、ソース インスタンスの顧客管理の暗号鍵を使用して暗号化されます。誰かがこの鍵を破棄すると、この鍵を使用して暗号化されているすべてのデータが完全に失われます。」

鍵バージョンの無効化と再有効化

次のトピックをご覧ください。

トラブルシューティング

ここでは、CMEK 対応インスタンスの設定中または使用中にエラー メッセージが表示された場合の対処方法について説明します。

Cloud KMS エラーや役割または権限がないために、作成、クローン作成、更新などの Cloud SQL 管理者のオペレーションが失敗する場合があります。失敗の一般的な理由には、Cloud KMS 鍵バージョンがない、Cloud KMS 鍵バージョンが無効かまたは破棄されている、Cloud KMS 鍵バージョンにアクセスするための IAM 権限が不足している、Cloud KMS 鍵バージョンが Cloud SQL インスタンスと別のリージョンにあるなどがあります。一般的な問題を診断して解決するには、次のトラブルシューティングの表を使用してください。

顧客管理の暗号鍵のトラブルシューティングの表

エラー: 次のような問題が考えられます... 次のことを試します...
プロダクトごと、プロジェクトごとのサービス アカウントが見つかりません サービス アカウント名が正しくありません。 正しいユーザー プロジェクトのサービス アカウントが作成されていることを確認します。

[サービス アカウント] ページに移動

サービス アカウントへのアクセスを許可できません ユーザー アカウントに、この鍵バージョンへのアクセスを許可する権限がありません。 ユーザー アカウントまたはサービス アカウントで組織管理者の役割を追加してください。

IAM アカウントのページに移動

Cloud KMS 鍵バージョンが破棄されています 鍵バージョンが破棄されています。 鍵バージョンが破棄されている場合、データの暗号化や復号に使用できません。
Cloud KMS 鍵バージョンが無効です 鍵バージョンが無効です。 Cloud KMS 鍵バージョンを再度有効にします。

暗号鍵のページに移動

Cloud KMS 鍵を使用するための十分な権限がありません Cloud SQL インスタンスへのオペレーションの実行に使用しているユーザー アカウントまたはサービス アカウントに cloudkms.cryptoKeyEncrypterDecrypter の役割がないか、Cloud KMS 鍵バージョンが存在しません。 ユーザー アカウントまたはサービス アカウントに cloudkms.cryptoKeyEncrypterDecrypter の役割を追加します。

IAM アカウントのページに移動


アカウントにすでに役割がある場合は、鍵の作成を参照して、新しい鍵バージョンの作成方法を確認してください。注を参照。
Cloud KMS 鍵が見つかりません 鍵バージョンが存在しません。 新しい鍵バージョンを作成します。鍵の作成をご覧ください。注を参照。
Cloud SQL インスタンスと Cloud KMS 鍵バージョンが異なるリージョンにあります Cloud KMS 鍵バージョンと Cloud SQL インスタンスは同じリージョン内にある必要があります。Cloud KMS 鍵バージョンがグローバル リージョンまたはマルチリージョンにある場合は機能しません。 インスタンスを作成するリージョンと同じリージョンに鍵バージョンを作成します。鍵の作成をご覧ください。注を参照。

次のステップ