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

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

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

Configure with the /claude-api skill in Claude Code
claude "/claude-api help me configure a customer-managed encryption key with Google Cloud KMS"

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

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

  • Проект Google Cloud с включённым биллингом.
  • Включённый Cloud KMS API (cloudkms.googleapis.com).
  • Разрешения на создание связок ключей (key rings) и ключей KMS, а также на настройку политики IAM для них (roles/cloudkms.admin или эквивалент).
  • Ключ Anthropic Admin API для вашей организации.
  • Установленный и аутентифицированный gcloud CLI.
  • Включённые для проекта журналы аудита доступа к данным (Data Access audit logs) Cloud KMS (IAM & Admin > Audit Logs > Cloud Key Management Service, с DATA_READ и DATA_WRITE). По умолчанию они отключены; без них операции шифрования и расшифрования, выполняемые Anthropic, не создают записей в Cloud Logging.

Адрес электронной почты сервисного аккаунта Anthropic

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

anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com

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

  1. Создайте или выберите связку ключей

    Пропустите этот шаг, если у вас уже есть связка ключей для повторного использования. Связки ключей являются региональными. Выберите однорегиональное расположение в США, например us-east5, соответствующее географии Anthropic, которую вы настраиваете. Мультирегиональные расположения, такие как us и global, не поддерживаются.

    gcloud kms keyrings create <your-keyring-name> \
      --project=<your-project-id> \
      --location=<region>
  2. Создайте криптографический ключ

    Создайте симметричный ключ с назначением ENCRYPT_DECRYPT. Anthropic настоятельно рекомендует защиту HSM: ключи Cloud KMS HSM валидированы по стандарту FIPS 140-2 Level 3, а разница в стоимости по сравнению с программными ключами невелика.

    gcloud kms keys create <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --purpose=encryption \
      --protection-level=hsm

    Чтобы вместо этого использовать программную защиту, опустите --protection-level=hsm. Больше ничего в этом руководстве не меняется.

    Вы также можете создать ключ в Google Cloud Console. Откройте связку ключей, нажмите Create key, выберите Generated key, задайте назначение и алгоритм как симметричное шифрование и расшифрование и выберите HSM в разделе уровня защиты.

    Страница Create key в Google Cloud KMS с уровнем защиты HSM и назначением Symmetric encrypt/decrypt.
    Создание симметричного ключа шифрования/расшифрования (Symmetric encrypt/decrypt) с защитой HSM.
  3. Предоставьте сервисному аккаунту Anthropic доступ к ключу

    Требуются две привязки IAM на уровне ключа. Обе ограничены одним криптографическим ключом, а не всем проектом или всей связкой ключей.

    Шифрование и расшифрование, которые Anthropic использует для шифрования и расшифрования ключей данных, защищающих данные вашего рабочего пространства («envelope encryption» (конвертное шифрование)):

    gcloud kms keys add-iam-policy-binding <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --member="serviceAccount:anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com" \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

    Viewer — для чтения метаданных (cryptoKeys.get), которое Anthropic выполняет при запуске для проверки назначения и алгоритма ключа:

    gcloud kms keys add-iam-policy-binding <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --member="serviceAccount:anthropic-cmek-client-us@gcp-anthropic-cmek-clients.iam.gserviceaccount.com" \
      --role=roles/cloudkms.viewer

    В Console выберите ключ, откройте панель Permissions, нажмите Grant access и добавьте сервисный аккаунт с обеими ролями: Cloud KMS CryptoKey Encrypter/Decrypter и Cloud KMS Viewer. Убедитесь, что вы находитесь на странице разрешений ключа, а не связки ключей или проекта, чтобы доступ был ограничен только этим ключом.

    Диалог Grant access, в котором сервисному аккаунту Anthropic назначены роли Cloud KMS CryptoKey Encrypter/Decrypter и Viewer.
    Предоставление сервисному аккаунту Anthropic обеих ролей (Grant access), ограниченных данным ключом.
  4. Запишите полное имя ресурса ключа

    Вы передадите его Anthropic при регистрации ключа. Формат:

    projects/<your-project-id>/locations/<region>/keyRings/<your-keyring-name>/cryptoKeys/<your-key-name>

    Получите его с помощью команды:

    gcloud kms keys describe <your-key-name> \
      --project=<your-project-id> \
      --location=<region> \
      --keyring=<your-keyring-name> \
      --format="value(name)"

    В Console откройте страницу сведений о ключе и нажмите Copy resource name.

    Сведения о связке ключей Google Cloud с выделенным действием Copy resource name в меню действий ключа.
    Копирование полного имени ресурса ключа (Copy resource name) из меню действий.

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

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

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

    Создайте конфигурацию внешнего ключа через Admin API, используя имя ресурса из шага «Запишите полное имя ресурса ключа» в разделе «Настройка ключа шифрования».

    client = anthropic.Anthropic()
    
    external_key = client.beta.organization.external_keys.create(
        display_name="<friendly-name>",
        geo="us",
        provider_config={
            "type": "gcp",
            "key_name": "projects/<your-project-id>/locations/<region>/keyRings/<your-keyring-name>/cryptoKeys/<your-key-name>",
        },
    )
    
    print(f"id: {external_key.id}")
    print(f"display_name: {external_key.display_name}")

    Ответ содержит идентификатор внешнего ключа:

    {
      "type": "external_key",
      "id": "ekey_<id>",
      "display_name": "<friendly-name>"
    }
  2. Проверьте ключ

    Запустите цикл шифрования и расшифрования с использованием вашего ключа.

    client = anthropic.Anthropic()
    
    validation = client.beta.organization.external_keys.validate("ekey_<id>")
    
    print(f"status: {validation.status}")
    print(f"error: {validation.error}")

    Успешный ответ выглядит так:

    { "type": "external_key_validation", "status": "success", "error": null }

    Если проверка не удалась, распространённые причины:

    • VPC Service Controls: если периметр сервиса защищает Cloud KMS в вашем проекте, добавьте Anthropic в уровень доступа периметра (или исключите проект ключа), чтобы Anthropic могла обращаться к ключу.
    • Ограничение общего доступа по домену: политика организации constraints/iam.allowedPolicyMemberDomains может удалить привязку сервисного аккаунта Anthropic (см. примечание выше). Убедитесь, что привязка присутствует, с помощью gcloud kms keys get-iam-policy <your-key-name> --project=<your-project-id> --location=<region> --keyring=<your-keyring-name>.
    • Отключённая или уничтоженная версия ключа: убедитесь, что основная версия ключа включена, а не отключена, запланирована к уничтожению или уничтожена.
  3. Привяжите ключ к рабочему пространству

    После проверки ключа привяжите его к новому рабочему пространству, прежде чем отправлять какие-либо запросы в это рабочее пространство. Для рабочего пространства, которое уже получает запросы, вступление ключа в силу может занять до одного дня.

    client = anthropic.Anthropic()
    
    workspace = client.beta.organization.workspaces.update(
        "<workspace-id>", external_key_id="ekey_<id>"
    )
    
    print(f"id: {workspace.id}")
    print(f"external_key_id: {workspace.external_key_id}")

Terraform

Для развёртываний в формате «infrastructure-as-code» (инфраструктура как код) те же шаги соответствуют провайдеру google с ресурсами google_kms_key_ring, google_kms_crypto_key и google_kms_crypto_key_iam_member.

Was this page helpful?