Claude Platform Docs
АдминистрированиеКлючи шифрования (CMEK)

Настройка AWS KMS для CMEK

Используйте AWS KMS для предоставления ключа шифрования для вашей организации.

Claude Code

Позвольте Claude Code настроить эту функцию за вас

/claude-api помоги мне настроить ключ шифрования, управляемый клиентом, с помощью AWS KMS

Это руководство описывает настройку ключа AWS KMS в качестве управляемого клиентом ключа шифрования (customer-managed encryption key, CMEK) для вашей организации Anthropic.

Предварительные требования

  • Учётная запись AWS с разрешениями на создание ключей KMS и установку политик ключей (kms:CreateKey и kms:PutKeyPolicy).
  • Ключ Admin API Anthropic для вашей организации.
  • Установленный и аутентифицированный AWS CLI.

Amazon Resource Name (ARN) для Anthropic

Чтобы Anthropic использовала ваш ключ шифрования, вы должны предоставить роли IAM Anthropic ключ KMS, который она может использовать для шифрования данных. ARN для Anthropic CMEK:

arn:aws:iam::915198916910:role/anthropic-cmek-client-us

Настройка ключа шифрования

  1. Создайте ключ KMS с межаккаунтной политикой ключа

    Политика ключа предоставляет роли IAM Anthropic межаккаунтный доступ. Требуются три оператора:

    1. Корневой администратор учётной записи: стандартный шаблон KMS. Ваша учётная запись сохраняет полный административный контроль.
    2. Шифрование и дешифрование Anthropic: действия kms:Encrypt и kms:Decrypt, которые Anthropic использует для шифрования и дешифрования ключей данных, защищающих данные вашего рабочего пространства (конвертное шифрование).
    3. Описание Anthropic: чтение метаданных, которое Anthropic выполняет при запуске. Оно предоставляется отдельно, потому что DescribeKey не имеет параметра EncryptionContext, поэтому условие EncryptionContext для этого действия всегда отклоняло бы его.

    Чтобы найти идентификатор вашей учётной записи AWS, выполните aws sts get-caller-identity --query Account --output text.

    В политике замените <AWS_ACCOUNT_ID> на идентификатор вашей учётной записи AWS и <ORGANIZATION_UUID> на идентификатор вашей организации. Условие StringEquals для kms:EncryptionContext:anthropic:org_uuid привязывает ключ к вашей организации Anthropic, и проверка отклоняет ключ без него. Чтобы использовать один ключ для нескольких организаций Anthropic, перечислите идентификатор каждой организации в значении условия.

    Сохраните политику как key-policy.json. Чтобы создать ключ в AWS Console вместо этого, вставьте политику туда, как описано далее в этом шаге.

    key-policy.json
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AccountRootAdmin",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>: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:org_uuid": ["<ORGANIZATION_UUID>"]
            }
          }
        },
        {
          "Sid": "AllowAnthropicCMEKDescribe",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
          },
          "Action": "kms:DescribeKey",
          "Resource": "*"
        }
      ]
    }
    aws kms create-key \
      --region <REGION> \
      --description "Anthropic CMEK" \
      --key-usage ENCRYPT_DECRYPT \
      --policy file://key-policy.json

    Захватите KeyMetadata.Arn из вывода. Он понадобится вам при регистрации ключа на следующем шаге.

    Anthropic проверяет ключ, когда вы его верифицируете или прикрепляете к рабочему пространству. Каждая проверка добавляет четыре ошибки отказа в доступе в CloudTrail. Это ожидаемо. Если вам нужно их отфильтровать, фильтруйте по всем трём следующим значениям. Первого одного недостаточно, потому что любой вызывающий может его установить:

    • requestParameters.encryptionContext.associatedData: Y21lay12YWxpZGF0aW9u
    • userIdentity.accountId: 915198916910
    • resources.ARN: arn:aws:kms:<REGION>:<AWS_ACCOUNT_ID>:key/<KEY_ID>

    Вы также можете создать ключ из AWS Console. Выберите симметричный ключ с использованием для шифрования и дешифрования, однорегиональный ключ и происхождение материала ключа KMS. Мастер создания ключа фиксирует политику ключа на шаге Review: Если вы добавите идентификатор учётной записи Anthropic 915198916910 в разрешения на использование ключа там, сгенерированная политика предоставит всей учётной записи Anthropic более широкие действия (такие как kms:ReEncrypt* и kms:GenerateDataKey*) без условия EncryptionContext, и проверка отклонит её. Чтобы не оставить ключ с избыточными разрешениями, завершите мастер только с административными разрешениями, затем откройте вкладку Key policy ключа и замените JSON политикой key-policy.json, показанной ранее в этом шаге.

    Мастер создания ключа AWS KMS на шаге Configure key: выбраны симметричный тип ключа, использование для шифрования и дешифрования и однорегиональный ключ.

    Настройка ключа: симметричный, шифрование и дешифрование, однорегиональный ключ.

    Шаг Add labels в AWS KMS с псевдонимом anthropic-cmek и описанием Anthropic CMEK.

    Добавьте псевдоним и описание для ключа.

    Шаг Define key administrative permissions в AWS KMS со списком ролей IAM, которые могут администрировать ключ.

    Определите административные разрешения ключа (необязательно). Ваша учётная запись сохраняет полный административный контроль.

    Шаг Define key usage permissions в AWS KMS с идентификатором учётной записи Anthropic, введённым в разделе Other AWS accounts.

    Не добавляйте идентификатор учётной записи Anthropic здесь. Этот шаг мастера создаёт политику с избыточными разрешениями. Оставьте разрешения на использование пустыми и отредактируйте JSON Key policy после создания (см. предыдущую политику ключа).

