claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"이 가이드는 Anthropic 조직의 customer-managed encryption key(고객 관리형 암호화 키), 즉 CMEK로 Azure Key Vault 키를 구성하는 과정을 안내합니다.
CMEK 활성화는 영구적입니다. Key Vault 키가 삭제되거나 비활성화되면 Anthropic은 해당 키로 암호화된 데이터를 복구할 수 없습니다. 시작하기 전에 경고 및 제한 사항을 검토하세요.
enableRbacAuthorization: true)되어 있고 공용 네트워크 액세스가 허용된 Azure Key Vault. Anthropic은 공용 데이터 플레인 엔드포인트를 통해 Vault를 호출하며, 프라이빗 엔드포인트는 지원되지 않습니다.enablePurgeProtection: true)되어 있어야 합니다. 이 설정이 없으면 삭제된 키가 일시 삭제 보존 기간 동안 영구적으로 제거될 수 있어 CMEK로 보호된 데이터가 복구 불가능하게 손실됩니다. 제거 보호는 한 번 활성화되면 비활성화할 수 없습니다.Application Administrator, Cloud Application Administrator 또는 이에 상응하는 사용자 지정 역할).az CLI가 설치되고 인증되어 있어야 합니다.AuditEvent 로그 범주를 Log Analytics, 스토리지 계정 또는 이벤트 허브로 라우팅해야 합니다. Azure Key Vault는 기본적으로 데이터 플레인 감사 로그(KeyWrap, KeyUnwrap, KeyGet 등)를 내보내지 않으므로, 이 설정이 없으면 Anthropic의 키 작업에 대한 감사 추적을 얻을 수 없습니다.Anthropic이 암호화 키를 사용하도록 하려면 Anthropic 멀티 테넌트 애플리케이션 ID와 표시 이름을 구성해야 합니다. 해당 값은 다음과 같습니다.
| 필드 | 값 |
|---|---|
| 멀티 테넌트 앱 클라이언트 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 > Enterprise applications에서 기본 애플리케이션 유형 필터를 지우고 anthropic-cmek-client-us를 검색하여 서비스 주체의 객체 ID를 찾을 수 있습니다.

Vault에서 RSA 키 생성
Azure Key Vault는 대칭 키 래핑을 지원하지 않으므로, 키는 허용된 작업에 wrapKey와 unwrapKey가 포함된 RSA(3072비트 이상)여야 합니다.
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 Vault 필요). 소프트웨어로 보호되는 RSA 키도 이 통합에 사용할 수 있습니다.
Portal에서 Key Vault를 열고 Keys를 선택한 다음 Generate/Import를 선택하세요. 키 유형을 RSA로, 크기를 3072 이상으로 설정하세요. 키를 래핑 및 언래핑으로만 제한하려면 키 버전을 열고 Permitted operations로 스크롤한 다음 Wrap Key와 Unwrap Key를 제외한 모든 항목의 선택을 해제하세요.


Anthropic 서비스 주체에 키 액세스 권한 부여
첫 번째 단계에서 생성한 서비스 주체에 Key Vault Crypto User 역할을 할당하되, 전체 Vault가 아닌 개별 키로 범위를 지정하세요.
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에서 (Vault가 아닌) 키를 열고 Access control (IAM) 탭을 선택한 다음 Add > Add role assignment를 클릭하고 Key Vault Crypto User를 선택하여 anthropic-cmek-client-us 서비스 주체에 할당하세요.
전용 Vault 대안: Microsoft는 애플리케이션별로 전용 Vault를 사용하고 Vault 범위에서 역할을 할당할 것을 권장합니다. 이 Anthropic CMEK 키만 보관하는 Vault를 프로비저닝하는 경우, Vault 범위에서 역할을 할당해도 효과는 동일합니다. 키가 공유 Vault에 있는 경우에는 개별 키로 범위를 지정하세요.

Vault 구성 확인
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인 경우 진행하기 전에 Vault에서 제거 보호를 활성화하세요. 이 설정이 없으면 일시 삭제된 키가 보존 기간 동안 영구적으로 제거될 수 있어 CMEK로 보호된 데이터를 복구할 수 없게 됩니다.pub가 "Enabled"입니다. "Disabled"인 경우 Anthropic이 공용 데이터 플레인 엔드포인트를 통해 Vault에 접근할 수 없어 검증이 실패합니다.net이 "Allow"이거나, "Deny"인 경우 ipRules에 Anthropic의 송신 IP 범위가 포함되어 있어야 합니다(최신 목록은 Anthropic에 문의하세요).uri는 키를 등록할 때 사용하는 Vault URI입니다.tenantId는 Vault를 관리하는 테넌트입니다. 키를 등록할 때 현재 활성 구독의 테넌트가 아닌 이 값을 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?