claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Diese Anleitung führt dich durch die Konfiguration eines AWS KMS-Schlüssels als „customer-managed encryption key" (kundenverwalteter Verschlüsselungsschlüssel), oder CMEK, für deine Anthropic-Organisation.
Das Aktivieren von CMEK ist dauerhaft. Wenn dein KMS-Schlüssel gelöscht oder deaktiviert wird, kann Anthropic die damit verschlüsselten Daten nicht wiederherstellen. Lies die Warnungen und Einschränkungen, bevor du beginnst.
kms:CreateKey und kms:PutKeyPolicy).Damit Anthropic deinen Verschlüsselungsschlüssel verwenden kann, musst du der IAM-Rolle von Anthropic einen KMS-Schlüssel zur Verfügung stellen, den sie zum Verschlüsseln von Daten verwenden kann. Der ARN für Anthropic CMEK lautet:
arn:aws:iam::915198916910:role/anthropic-cmek-client-usVerwende ausschließlich diesen veröffentlichten ARN. Vertraue niemals einem Identifier, der per E-Mail, Chat oder über einen Onboarding-Kanal bereitgestellt wurde.
Erstelle den KMS-Schlüssel mit einer kontoübergreifenden Key Policy
Die Key Policy gewährt der IAM-Rolle von Anthropic kontoübergreifenden Zugriff. Drei Statements sind erforderlich:
kms:Encrypt und kms:Decrypt, die Anthropic verwendet, um die Data Keys zu verschlüsseln und zu entschlüsseln, die deine Workspace-Daten schützen (Envelope Encryption).DescribeKey keinen EncryptionContext-Parameter hat, sodass eine EncryptionContext-Bedingung für diese Aktion immer verweigern würde.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\": \"<compartment-uuid>\"
}
}
},
{
\"Sid\": \"AllowAnthropicCMEKDescribe\",
\"Effect\": \"Allow\",
\"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
\"Action\": \"kms:DescribeKey\",
\"Resource\": \"*\"
}
]
}"Notiere dir KeyMetadata.Arn aus der Ausgabe. Du benötigst ihn, wenn du den Schlüssel im nächsten Schritt registrierst.
Die EncryptionContext-Bedingung wird empfohlen, ist aber optional. Anthropic fügt die Compartment-ID deines Workspaces immer in den Encryption Context ein, sodass der Ciphertext unabhängig davon kryptografisch an dieses Compartment gebunden ist. Das Hinzufügen der Bedingung bietet Defense-in-Depth auf der IAM-Ebene. Um ohne sie zu starten, lasse den Condition-Block im AllowAnthropicCMEKCrypto-Statement weg und füge ihn später mit kms:PutKeyPolicy hinzu.
So findest du deine Compartment-ID: Jeder Workspace hat eine Compartment-ID, die seine CMEK-Daten abgrenzt. Du findest sie in der Claude Console unter Workspace > Security > Encryption keys (das Feld Compartment ID) oder im Feld compartment_id, das vom Get Workspace-Endpunkt zurückgegeben wird. Setze diesen Wert für <compartment-uuid> in der obigen Key Policy ein. Anthropic sendet ihn auch als Encryption Context bei der Validierung des Schlüssels, daher muss der Bedingungswert übereinstimmen, damit die Validierung erfolgreich ist.
Du kannst den Schlüssel auch über die AWS Console erstellen. Wähle einen symmetrischen Schlüssel mit der Schlüsselverwendung „Encrypt and decrypt", einen Single-Region-Schlüssel und KMS als Key Material Origin. Der Create-Key-Assistent legt im Schritt Review eine Key Policy fest: Wenn du dort die Anthropic-Konto-ID 915198916910 unter den Key Usage Permissions hinzufügst, gewährt die generierte Policy dem gesamten Anthropic-Konto umfassendere Aktionen (wie kms:ReEncrypt* und kms:GenerateDataKey*) ohne EncryptionContext-Bedingung, und die Validierung würde trotzdem erfolgreich sein. Um keinen zu weit gefassten Schlüssel zu hinterlassen, schließe den Assistenten nur mit administrativen Berechtigungen ab, öffne dann den Tab Key policy des Schlüssels und ersetze das JSON durch die oben gezeigte rollenbezogene Policy (die drei Statements, die auf die Rolle anthropic-cmek-client-us beschränkt sind, mit der EncryptionContext-Bedingung).




Wie du den Schlüssel registrierst, hängt davon ab, welches Produkt du verwendest.
Den Schlüssel bei Anthropic registrieren
Erstelle eine External-Key-Konfiguration über die Admin-API.
Für Organisationen auf Claude Platform on AWS sind die External-Key-Endpunkte noch nicht verfügbar. Registriere, validiere und verknüpfe deinen Schlüssel stattdessen in der 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"
}
}'Die Antwort enthält die External-Key-ID:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}Den Schlüssel validieren
Löse einen Encrypt-und-Decrypt-Roundtrip gegen deinen Schlüssel aus.
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 '{}'Eine erfolgreiche Antwort sieht so aus:
{ "type": "external_key_validation", "status": "success", "error": null }Wenn die Validierung fehlschlägt, sind häufige Ursachen:
EncryptionContext-Bedingung in der Key Policy beibehalten hast, stelle sicher, dass du <compartment-uuid> durch die tatsächliche Compartment-ID deines Workspaces ersetzt hast (siehe den Schritt „Erstelle den KMS-Schlüssel" unter „Einrichtung des Verschlüsselungsschlüssels"). Ein falscher oder nicht ersetzter Wert führt dazu, dass KMS eine undurchsichtige AccessDeniedException zurückgibt. Um dies auszuschließen, entferne vorübergehend den Condition-Block aus dem AllowAnthropicCMEKCrypto-Statement und validiere erneut.aws:PrincipalOrgID nicht mit deiner Organisation übereinstimmt, blockiert sie die kontoübergreifende Rolle von Anthropic. Die RCP benötigt eine Ausnahme für diesen Schlüssel oder für den Rollen-ARN von Anthropic. Service Control Policies gelten hier nicht, da sie für externe Principals, die über ressourcenbasierte Policies aufrufen, nicht ausgewertet werden.aws kms get-key-policy --key-id <id> --policy-name default.Den Schlüssel mit einem Workspace verknüpfen
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>"
}'Für Infrastructure-as-Code-Deployments lassen sich dieselben Schritte auf den aws-Provider mit den Ressourcen aws_kms_key und aws_kms_alias abbilden.
Was this page helpful?