Claude Platform Docs
AdministraciónClaves de cifrado (CMEK)

Configurar AWS KMS para CMEK

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

Claude Code

Deja que Claude Code configure esta función por ti

/claude-api ayúdame a configurar una clave de cifrado administrada por el cliente con AWS KMS

Esta guía explica cómo configurar una clave de AWS KMS como una clave de cifrado administrada por el cliente (CMEK) para tu organización de Anthropic.

Requisitos previos

  • Una cuenta de AWS con permisos para crear claves de KMS y establecer políticas de clave (kms:CreateKey y kms:PutKeyPolicy).
  • Una clave de API de administrador de Anthropic para tu organización.
  • La AWS CLI instalada y autenticada.

Amazon Resource Name (ARN) para Anthropic

Para que Anthropic use tu clave de cifrado, debes darle al rol de IAM de Anthropic una clave de KMS que pueda usar para cifrar datos. El ARN para CMEK de Anthropic es:

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

Configuración de la clave de cifrado

  1. Crear la clave de KMS con una política de clave entre cuentas

    La política de clave otorga al rol de IAM de Anthropic acceso entre cuentas. Se requieren tres declaraciones:

    1. Administrador raíz de la cuenta: el patrón estándar de KMS. Tu cuenta conserva el control administrativo completo.
    2. Cifrar y descifrar de Anthropic: las acciones kms:Encrypt y kms:Decrypt, que Anthropic usa para cifrar y descifrar las claves de datos que protegen los datos de tu workspace (cifrado de sobre).
    3. Describir de Anthropic: la lectura de metadatos que Anthropic realiza al inicio. Se otorga por separado porque DescribeKey no tiene un parámetro EncryptionContext, por lo que una condición EncryptionContext en esta acción siempre denegaría.

    Para encontrar tu ID de cuenta de AWS, ejecuta aws sts get-caller-identity --query Account --output text.

    En la política, reemplaza <AWS_ACCOUNT_ID> con tu ID de cuenta de AWS y <ORGANIZATION_UUID> con tu ID de organización. La condición StringEquals en kms:EncryptionContext:anthropic:org_uuid vincula la clave a tu organización de Anthropic, y la validación rechaza una clave sin ella. Para compartir una clave entre varias organizaciones de Anthropic, enumera cada ID de organización en el valor de la condición.

    Guarda la política como key-policy.json. Para crear la clave en la AWS Console en su lugar, pega la política allí, como se describe más adelante en este paso.

    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

    Captura KeyMetadata.Arn de la salida. Lo necesitas cuando registres la clave en el siguiente paso.

    Anthropic valida la clave cuando la verificas o la adjuntas a un workspace. Cada validación agrega cuatro errores de acceso denegado a CloudTrail. Estos son esperados. Si necesitas filtrarlos, filtra por los tres valores siguientes. El primero por sí solo no es suficiente, porque cualquier llamante puede establecerlo:

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

    También puedes crear la clave desde la AWS Console. Elige una clave simétrica con el uso de clave de cifrar y descifrar, una clave de región única y origen de material de clave de KMS. El asistente de creación de clave confirma una política de clave en su paso Review: Si agregas el ID de cuenta de Anthropic 915198916910 bajo los permisos de uso de clave allí, la política generada otorga a toda la cuenta de Anthropic acciones más amplias (como kms:ReEncrypt* y kms:GenerateDataKey*) sin condición EncryptionContext, y la validación la rechaza. Para evitar dejar una clave con permisos excesivos, finaliza el asistente solo con permisos administrativos, luego abre la pestaña Key policy de la clave y reemplaza el JSON con la política key-policy.json mostrada anteriormente en este paso.

    Asistente de creación de clave de AWS KMS en el paso Configurar clave, con estas opciones seleccionadas: tipo de clave simétrica, uso de clave de cifrar y descifrar y clave de región única.

    Configurar clave: simétrica, cifrar y descifrar, clave de región única.

    Paso Agregar etiquetas de AWS KMS con el alias anthropic-cmek y la descripción Anthropic CMEK.

    Agregar un alias y una descripción para la clave.

    Paso Definir permisos administrativos de clave de AWS KMS, que enumera los roles de IAM que pueden administrar la clave.

    Definir permisos administrativos de clave (opcional). Tu cuenta conserva el control administrativo completo.

    Paso Definir permisos de uso de clave de AWS KMS con el ID de cuenta de Anthropic ingresado en la sección Otras cuentas de AWS.

    No agregues el ID de cuenta de Anthropic aquí. Este paso del asistente produce una política con permisos excesivos. Deja los permisos de uso vacíos y edita el JSON de Key policy después de la creación (consulta la política de clave anterior).