Регистрация ключа в Anthropic

То, как вы регистрируете ключ, зависит от того, какой продукт вы используете.

Вы можете настроить ключ в Claude Console или через Admin API с одинаковым результатом.

  1. Зарегистрируйте ключ в Anthropic

    В Claude Console перейдите на страницу Data retention (platform.claude.com/settings/privacy). Если вы не видите Encryption keys, выберите Organization в раскрывающемся меню в верхней части страницы. В разделе Encryption keys нажмите Add key. Введите отображаемое имя, выберите AWS KMS и нажмите Continue. Вставьте ARN ключа в поле KMS key ARN и нажмите Add.

    Шаг с деталями ключа показывает идентификатор вашей организации. Добавьте его в политику ключа перед тем, как нажать Add.

  2. Проверьте ключ

    В списке Encryption keys нажмите Verify рядом с ключом. При успешной проверке появится Connected. Если проверка не пройдена, сообщение укажет причину.

  3. Прикрепите ключ к рабочему пространству

    В Claude Console перейдите на страницу Data retention (platform.claude.com/settings/privacy) и выберите рабочее пространство в раскрывающемся меню в верхней части страницы. В разделе Encryption key выберите ключ, нажмите Save и подтвердите. Прикрепление ключа нельзя отменить. Для рабочего пространства, которое уже получает запросы, ключ может вступить в силу в течение суток.

Настройка CMEK в Claude Platform on AWS

В Claude Platform on AWS CMEK использует только ключи AWS KMS, и настройка отличается от предыдущих разделов следующим образом:

  • Принципал: Ваша политика ключа предоставляет доступ принципалу службы AWS aws-external-anthropic.amazonaws.com. Роль IAM и идентификатор учётной записи Anthropic не используются, поэтому ARN для Anthropic не применяется.
  • Требования к ключу: Ключ должен быть симметричным ключом KMS с использованием для шифрования и дешифрования, однорегиональным и в той же учётной записи и регионе AWS, что и рабочее пространство, к которому вы его прикрепляете. Межаккаунтные ключи не поддерживаются: ключ должен быть в учётной записи AWS, которая размещает вашу организацию. Мультирегиональные ключи (идентификаторы ключей, начинающиеся с mrk-) и ARN псевдонимов отклоняются при регистрации ключа; используйте ARN ключа.
  • Нет отдельного шага проверки: Помимо этих проверок ARN ключа при регистрации, ключ проверяется, когда вы прикрепляете его к рабочему пространству. Вызов прикрепления выполняет цикл шифрования/дешифрования для ключа с идентификатором отсека этого рабочего пространства в качестве контекста шифрования, поэтому проблема с политикой ключа проявляется во время прикрепления, а не при регистрации. Поэтому условие EncryptionContext не нуждается в записи из всех нулей.
  • Где вы управляете ключами: Регистрируйте и прикрепляйте ключи в Claude Console, войдя через AWS с ролью Admin. Эндпоинты внешних ключей также доступны в Claude Platform on AWS, авторизованные через действия IAM; там ключ идентифицируется по его ARN ключа KMS, а не по идентификатору ekey_.

