Claude Platform Docs
管理暗号化キー

CMEK用にGoogle Cloud KMSを設定する

Google Cloud KMSを使用して、組織の暗号化キーを提供します。

Configure with the /claude-api skill in Claude Code
claude "/claude-api help me configure a customer-managed encryption key with Google Cloud KMS"

このガイドでは、Google Cloud KMSキーをAnthropic組織の「customer-managed encryption key」(顧客管理暗号化キー)、すなわちCMEKとして設定する手順を説明します。

前提条件

  • 課金が有効になっているGoogle Cloudプロジェクト。
  • Cloud KMS APIが有効になっていること(cloudkms.googleapis.com)。
  • KMSキーリングとキーを作成し、それらにIAMポリシーを設定する権限(roles/cloudkms.adminまたは同等のもの)。
  • 組織のAnthropic Admin APIキー。
  • gcloud CLIがインストールされ、認証済みであること。
  • プロジェクトでCloud KMSのデータアクセス監査ログが有効になっていること(IAMと管理 > 監査ログ > Cloud Key Management Service、DATA_READDATA_WRITEを指定)。これらはデフォルトでオフになっています。有効にしないと、Anthropicの暗号化および復号操作はCloud Loggingにエントリを生成しません。

Anthropicサービスアカウントのメールアドレス

Anthropicに暗号化キーを使用させるには、Anthropicのサービスアカウントに、データの暗号化に使用できるキーを付与する必要があります。Anthropic CMEK用のサービスアカウントのメールアドレスは次のとおりです。

anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com

暗号化キーのセットアップ

  1. キーリングを作成または選択する

    再利用するキーリングがすでにある場合は、このステップをスキップしてください。キーリングはリージョン単位です。設定対象のAnthropicの地域に一致する、us-east5などの米国の単一リージョンのロケーションを選択してください。usglobalなどのマルチリージョンのロケーションはサポートされていません。

    gcloud kms keyrings create <your-keyring-name> \
      --project=<your-project-id> \
      --location=<region>
  2. 暗号鍵を作成する

    ENCRYPT_DECRYPTの目的を持つ対称鍵を作成します。AnthropicはHSM保護を強く推奨します。Cloud KMS HSMキーはFIPS 140-2 Level 3の検証済みであり、ソフトウェアキーとのコスト差はわずかです。

    gcloud kms keys create <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --purpose=encryption \
      --protection-level=hsm

    代わりにソフトウェア保護を使用する場合は、--protection-level=hsmを省略してください。このガイドの他の部分は変わりません。

    Google Cloud Consoleからキーを作成することもできます。キーリングを開き、鍵を作成をクリックし、生成された鍵を選択し、目的とアルゴリズムを対称暗号化/復号に設定し、保護レベルでHSMを選択します。

    HSM保護レベルとSymmetric encrypt/decryptの目的が設定されたGoogle Cloud KMSのCreate keyページ。
    HSM保護された対称暗号化/復号(Symmetric encrypt/decrypt)キーを作成します。
  3. Anthropicのサービスアカウントにキーへのアクセス権を付与する

    キーレベルのIAMバインディングが2つ必要です。どちらもプロジェクト全体やキーリング全体ではなく、単一の暗号鍵にスコープされます。

    暗号化と復号。Anthropicはこれを使用して、ワークスペースデータを保護するデータキーを暗号化および復号します(エンベロープ暗号化)。

    gcloud kms keys add-iam-policy-binding <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --member="serviceAccount:anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com" \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

    閲覧者。Anthropicが起動時にキーの目的とアルゴリズムを検証するために実行するメタデータ読み取り(cryptoKeys.get)用です。

    gcloud kms keys add-iam-policy-binding <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --member="serviceAccount:anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com" \
      --role=roles/cloudkms.viewer

    Consoleからは、キーを選択し、権限パネルを開き、アクセス権を付与をクリックして、Cloud KMS CryptoKey Encrypter/DecrypterロールとCloud KMS Viewerロールの両方を持つサービスアカウントを追加します。付与がこのキーのみにスコープされるよう、キーリングやプロジェクトではなく、キーの権限ページにいることを確認してください。

    AnthropicサービスアカウントにCloud KMS CryptoKey Encrypter/DecrypterロールとViewerロールが割り当てられたGrant accessダイアログ。
    Anthropicサービスアカウントに、キーにスコープされた両方のロール(Cloud KMS CryptoKey Encrypter/DecrypterおよびViewer)を付与します。
  4. 完全なキーリソース名を記録する

    キーを登録する際に、これをAnthropicに渡します。形式は次のとおりです。

    projects/<your-project-id>/locations/<region>/keyRings/<your-keyring-name>/cryptoKeys/<your-key-name>

    次のコマンドで取得します。

    gcloud kms keys describe <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --format="value(name)"

    Consoleからは、キーの詳細ページを開き、リソース名をコピーをクリックします。

    キーのアクションメニューでCopy resource nameアクションがハイライトされたGoogle Cloudキーリングの詳細。
    アクションメニューからキーの完全なリソース名をコピー(Copy resource name)します。

