顧客管理の暗号鍵でデータを暗号化する

このドキュメントでは、顧客管理の暗号鍵(CMEK)を使用して、Cloud Key Management Service を介してクラウド サービスの保存データを暗号化して制御する方法について説明します。CMEK はコード カスタマイズと統合されています。Gemini Code Assist は Cloud EKM 鍵の使用をサポートしていません。

このドキュメントでは、次の操作を行います。

  • CMEK を作成する方法について学習する。
  • Gemini Code Assist サービス アカウントに権限を付与する。
  • CMEK を使用してコード リポジトリ インデックスを作成する。
  • CMEK リポジトリへのアクセス権を削除する。

デフォルトでは、Gemini for Google Cloud はお客様のコンテンツを保存時に暗号化します。Gemini では、ユーザーが追加で操作を行わなくても、暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、Gemini などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することもできます。データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵の制御と管理を行います。

CMEK を使用してリソースを設定した後は、Gemini リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。

始める前に

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. シェル環境で gcloud components update コマンドを実行し、gcloud CLI のインストール済みコンポーネントがすべて最新バージョンに更新されていることを確認します。この手順では、gcloud CLI をインストールして初期化するか、Cloud Shell を使用します。

    gcloud components update
    

CMEK を作成し、権限を付与する

CMEK を作成して、鍵に対する権限を Gemini Code Assist サービス アカウントに付与するには、次の操作を行います。

  1. 鍵を管理する Google Cloud プロジェクトで、次の操作を行います。

    1. Cloud Key Management Service API を有効にします

    2. 次のいずれかのオプションを使用してキーリングと鍵を作成します。

  2. Gemini Code Assist サービス アカウントに CryptoKey Encrypter/Decrypter IAM ロールroles/cloudkms.cryptoKeyEncrypterDecrypter)を付与します。作成した鍵にこの権限を付与します。

    コンソール

    1. [鍵管理] に移動します。

      [鍵管理] に移動

    2. 作成した鍵を選択します。

    3. Gemini Code Assist サービス アカウントへのアクセス権を付与します。

      1. [プリンシパルを追加] をクリックします。
      2. Gemini Code Assist サービス アカウントを追加します。サービス アカウントは service-PROJECT_NUMBER@gcp-sa-cloudaicompanions.iam.gserviceaccount.com です。ここで、PROJECT_NUMBER は Gemini Code Assist が有効になっている Google Cloud プロジェクトのプロジェクト番号です。
      3. [ロールを選択] で、[Cloud KMS] > [Cloud KMS 暗号鍵の暗号化 / 復号] を選択します。
      4. [保存] をクリックします。
    4. 前の手順を繰り返して、CMEK を使用してコード リポジトリ インデックスを作成するアカウントにアクセス権を付与します。

    5. [鍵管理] ページに戻り、鍵をもう一度選択します。

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

    gcloud CLI

    1. Gemini Code Assist サービス アカウントへのアクセス権を付与するには、シェル環境で kms keys add-iam-policy-binding コマンドを使用します。

      gcloud kms keys add-iam-policy-binding KEY_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --keyring=KEYRING_NAME \
          --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com" \
          --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
      

      次のように置き換えます。

      • KEY_NAME は、鍵名です。
      • PROJECT_ID: 鍵が含まれているプロジェクトの ID。
      • LOCATION: 鍵のロケーション。
      • KEYRING_NAME: キーリング名。
      • PROJECT_NUMBER: Gemini Code Assist が有効になっている Google Cloud プロジェクトのプロジェクト番号
    2. 前の手順を繰り返して、CMEK を使用してコード リポジトリ インデックスを作成するアカウントにアクセス権を付与します。

    このコマンドの詳細については、gcloud kms keys add-iam-policy-binding ドキュメントをご覧ください。

API を使用し、CMEK を使用してコード リポジトリ インデックスを作成し、暗号化に使用する鍵を指定できるようになりました。

CMEK を使用してコード リポジトリ インデックスを作成する

CMEK 保護が有効な新しいリポジトリを作成するには、次のいずれかを行います。

gcloud CLI

gemini code-repository-indexes create コマンドを実行します。

gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
    --location=LOCATION \
    --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"

次のように置き換えます。

  • CODE_REPOSITORY_INDEX_NAME: 作成する新しいコード リポジトリ インデックスの名前。
  • LOCATION: 鍵のロケーション。
  • KEY_PROJECT_ID: 鍵プロジェクト ID。
  • KEYRING_NAME: キーリング名。
  • KEY_NAME は、鍵名です。

API

  1. 次の情報が含まれる JSON ファイルを作成します。

      {
        "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
      }
    

    次のように置き換えます。

    • KEY_PROJECT_ID: 鍵プロジェクト ID。
    • KEY_LOCATION: 鍵のロケーション
    • KEYRING_NAME: キーリング名
    • KEY_NAME: 鍵名
  2. cURL コマンドを使用して projects.locations.codeRepositoryIndexes.create メソッドを呼び出します。

    curl -X POST --data-binary @JSON_FILE_NAME \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"

    次のように置き換えます。

    • JSON_FILE_NAME: 前の手順で作成した JSON ファイルのパス。
    • PROJECT_ID: リポジトリを作成するプロジェクトの ID。
    • KEY_LOCATION: リポジトリを作成するロケーション。CMEK が存在するロケーションと一致する必要があります。
    • CODE_REPOSITORY_INDEX_NAME: 作成する新しいコード リポジトリ インデックスの名前。例: zg-btf-0001

レスポンスは、ログエントリのセットを返します。

CMEK リポジトリへのアクセス権を削除する

CMEK で暗号化されたリポジトリへのアクセス権を削除する方法はいくつかあります。

鍵を無効にするか破棄する前に、Gemini Code Assist サービス アカウントから権限を取り消すことをおすすめします。権限の変更の整合性は数秒以内に確保されるため、鍵の無効化や破棄の影響を確認できます。