claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"このガイドでは、Azure Key Vaultのキーを、Anthropic組織の顧客管理暗号化キー(CMEK)として設定する手順を説明します。
CMEKの有効化は永続的です。Key Vaultのキーが削除または無効化された場合、Anthropicはそのキーで暗号化されたデータを復元できません。開始する前に、警告と制限事項を確認してください。
enableRbacAuthorization: true)で、パブリックネットワークアクセスが許可されているAzure Key Vault。Anthropicはパブリックデータプレーンエンドポイント経由でボールトを呼び出します。プライベートエンドポイントはサポートされていません。enablePurgeProtection: true)であること。これがないと、削除されたキーが論理的削除(soft-delete)の保持期間中に完全にパージされる可能性があり、CMEKで保護されたデータが回復不能な形で失われます。パージ保護は一度有効にすると無効化できません。Application Administrator、Cloud Application Administrator、または同等のカスタムロール)。az CLIがインストールされ、認証済みであること。AuditEventログカテゴリをLog Analytics、ストレージアカウント、またはイベントハブにルーティングするように、ボールトで診断設定が構成されていること。Azure Key Vaultはデフォルトではデータプレーンの監査ログ(KeyWrap、KeyUnwrap、KeyGetなど)を出力しないため、これがないとAnthropicのキー操作に対する監査証跡が得られません。Anthropicに暗号化キーを使用させるには、AnthropicのマルチテナントアプリケーションIDと表示名を設定する必要があります。これらの値は次のとおりです。
| Field | Value |
|---|---|
| マルチテナントアプリのクライアントID(US) | 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 |
| アプリの表示名 | anthropic-cmek-client-us |
この公開されたクライアントIDと表示名のみを使用してください。メール、チャット、その他のオンボーディングチャネルで提供された識別子は決して信頼しないでください。
Anthropicマルチテナントアプリケーションへの同意
これにより、AnthropicのCMEKクライアントアプリケーション用のサービスプリンシパルがEntraテナントに作成されます。このアプリケーションはMicrosoft Graphの権限を一切要求しません。Key Vaultのデータプレーンアクセスのためのフェデレーションターゲットとしてのみ存在します。
az ad sp create --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87出力からidフィールドを取得します。これはテナント内のサービスプリンシパルのオブジェクトIDで、RBACロールを割り当てる際に使用します。
{
"appId": "8635ae1a-3e5d-44e8-a4ed-e0f614466f87",
"displayName": "anthropic-cmek-client-us",
"id": "<sp-object-id>"
}サービスプリンシパルがテナントにすでに存在する場合(以前の試行または別の統合による)、az ad sp createは「already exists」エラーで終了します。代わりにそのオブジェクトIDを取得してください。
az ad sp show --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 --query id -o tsvこの手順にはPortalでの同等の操作はありません。Azure CLIがローカルにインストールされていない場合は、Portalの上部ナビゲーションバーからCloud Shellを開いてください。コマンドが成功した後、Microsoft Entra ID > エンタープライズアプリケーションで、デフォルトのアプリケーションタイプフィルターをクリアしてanthropic-cmek-client-usを検索すると、サービスプリンシパルのオブジェクトIDを確認できます。

ボールトにRSAキーを作成する
Azure Key Vaultは対称キーラッピングをサポートしていないため、キーはRSA(3072ビット以上)で、許可された操作にwrapKeyとunwrapKeyが含まれている必要があります。
az keyvault key create \
--vault-name <your-vault-name> \
--name <your-key-name> \
--kty RSA --size 3072 \
--ops wrapKey unwrapKeyHSMでバックアップされたキーの場合は、--kty RSA-HSMを使用します(Premium SKUのボールトが必要です)。この統合では、ソフトウェアで保護されたRSAキーでも問題ありません。
Portalから、Key Vaultを開き、キーを選択し、生成/インポートを選択します。キーの種類をRSAに、サイズを3072以上に設定します。キーをラップとアンラップのみに制限するには、キーバージョンを開き、許可される操作までスクロールし、Wrap KeyとUnwrap Key以外のすべてのチェックを外します。


