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

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

始める前に

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

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

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

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

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

  4. Cloud SDK をインストールして初期化します。
  5. ユーザー アカウントに Cloud SQL 管理者の役割があることを確認します。

    Cloud IAM ページに移動します。

  6. 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 alpha services identity create --service=sqladmin.googleapis.com \
             --project=[USER_PROJECT]

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

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

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

鍵の作成

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

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. [暗号鍵] ページに移動します。

    KMS ページに移動

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

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

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

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

  6. [役割を選択] で、[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 \
       --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 SQL 管理者の操作は、KMS エラー、およびロールまたは権限の欠落により失敗する場合があります。失敗の一般的な理由には、KMS 鍵バージョンの欠落、KMS 鍵バージョンの無効化または破壊、KMS 鍵バージョンにアクセスするための不十分な IAM アクセス許可、または KMS 鍵バージョンが Cloud SQL インスタンスとは異なるリージョンにあることが含まれます。次のトラブルシューティング テーブルを使用して、一般的な問題を診断して解決します。

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

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

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

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

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

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

鍵を暗号化のページに移動

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

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


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

次のステップ