Registrar la clave con Anthropic

La forma en que registras la clave depende del producto que uses.

Puedes configurar la clave en la Claude Console o a través de la Admin API, con el mismo resultado.

  1. Registrar la clave con Anthropic

    En la Claude Console, ve a la página Data retention (platform.claude.com/settings/privacy). Si no ves Encryption keys, selecciona Organization en el menú desplegable en la parte superior de la página. En Encryption keys, haz clic en Add key. Ingresa un nombre para mostrar, elige AWS KMS y haz clic en Continue. Pega el ARN de la clave en KMS key ARN y haz clic en Add.

    El paso de detalles de la clave muestra tu ID de organización. Agrégalo a la política de clave antes de hacer clic en Add.

  2. Validar la clave

    En la lista Encryption keys, haz clic en Verify junto a la clave. Aparece Connected cuando la verificación se completa correctamente. Si falla, un mensaje indica el motivo.

  3. Adjuntar la clave a un workspace

    En la Claude Console, ve a la página Data retention (platform.claude.com/settings/privacy) y selecciona el workspace en el menú desplegable en la parte superior de la página. En Encryption key, selecciona la clave, haz clic en Save y confirma. Adjuntar una clave no se puede deshacer. Para un workspace que ya recibe solicitudes, la clave puede tardar hasta un día en surtir efecto.

Configurar CMEK en Claude Platform on AWS

En Claude Platform on AWS, CMEK usa únicamente claves de AWS KMS, y la configuración difiere de las secciones anteriores de estas maneras:

  • Principal: Tu política de clave otorga acceso al principal de servicio de AWS aws-external-anthropic.amazonaws.com. El rol de IAM y el ID de cuenta de Anthropic no se usan, por lo que el ARN para Anthropic no aplica.
  • Requisitos de la clave: La clave debe ser una clave de KMS simétrica con uso de cifrar y descifrar, de región única, y en la misma cuenta y región de AWS que el workspace al que la adjuntas. Las claves entre cuentas no son compatibles: la clave debe estar en la cuenta de AWS que aloja tu organización. Las claves multirregión (IDs de clave que comienzan con mrk-) y los ARN de alias se rechazan cuando registras la clave; usa el ARN de la clave.
  • Sin paso de validación separado: Aparte de esas verificaciones en el ARN de la clave durante el registro, la clave se valida cuando la adjuntas a un workspace. La llamada de adjuntar realiza un ciclo de cifrado/descifrado contra la clave con el ID de compartimento de ese workspace como contexto de cifrado, por lo que un problema de política de clave aparece en el momento de adjuntar en lugar de en el registro. Por lo tanto, una condición EncryptionContext no necesita una entrada de todos ceros.
  • Dónde administras las claves: Registra y adjunta claves en la Claude Console, con sesión iniciada a través de AWS con el rol de administrador. Los endpoints de clave externa también están disponibles en Claude Platform on AWS, autorizados a través de acciones de IAM; allí, una clave se identifica por su ARN de clave de KMS en lugar de un ID ekey_.