Anthropicサービスプリンシパルにキーへのアクセスを許可する
最初の手順で作成したサービスプリンシパルに、ボールト全体ではなく個々のキーをスコープとしてKey Vault Crypto Userロールを割り当てます。
VAULT_ID=$(az keyvault show --name <your-vault-name> --query id -o tsv)
az role assignment create \
--role "Key Vault Crypto User" \
--assignee-object-id <sp-object-id> \
--assignee-principal-type ServicePrincipal \
--scope "${VAULT_ID}/keys/<your-key-name>"組み込みのKey Vault Crypto Userロールは、割り当てられたスコープに対してキーの暗号化操作(暗号化、復号、ラップ、アンラップ、署名、検証)とキーの読み取りを許可します。前の手順でキーに設定した--ops wrapKey unwrapKeyの制限により、このキーに対して成功する操作がさらに絞り込まれるため、実際にはAnthropicはラップとアンラップのみを実行できます。
Portalから、(ボールトではなく)キーを開き、その**アクセス制御(IAM)**タブを選択し、追加 > ロールの割り当ての追加をクリックし、Key Vault Crypto Userを選択して、anthropic-cmek-client-usサービスプリンシパルに割り当てます。
専用ボールトの代替案: Microsoftは、アプリケーションごとに専用のボールトを用意し、ボールトスコープでロールを割り当てることを推奨しています。このAnthropic CMEKキーのみを保持するボールトをプロビジョニングする場合は、代わりにボールトスコープでロールを割り当てることができ、効果は同じです。キーが共有ボールトにある場合は、個々のキーをスコープにしてください。

ボールトの構成を確認する
az keyvault show --name <your-vault-name> \
--query "{rbac:properties.enableRbacAuthorization, purge:properties.enablePurgeProtection, pub:properties.publicNetworkAccess, net:properties.networkAcls.defaultAction, ipRules:properties.networkAcls.ipRules, uri:properties.vaultUri, tenantId:properties.tenantId}"次の点を確認してください。
rbacがtrueであること。purgeがtrueであること。falseまたはnullの場合は、続行する前にボールトでパージ保護を有効にしてください。これがないと、論理的に削除されたキーが保持期間中に完全にパージされる可能性があり、CMEKで保護されたデータが回復不能になります。pubが"Enabled"であること。"Disabled"の場合、Anthropicはパブリックデータプレーンエンドポイント経由でボールトに到達できず、検証が失敗します。netが"Allow"であること。または"Deny"の場合は、ipRulesにAnthropicのエグレス範囲が含まれていること(最新のリストについてはAnthropicにお問い合わせください)。uriが、キーを登録する際に使用するボールトURIであること。tenantIdが、ボールトを管理するテナントであること。キーを登録する際は、現在アクティブなサブスクリプションのテナントではなく、この値をtenant_idとして使用してください(クロステナント構成では両者が異なる場合があります)。キーの登録方法は、使用する製品によって異なります。
Anthropicにキーを登録する
Admin APIを通じて外部キー構成を作成します。
curl -sS https://api.anthropic.com/v1/organizations/external_keys \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"display_name": "<friendly-name>",
"geo": "us",
"provider_config": {
"type": "azure",
"vault_uri": "https://<your-vault-name>.vault.azure.net/",
"key_name": "<your-key-name>",
"tenant_id": "<your-tenant-id>"
}
}'レスポンスには外部キーIDが含まれます。
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}キーを検証する
キーに対して暗号化と復号のラウンドトリップをトリガーします。これにより、Anthropicがテナントに対して認証し、ラップおよびアンラップ操作を実行できることが確認されます。
curl -sS -X POST https://api.anthropic.com/v1/organizations/external_keys/ekey_<id>/validate \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" -d '{}'成功した場合のレスポンスは次のようになります。
{ "type": "external_key_validation", "status": "success", "error": null }検証が失敗した場合、errorフィールドに問題の内容が記述されます。一般的な原因は次のとおりです。
ipRulesを確認してください。キーをワークスペースにアタッチする
キーが検証されたら、ワークスペースにアタッチして、そのワークスペースのデータに対してCMEKを有効にします。
curl -sS -X POST https://api.anthropic.com/v1/organizations/workspaces/<workspace-id> \
-H "x-api-key: <anthropic-admin-api-key>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"external_key_id": "ekey_<id>"
}'Infrastructure as Code(コードとしてのインフラストラクチャ)によるデプロイの場合、同じ手順はazurermおよびazureadプロバイダーに対応します。
Was this page helpful?