claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Это руководство описывает настройку ключа AWS KMS в качестве «customer-managed encryption key» (ключа шифрования, управляемого клиентом), или CMEK, для вашей организации Anthropic.
Включение CMEK необратимо. Если ваш ключ KMS будет удалён или отключён, Anthropic не сможет восстановить данные, зашифрованные с его помощью. Ознакомьтесь с предупреждениями и ограничениями, прежде чем начать.
kms:CreateKey и kms:PutKeyPolicy).Чтобы Anthropic могла использовать ваш ключ шифрования, вы должны предоставить IAM-роли Anthropic ключ KMS, который она сможет использовать для шифрования данных. ARN для Anthropic CMEK:
arn:aws:iam::915198916910:role/anthropic-cmek-client-usИспользуйте только этот опубликованный ARN. Никогда не доверяйте идентификатору, полученному по электронной почте, в чате или через любой канал онбординга.
Создайте ключ KMS с политикой ключа для межаккаунтного доступа
Политика ключа предоставляет IAM-роли Anthropic межаккаунтный доступ. Требуются три инструкции (statements):
kms:Encrypt и kms:Decrypt, которые Anthropic использует для шифрования и расшифровки ключей данных, защищающих данные вашего рабочего пространства (конвертное шифрование).DescribeKey не имеет параметра EncryptionContext, поэтому условие EncryptionContext для этого действия всегда приводило бы к отказу.export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
aws kms create-key \
--region <region> \
--description "Anthropic CMEK" \
--key-usage ENCRYPT_DECRYPT \
--policy "{
\"Version\": \"2012-10-17\",
\"Statement\": [
{
\"Sid\": \"AccountRootAdmin\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::${YOUR_ACCOUNT}:root\"},
\"Action\": \"kms:*\",
\"Resource\": \"*\"
},
{
\"Sid\": \"AllowAnthropicCMEKCrypto\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": [\"kms:Encrypt\", \"kms:Decrypt\"],
\"Resource\": \"*\",
\"Condition\": {
\"StringEquals\": {
\"kms:EncryptionContext:anthropic:compartment_uuid\": \"<compartment-uuid>\"
}
}
},
{
\"Sid\": \"AllowAnthropicCMEKDescribe\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": \"kms:DescribeKey\",
\"Resource\": \"*\"
}
]
}"Сохраните значение KeyMetadata.Arn из вывода. Оно понадобится вам при регистрации ключа на следующем шаге.
Условие EncryptionContext рекомендуется, но не является обязательным. Anthropic всегда включает идентификатор компартмента вашего рабочего пространства в контекст шифрования, поэтому шифротекст в любом случае криптографически привязан к этому компартменту. Добавление условия обеспечивает дополнительный уровень защиты на уровне IAM. Чтобы начать без него, опустите блок Condition в инструкции AllowAnthropicCMEKCrypto и добавьте его позже с помощью kms:PutKeyPolicy.
Как найти идентификатор компартмента: каждое рабочее пространство имеет идентификатор компартмента, который определяет область его данных CMEK. Найдите его в Claude Console в разделе Workspace > Security > Encryption keys (поле Compartment ID) или считайте поле compartment_id, возвращаемое эндпоинтом Get Workspace. Подставьте это значение вместо <compartment-uuid> в приведённой выше политике ключа. Anthropic также отправляет его в качестве контекста шифрования при валидации ключа, поэтому значение условия должно совпадать, чтобы валидация прошла успешно.
Вы также можете создать ключ через AWS Console. Выберите симметричный ключ с назначением «encrypt and decrypt», ключ для одного региона и источник материала ключа KMS. Мастер создания ключа фиксирует политику ключа на шаге Review: если вы добавите идентификатор учётной записи Anthropic 915198916910 в разделе разрешений на использование ключа, сгенерированная политика предоставит всей учётной записи Anthropic более широкие действия (такие как kms:ReEncrypt* и kms:GenerateDataKey*) без условия EncryptionContext, и валидация всё равно пройдёт успешно. Чтобы не оставлять ключ с избыточными разрешениями, завершите работу мастера только с административными разрешениями, затем откройте вкладку Key policy ключа и замените JSON на политику с ограничением по роли, показанную выше (три инструкции, ограниченные ролью anthropic-cmek-client-us, с условием EncryptionContext).




Зарегистрируйте ключ в 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": "aws",
"kms_arn": "<key-arn-from-step-1>",
"role_arn": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
}
}'Ответ содержит идентификатор внешнего ключа:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}Выполните валидацию ключа
Запустите цикл шифрования и расшифровки с использованием вашего ключа.
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 }Если валидация не проходит, распространённые причины следующие:
EncryptionContext в политике ключа, убедитесь, что вы заменили <compartment-uuid> на фактический идентификатор компартмента вашего рабочего пространства (см. шаг 1). Неверное или неподставленное значение приводит к тому, что KMS возвращает непрозрачную ошибку AccessDeniedException. Чтобы исключить эту причину, временно удалите блок Condition из инструкции AllowAnthropicCMEKCrypto и повторите валидацию.aws:PrincipalOrgID не соответствует вашей организации, она блокирует межаккаунтную роль Anthropic. В RCP необходимо добавить исключение для этого ключа или для ARN роли Anthropic. Политики управления сервисами (SCP) здесь не применяются, поскольку они не оцениваются для внешних принципалов, обращающихся через политики на основе ресурсов.aws kms get-key-policy --key-id <id> --policy-name default.Привяжите ключ к рабочему пространству
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» (инфраструктура как код) те же шаги соответствуют провайдеру aws с ресурсами aws_kms_key и aws_kms_alias.
Was this page helpful?