Anthropicにキーを登録する

キーの登録方法は、使用する製品によって異なります。

  1. Anthropicにキーを登録する

    暗号化キーのセットアップの「完全なキーリソース名を記録する」ステップで取得したリソース名を使用して、Admin APIを通じて外部キー設定を作成します。

    client = anthropic.Anthropic()
    
    external_key = client.beta.organization.external_keys.create(
        display_name="<friendly-name>",
        geo="us",
        provider_config={
            "type": "gcp",
            "key_name": "projects/<your-project-id>/locations/<region>/keyRings/<your-keyring-name>/cryptoKeys/<your-key-name>",
        },
    )
    
    print(f"id: {external_key.id}")
    print(f"display_name: {external_key.display_name}")

    レスポンスには外部キーIDが含まれます。

    {
      "type": "external_key",
      "id": "ekey_<id>",
      "display_name": "<friendly-name>"
    }
  2. キーを検証する

    キーに対して暗号化と復号のラウンドトリップをトリガーします。

    client = anthropic.Anthropic()
    
    validation = client.beta.organization.external_keys.validate("ekey_<id>")
    
    print(f"status: {validation.status}")
    print(f"error: {validation.error}")

    成功したレスポンスは次のようになります。

    { "type": "external_key_validation", "status": "success", "error": null }

    検証が失敗した場合、一般的な原因は次のとおりです。

    • VPC Service Controls: プロジェクトでサービス境界がCloud KMSを保護している場合、Anthropicがキーに到達できるよう、境界のアクセスレベルにAnthropicを追加する(またはキーのプロジェクトを除外する)必要があります。
    • ドメイン制限付き共有: constraints/iam.allowedPolicyMemberDomains組織ポリシーにより、Anthropicサービスアカウントのバインディングが削除される場合があります(前述の注記を参照)。gcloud kms keys get-iam-policy <your-key-name> --project=<your-project-id> --location=<region> --keyring=<your-keyring-name>でバインディングが存在することを確認してください。
    • 無効化または破棄されたキーバージョン: キーのプライマリバージョンが有効であり、無効化、破棄予定、または破棄済みでないことを確認してください。
  3. キーをワークスペースにアタッチする

    キーが検証されたら、そのワークスペースにリクエストを送信する前に、新しいワークスペースにキーをアタッチします。すでにリクエストを受信しているワークスペースの場合、キーが有効になるまで最大1日かかることがあります。

    client = anthropic.Anthropic()
    
    workspace = client.beta.organization.workspaces.update(
        "<workspace-id>", external_key_id="ekey_<id>"
    )
    
    print(f"id: {workspace.id}")
    print(f"external_key_id: {workspace.external_key_id}")

Terraform

Infrastructure as Codeによるデプロイの場合、同じ手順はgoogleプロバイダーのgoogle_kms_key_ringgoogle_kms_crypto_key、およびgoogle_kms_crypto_key_iam_memberリソースに対応します。

Was this page helpful?