Claude Platform Docs
AdministraciónClaves de cifrado

Configurar Google Cloud KMS para CMEK

Usa Google Cloud KMS para proporcionar una clave de cifrado para tu organización.

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

Esta guía explica cómo configurar una clave de Google Cloud KMS como una clave de cifrado administrada por el cliente, o "customer-managed encryption key" (CMEK) para tu organización de Anthropic.

Requisitos previos

  • Un proyecto de Google Cloud con facturación habilitada.
  • La API de Cloud KMS habilitada (cloudkms.googleapis.com).
  • Permisos para crear llaveros (key rings) y claves de KMS, y para establecer políticas de IAM sobre ellos (roles/cloudkms.admin o equivalente).
  • Una clave de API de administrador (Admin API key) de Anthropic para tu organización.
  • La CLI de gcloud instalada y autenticada.
  • Los registros de auditoría de acceso a datos (Data Access audit logs) de Cloud KMS habilitados para el proyecto (IAM & Admin > Audit Logs > Cloud Key Management Service, con DATA_READ y DATA_WRITE). Estos están desactivados de forma predeterminada; sin ellos, las operaciones de cifrado y descifrado de Anthropic no producen entradas en Cloud Logging.

Correo electrónico de la cuenta de servicio de Anthropic

Para que Anthropic use tu clave de cifrado, debes darle a la cuenta de servicio de Anthropic una clave que pueda usar para cifrar datos. El correo electrónico de la cuenta de servicio para CMEK de Anthropic es:

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

Configuración de la clave de cifrado

  1. Crea o elige un llavero

    Omite este paso si ya tienes un llavero para reutilizar. Los llaveros son regionales. Elige una ubicación de una sola región en EE. UU., como us-east5, que coincida con la geografía de Anthropic que estás configurando. Las ubicaciones multirregión como us y global no son compatibles.

    gcloud kms keyrings create <your-keyring-name> \
      --project=<your-project-id> \
      --location=<region>
  2. Crea la clave criptográfica

    Crea una clave simétrica con el propósito ENCRYPT_DECRYPT. Anthropic recomienda firmemente la protección HSM: las claves HSM de Cloud KMS están validadas con FIPS 140-2 Nivel 3, y la diferencia de costo respecto a las claves de software es pequeña.

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

    Para usar protección por software en su lugar, omite --protection-level=hsm. Nada más en esta guía cambia.

    También puedes crear la clave desde la consola de Google Cloud. Abre el llavero, haz clic en Create key, selecciona Generated key, establece el propósito y el algoritmo en cifrado y descifrado simétrico, y elige HSM en el nivel de protección.

    Página Create key de Google Cloud KMS con nivel de protección HSM y propósito Symmetric encrypt/decrypt.
    Crea una clave simétrica de cifrado/descifrado (Symmetric encrypt/decrypt) protegida por HSM.
  3. Otorga a la cuenta de servicio de Anthropic acceso a la clave

    Se requieren dos vinculaciones de IAM a nivel de clave. Ambas tienen alcance sobre la clave criptográfica individual, no sobre todo el proyecto ni sobre todo el llavero.

    Cifrado y descifrado, que Anthropic usa para cifrar y descifrar las claves de datos que protegen los datos de tu espacio de trabajo (cifrado de sobre, o "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

    Visualizador (Viewer), para la lectura de metadatos (cryptoKeys.get) que Anthropic realiza al inicio para validar el propósito y el algoritmo de la clave:

    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

    Desde la consola, selecciona la clave, abre el panel Permissions, haz clic en Grant access y agrega la cuenta de servicio con los roles Cloud KMS CryptoKey Encrypter/Decrypter y Cloud KMS Viewer. Asegúrate de estar en la página de permisos de la clave, no del llavero ni del proyecto, para que el permiso tenga alcance únicamente sobre esta clave.

    Cuadro de diálogo Grant access con la cuenta de servicio de Anthropic asignada a los roles Cloud KMS CryptoKey Encrypter/Decrypter y Viewer.
    Otorga a la cuenta de servicio de Anthropic ambos roles (Cloud KMS CryptoKey Encrypter/Decrypter y Viewer), con alcance sobre la clave.
  4. Anota el nombre completo del recurso de la clave

    Pasarás esto a Anthropic cuando registres la clave. El formato es:

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

    Obtenlo con:

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

    Desde la consola, abre la página de detalles de la clave y haz clic en Copy resource name.

    Detalles del llavero de Google Cloud con la acción Copy resource name resaltada en el menú de acciones de la clave.
    Copia el nombre completo del recurso de la clave (Copy resource name) desde el menú de acciones.

Registra la clave con Anthropic

La forma de registrar la clave depende del producto que uses.

  1. Registra la clave con Anthropic

    Crea una configuración de clave externa a través de la Admin API, usando el nombre del recurso del paso Anota el nombre completo del recurso de la clave en Configuración de la clave de cifrado.

    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}")

    La respuesta contiene el ID de la clave externa:

    {
      "type": "external_key",
      "id": "ekey_<id>",
      "display_name": "<friendly-name>"
    }
  2. Valida la clave

    Activa un ciclo completo de cifrado y descifrado contra tu clave.

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

    Una respuesta exitosa se ve así:

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

    Si la validación falla, las causas comunes son:

    • VPC Service Controls: si un perímetro de servicio protege Cloud KMS en tu proyecto, agrega a Anthropic a un nivel de acceso en el perímetro (o excluye el proyecto de la clave) para que Anthropic pueda acceder a la clave.
    • Uso compartido restringido por dominio: la política de organización constraints/iam.allowedPolicyMemberDomains puede eliminar la vinculación de la cuenta de servicio de Anthropic (consulta la nota anterior). Confirma que la vinculación esté presente con gcloud kms keys get-iam-policy <your-key-name> --project=<your-project-id> --location=<region> --keyring=<your-keyring-name>.
    • Versión de clave deshabilitada o destruida: confirma que la versión principal de la clave esté habilitada, y no deshabilitada, programada para destrucción ni destruida.
  3. Asocia la clave a un espacio de trabajo

    Una vez validada la clave, asóciala a un nuevo espacio de trabajo antes de enviar cualquier solicitud a ese espacio de trabajo. Para un espacio de trabajo que ya recibe solicitudes, la clave puede tardar hasta un día en entrar en vigor.

    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

Para despliegues de infraestructura como código, los mismos pasos corresponden al proveedor google con los recursos google_kms_key_ring, google_kms_crypto_key y google_kms_crypto_key_iam_member.

Was this page helpful?