Requisitos previos

  • La cuenta de AWS que aloja tu organización de Claude Platform on AWS, con permisos para crear claves de KMS y establecer políticas de clave (kms:CreateKey y kms:PutKeyPolicy).
  • El rol Admin en la Claude Console para Claude Platform on AWS. Consulta Usar la Claude Console.
  • Para el principal de IAM con el que inicias sesión en la Claude Console: además de aws-external-anthropic:AssumeConsole, las acciones de IAM para las operaciones que realizas allí, porque registrar, enumerar y adjuntar claves pasa por el gateway de AWS. Registrar una clave es RegisterKey (con ListKeys y GetKey para ver los registros), y adjuntar una es UpdateWorkspace o CreateWorkspace. Las acciones de claves externas (y CreateWorkspace) tienen alcance de cuenta, así que otórgalas en Resource: "*"; una política limitada a ARN de workspace no las incluye.
  • Para el principal de IAM que adjunta la clave a un workspace (la identidad con la que iniciaste sesión en la Claude Console): kms:DescribeKey, kms:Encrypt y kms:Decrypt en la clave. El acceso de tu principal a la clave se verifica cuando la adjuntas, además del principal de servicio.
  • Opcional, para el selector de claves en la Claude Console: kms:ListKeys y kms:DescribeKey para el principal con el que inicias sesión. Sin ellos, pega el ARN de la clave en su lugar.

Crear la clave de KMS

La política de clave tiene tres declaraciones: la declaración de administrador raíz de tu cuenta; una declaración que permite al principal de servicio de Claude Platform on AWS cifrar, descifrar y generar claves de datos; y una declaración separada para kms:DescribeKey. La declaración criptográfica incluye una condición EncryptionContext opcional que vincula la clave a los workspaces que enumeres. DescribeKey se otorga por separado porque no tiene un parámetro EncryptionContext, por lo que una condición EncryptionContext en esa acción siempre denegaría el acceso.

Si planeas usar la condición EncryptionContext opcional que se muestra aquí, crea primero el workspace (sin clave), copia su ID de compartimento y sustituye <compartment-uuid> por él. Para encontrar el ID en la Claude Console, ve a la página Data retention (platform.claude.com/settings/privacy) y selecciona el workspace en el menú desplegable en la parte superior de la página. El ID está en Encryption key, en el campo Compartment ID. También puedes leerlo del campo compartment_id devuelto por el endpoint Get Workspace. Si no planeas usar la condición, elimina el bloque Condition de esa declaración.

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\": \"*\"
      }
    ]
  }"

Captura KeyMetadata.Arn de la salida. Lo necesitas cuando registres la clave.

La condición EncryptionContext es opcional. Cada llamada de cifrado, descifrado y clave de datos realizada para un workspace, incluida la comprobación al adjuntar, lleva el ID de compartimento de ese workspace como anthropic:compartment_uuid, por lo que la condición enumera el ID de compartimento de cada workspace al que adjuntas la clave y no necesita una entrada de todos ceros. Agregarla también vincula la clave a los workspaces que enumeres en la capa de IAM. Como un ID de compartimento solo existe una vez que existe su workspace, el orden es: crea el workspace, coloca su ID de compartimento en la condición (al crear la clave, o más tarde con kms:PutKeyPolicy) y luego adjunta la clave. Antes de adjuntar la clave a cada workspace adicional, agrega el ID de compartimento de ese workspace de la misma manera. Para comenzar sin ella, elimina el bloque Condition de la declaración AllowClaudePlatformOnAWSCrypto; si la agregas más tarde, incluye el ID de compartimento de cada workspace al que la clave ya está adjunta.

Puedes restringir aún más ambas declaraciones del principal de servicio con una condición aws:SourceArn. El servicio pasa el ARN del workspace (arn:aws:aws-external-anthropic:<region>:<account-id>:workspace/<workspace-id>) como ARN de origen en cada llamada que realiza con tu clave, por lo que "ArnLike": {"aws:SourceArn": "arn:aws:aws-external-anthropic:*:<account-id>:workspace/*"} limita la concesión a los workspaces de tu propia cuenta de AWS, y una lista de ARN de workspace completos la limita a esos workspaces. Esta condición no es obligatoria; la condición EncryptionContext por sí sola vincula la clave a los workspaces que enumeres.