Предварительные требования

  • Учётная запись AWS, которая размещает вашу организацию Claude Platform on AWS, с разрешениями на создание ключей KMS и установку политик ключей (kms:CreateKey и kms:PutKeyPolicy).
  • Роль Admin в Claude Console для Claude Platform on AWS. См. Использование Claude Console.
  • Для принципала IAM, с которым вы входите в Claude Console: помимо aws-external-anthropic:AssumeConsole, действия IAM для выполняемых там операций, поскольку регистрация, просмотр списка и прикрепление ключей проходят через шлюз AWS. Регистрация ключа — это RegisterKey (с ListKeys и GetKey для просмотра регистраций), а прикрепление — UpdateWorkspace или CreateWorkspace. Действия с внешними ключами (и CreateWorkspace) имеют область действия на уровне учётной записи, поэтому предоставляйте их для Resource: "*"; политика, ограниченная ARN рабочих пространств, их не включает.
  • Для принципала IAM, который прикрепляет ключ к рабочему пространству (идентичность, с которой вы вошли в Claude Console): kms:DescribeKey, kms:Encrypt и kms:Decrypt для ключа. Доступ вашего принципала к ключу проверяется при прикреплении, в дополнение к принципалу службы.
  • Необязательно, для селектора ключей в Claude Console: kms:ListKeys и kms:DescribeKey для принципала, с которым вы входите. Без них вставьте ARN ключа вместо этого.

Создание ключа KMS

Политика ключа содержит три оператора: оператор корневого администратора вашей учётной записи; оператор, позволяющий принципалу службы Claude Platform on AWS шифровать, дешифровать и генерировать ключи данных; и отдельный оператор для kms:DescribeKey. Криптографический оператор содержит необязательное условие EncryptionContext, которое привязывает ключ к перечисленным вами рабочим пространствам. DescribeKey предоставляется отдельно, поскольку у него нет параметра EncryptionContext, поэтому условие EncryptionContext для этого действия всегда приводило бы к отказу.

Если вы планируете использовать показанное здесь необязательное условие EncryptionContext, сначала создайте рабочее пространство (без ключа), скопируйте его идентификатор отсека и подставьте его вместо <compartment-uuid>. Чтобы найти идентификатор в Claude Console, перейдите на страницу Data retention (platform.claude.com/settings/privacy) и выберите рабочее пространство в раскрывающемся меню в верхней части страницы. Идентификатор находится в разделе Encryption key, в поле Compartment ID. Вы также можете прочитать его из поля compartment_id, возвращаемого эндпоинтом Get Workspace. Если вы не планируете использовать условие, удалите блок Condition из этого оператора.

export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)

aws kms create-key \
  --region <workspace-region> \
  --description "Anthropic CMEK (Claude Platform on AWS)" \
  --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\": \"AllowClaudePlatformOnAWSCrypto\",
        \"Effect\": \"Allow\",
        \"Principal\": {\"Service\": \"aws-external-anthropic.amazonaws.com\"},
        \"Action\": [\"kms:Encrypt\", \"kms:Decrypt\", \"kms:GenerateDataKey\"],
        \"Resource\": \"*\",
        \"Condition\": {
          \"StringEquals\": {
            \"kms:EncryptionContext:anthropic:compartment_uuid\": [
              \"<compartment-uuid>\"
            ]
          }
        }
      },
      {
        \"Sid\": \"AllowClaudePlatformOnAWSDescribe\",
        \"Effect\": \"Allow\",
        \"Principal\": {\"Service\": \"aws-external-anthropic.amazonaws.com\"},
        \"Action\": \"kms:DescribeKey\",
        \"Resource\": \"*\"
      }
    ]
  }"

Захватите KeyMetadata.Arn из вывода. Он понадобится вам при регистрации ключа.

Условие EncryptionContext необязательно. Каждый вызов шифрования, дешифрования и генерации ключа данных, выполняемый для рабочего пространства, включая проверку во время прикрепления, передаёт идентификатор отсека этого рабочего пространства как anthropic:compartment_uuid, поэтому в условии перечисляются идентификаторы отсеков всех рабочих пространств, к которым вы прикрепляете ключ, и запись из одних нулей не нужна. Добавление условия также привязывает ключ к перечисленным рабочим пространствам на уровне IAM. Поскольку идентификатор отсека появляется только после создания рабочего пространства, порядок действий такой: создайте рабочее пространство, укажите его идентификатор отсека в условии (при создании ключа или позже с помощью kms:PutKeyPolicy), затем прикрепите ключ. Перед прикреплением ключа к каждому дополнительному рабочему пространству таким же образом добавьте идентификатор отсека этого рабочего пространства. Чтобы начать без условия, удалите блок Condition из оператора AllowClaudePlatformOnAWSCrypto; если вы добавите его позже, включите идентификаторы отсеков всех рабочих пространств, к которым ключ уже прикреплён.

