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 межаккаунтный доступ. Требуются три выражения:
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\": [
\"00000000-0000-0000-0000-000000000000\",
\"<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.
Поиск идентификатора компартмента: Место, где можно найти идентификатор компартмента, различается для Claude Platform и Claude Enterprise. См. вкладки Claude Platform и Claude Enterprise в разделе Регистрация ключа в Anthropic.
Вы также можете создать ключ из консоли AWS. Выберите симметричный ключ с использованием для шифрования и расшифровки, однорегиональный ключ и источник материала ключа KMS. Мастер Create-key фиксирует политику ключа на шаге Review: если вы добавите там идентификатор учётной записи Anthropic 915198916910 в разрешения на использование ключа, сгенерированная политика предоставит всей учётной записи Anthropic более широкие действия (такие как kms:ReEncrypt* и kms:GenerateDataKey*) без условия EncryptionContext, и валидация всё равно пройдёт успешно. Чтобы не оставить ключ с избыточными разрешениями, завершите мастер только с административными разрешениями, затем откройте вкладку Key policy ключа и замените JSON на политику с ограничением по роли, показанную ранее (три выражения, ограниченные ролью anthropic-cmek-client-us, с условием EncryptionContext).




Способ регистрации ключа зависит от того, какой продукт вы используете.
Поиск идентификатора компартмента: Каждое рабочее пространство имеет идентификатор компартмента, который определяет область его данных CMEK. Найдите его в Claude Console в разделе Workspace > Security > Encryption keys (поле Compartment ID) или прочитайте поле compartment_id, возвращаемое конечной точкой Get Workspace. Подставьте это значение вместо <compartment-uuid> в приведённой выше политике ключа.
Валидация ключа всегда отправляет UUID компартмента из всех нулей (00000000-0000-0000-0000-000000000000) в качестве контекста шифрования, потому что валидация выполняется до того, как ключ будет прикреплён к какому-либо рабочему пространству. Рабочий трафик отправляет идентификатор компартмента каждого прикреплённого рабочего пространства.
Любое условие EncryptionContext должно разрешать значение из всех нулей плюс идентификатор компартмента каждого рабочего пространства, к которому прикреплён ключ. Валидация также выполняется повторно при каждом повторном запуске настройки ключа, поэтому оставьте запись из всех нулей на постоянной основе.
Чтобы прикрепить ключ к дополнительному рабочему пространству, добавьте идентификатор компартмента этого рабочего пространства в условие с помощью kms:PutKeyPolicy перед прикреплением.
Зарегистрируйте ключ в Anthropic
Создайте конфигурацию внешнего ключа через Admin API.
Для организаций на Claude Platform on AWS конечные точки внешних ключей пока недоступны. Вместо этого зарегистрируйте, валидируйте и прикрепите ваш ключ в Claude Console.
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-create-key-step>",
"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 }Если валидация не проходит, распространённые причины:
AccessDeniedException, когда условие kms:EncryptionContext:anthropic:compartment_uuid разрешает только одно из двух значений, которые отправляет Anthropic. Валидация отправляет UUID из всех нулей (00000000-0000-0000-0000-000000000000); рабочий трафик отправляет идентификатор компартмента прикреплённого рабочего пространства. Убедитесь, что условие перечисляет оба. Чтобы полностью исключить условие как причину, временно удалите блок Condition из выражения AllowAnthropicCMEKCrypto и повторите валидацию.aws:PrincipalOrgID не соответствует вашей организации, она блокирует межаккаунтную роль Anthropic. RCP нуждается в исключении для этого ключа или для ARN роли Anthropic. Политики управления сервисами (service control policies) здесь не применяются, потому что они не оцениваются для внешних принципалов, обращающихся через политики на основе ресурсов.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>"
}'Для развёртываний по принципу «инфраструктура как код» те же шаги соответствуют провайдеру aws с ресурсами aws_kms_key и aws_kms_alias.
Was this page helpful?