También puedes crear la clave desde la AWS Console: elige una clave simétrica con el uso de clave de cifrar y descifrar, una clave de región única y origen de material de clave de KMS, en la región del workspace. Deja los permisos de uso de clave vacíos en el asistente de creación de clave, luego abre la pestaña Key policy de la clave y reemplaza el JSON con la política mostrada aquí.

Registrar y adjuntar la clave

  1. Registrar la clave

    En la Claude Console, ve a la página Data retention (platform.claude.com/settings/privacy). Si no ves Encryption keys, selecciona Organization en el menú desplegable en la parte superior de la página. En Encryption keys, haz clic en Add key. Ingresa un nombre para mostrar, luego elige la clave en el selector de claves o elige Enter ARN manually y pega el ARN de la clave, y haz clic en Add. La clave debe estar en la cuenta de AWS que aloja tu organización; no se admiten claves entre cuentas. El selector enumera las claves habilitadas, administradas por el cliente, simétricas y de una sola región de tu cuenta en una de las regiones de tu organización; para una clave que el selector no enumera, ingresa el ARN. Solo enumera claves si el principal con el que iniciaste sesión puede llamar a kms:ListKeys y kms:DescribeKey.

  2. Adjuntar la clave a un workspace

    Adjunta la clave a un workspace nuevo antes de enviar cualquier solicitud a ese workspace. Para un workspace que ya recibe solicitudes, la clave puede tardar hasta un día en surtir efecto. En la Claude Console, ve a la página Data retention (platform.claude.com/settings/privacy) y selecciona el workspace en el menú desplegable en la parte superior de la página. En Encryption key, selecciona la clave, haz clic en Save y confirma. También puedes seleccionar una clave al crear un workspace en la Claude Console, pero solo si tu política de clave aún no nombra workspaces específicos (sin condición EncryptionContext), porque el ID de compartimento del workspace se asigna al crearlo. Una vez adjunta, la clave de un workspace no se puede cambiar.

    Este es el momento en que se valida la clave: la llamada de adjuntar verifica el acceso de tu principal a la clave y realiza un ciclo de cifrado/descifrado contra ella con el ID de compartimento del workspace como contexto de cifrado, por lo que un problema con la política de clave o con los permisos de tu principal aparece como un error en esa llamada. Si la adjunción falla con un error de acceso de KMS, verifica lo siguiente:

    • La política de clave nombra el principal de servicio aws-external-anthropic.amazonaws.com y otorga kms:Encrypt, kms:Decrypt y kms:GenerateDataKey, más kms:DescribeKey en una declaración separada que no tiene condición EncryptionContext.
    • Cualquier condición EncryptionContext incluye el ID de compartimento de este workspace, y cualquier condición aws:SourceArn que hayas agregado coincide con el ARN de este workspace.
    • La clave está habilitada, es de región única y está en la misma cuenta y región de AWS que el workspace.
    • El principal con el que has iniciado sesión tiene kms:DescribeKey, kms:Encrypt y kms:Decrypt en la clave.
    • Ninguna política de control de servicio o política de control de recursos en tu organización de AWS impide que el principal de servicio o tu principal usen la clave.
    • Si la política parece correcta y la adjunción sigue fallando, busca el evento kms: denegado en CloudTrail en la cuenta de la clave (muestra el principal que realiza la llamada y, para las llamadas criptográficas, el contexto de cifrado), luego corrige la condición con kms:PutKeyPolicy y vuelve a intentarlo.

Terraform

Para implementaciones de infraestructura como código, los mismos pasos se asignan al proveedor aws con los recursos aws_kms_key y aws_kms_alias.

Was this page helpful?