Вы можете дополнительно ограничить оба оператора принципала службы условием aws:SourceArn. Служба передаёт ARN рабочего пространства (arn:aws:aws-external-anthropic:<region>:<account-id>:workspace/<workspace-id>) в качестве исходного ARN при каждом вызове, который она выполняет с вашим ключом, поэтому "ArnLike": {"aws:SourceArn": "arn:aws:aws-external-anthropic:*:<account-id>:workspace/*"} ограничивает предоставленный доступ рабочими пространствами в вашей собственной учётной записи AWS, а список полных ARN рабочих пространств ограничивает его этими рабочими пространствами. Это условие не обязательно; условие EncryptionContext само по себе привязывает ключ к перечисленным вами рабочим пространствам.

Вы также можете создать ключ из AWS Console: выберите симметричный ключ с использованием для шифрования и дешифрования, однорегиональный ключ и происхождение материала ключа KMS, в регионе рабочего пространства. Оставьте разрешения на использование ключа пустыми в мастере создания ключа, затем откройте вкладку Key policy ключа и замените JSON политикой, показанной здесь.

Регистрация и прикрепление ключа

  1. Зарегистрируйте ключ

    В Claude Console перейдите на страницу Data retention (platform.claude.com/settings/privacy). Если вы не видите Encryption keys, выберите Organization в раскрывающемся меню в верхней части страницы. В разделе Encryption keys нажмите Add key. Введите отображаемое имя, затем выберите ключ в селекторе ключей или выберите Enter ARN manually и вставьте ARN ключа, после чего нажмите Add. Ключ должен находиться в учётной записи AWS, в которой размещена ваша организация; межаккаунтные ключи не поддерживаются. Селектор показывает включённые, управляемые клиентом, симметричные, однорегиональные ключи в вашей учётной записи в одном из регионов вашей организации; для ключа, которого нет в списке, введите ARN. Ключи отображаются в списке, только если принципал, с которым вы вошли, может вызывать kms:ListKeys и kms:DescribeKey.

  2. Прикрепите ключ к рабочему пространству

    Прикрепите ключ к новому рабочему пространству, прежде чем отправлять в это рабочее пространство какие-либо запросы. Для рабочего пространства, которое уже получает запросы, ключ может вступить в силу в течение суток. В Claude Console перейдите на страницу Data retention (platform.claude.com/settings/privacy) и выберите рабочее пространство в раскрывающемся меню в верхней части страницы. В разделе Encryption key выберите ключ, нажмите Save и подтвердите. Вы также можете выбрать ключ при создании рабочего пространства в Claude Console, но только если ваша политика ключа ещё не указывает конкретные рабочие пространства (нет условия EncryptionContext), поскольку идентификатор отсека рабочего пространства назначается при создании. После прикрепления ключ рабочего пространства нельзя изменить.

    Именно тогда ключ проверяется: вызов прикрепления проверяет доступ вашего принципала к ключу и выполняет цикл шифрования/дешифрования для него с идентификатором отсека рабочего пространства в качестве контекста шифрования, поэтому проблема либо с политикой ключа, либо с разрешениями вашего принципала проявляется как ошибка при этом вызове. Если прикрепление не проходит с ошибкой доступа KMS, проверьте следующее:

    • Политика ключа называет принципал службы aws-external-anthropic.amazonaws.com и предоставляет kms:Encrypt, kms:Decrypt и kms:GenerateDataKey, плюс kms:DescribeKey в отдельном операторе, который не имеет условия EncryptionContext.
    • Любое условие EncryptionContext включает идентификатор отсека этого рабочего пространства, а любое добавленное вами условие aws:SourceArn соответствует ARN этого рабочего пространства.
    • Ключ включён, однорегиональный и в той же учётной записи и регионе AWS, что и рабочее пространство.
    • Принципал, под которым вы вошли, имеет kms:DescribeKey, kms:Encrypt и kms:Decrypt для ключа.
    • Никакая политика управления службами или политика управления ресурсами в вашей организации AWS не препятствует принципалу службы или вашему принципалу использовать ключ.
    • Если политика выглядит правильно, а прикрепление всё равно не проходит, найдите отклонённое событие kms: в CloudTrail в учётной записи ключа (в нём указаны вызывающий принципал и, для криптографических вызовов, контекст шифрования), затем исправьте условие с помощью kms:PutKeyPolicy и повторите попытку.

Terraform

Для развёртываний инфраструктуры как кода те же шаги сопоставляются с провайдером aws с ресурсами aws_kms_key и aws_kms_alias.

Was this page helpful?