claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Dieser Leitfaden 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.
Die Aktivierung 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 geben, 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 wird.
Erstelle den KMS-Schlüssel mit einer kontoübergreifenden Schlüsselrichtlinie
Die Schlüsselrichtlinie gewährt der IAM-Rolle von Anthropic kontoübergreifenden Zugriff. Drei Statements sind erforderlich:
kms:Encrypt und kms:Decrypt, die Anthropic verwendet, um die Datenschlüssel zu ver- und entschlüsseln, die deine Workspace-Daten schützen (Envelope Encryption).DescribeKey keinen EncryptionContext-Parameter hat, sodass eine EncryptionContext-Bedingung für diese Aktion immer zu einer Ablehnung führen 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\": [
\"00000000-0000-0000-0000-000000000000\",
\"<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 immer die Compartment-ID deines Workspace in den Verschlüsselungskontext ein, sodass der Ciphertext in jedem Fall kryptografisch an dieses Compartment gebunden ist. Das Hinzufügen der Bedingung bietet zusätzliche Tiefenverteidigung auf der IAM-Ebene. Um ohne sie zu starten, lass den Condition-Block im AllowAnthropicCMEKCrypto-Statement weg und füge ihn später mit kms:PutKeyPolicy hinzu.
Deine Compartment-ID finden: Wo du deine Compartment-ID findest, unterscheidet sich zwischen Claude Platform und Claude Enterprise. Siehe die Tabs Claude Platform und Claude Enterprise unter Den Schlüssel bei Anthropic registrieren.
Du kannst den Schlüssel auch über die AWS Console erstellen. Wähle einen symmetrischen Schlüssel mit der Schlüsselverwendung Verschlüsseln und Entschlüsseln, einen Single-Region-Schlüssel und KMS als Ursprung des Schlüsselmaterials. Der Create-key-Assistent legt im Schritt Review eine Schlüsselrichtlinie fest: Wenn du dort Anthropics Konto-ID 915198916910 unter den Schlüsselverwendungsberechtigungen hinzufügst, gewährt die generierte Richtlinie dem gesamten Anthropic-Konto umfassendere Aktionen (wie kms:ReEncrypt* und kms:GenerateDataKey*) ohne EncryptionContext-Bedingung, und die Validierung würde damit trotzdem erfolgreich sein. Um keinen zu weitreichend berechtigten 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 zuvor gezeigte, auf die Rolle beschränkte Richtlinie (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.
Deine Compartment-ID finden: 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 lies das Feld compartment_id, das vom Get Workspace-Endpunkt zurückgegeben wird. Setze diesen Wert für <compartment-uuid> in der vorstehenden Schlüsselrichtlinie ein.
Die Schlüsselvalidierung sendet immer die Compartment-UUID aus lauter Nullen (00000000-0000-0000-0000-000000000000) als Verschlüsselungskontext, weil die Validierung ausgeführt wird, bevor der Schlüssel an einen Workspace angehängt ist. Der Live-Traffic sendet die Compartment-ID jedes angehängten Workspace.
Jede EncryptionContext-Bedingung muss den Nullen-Wert plus die Compartment-ID jedes Workspace zulassen, an den der Schlüssel angehängt ist. Die Validierung läuft außerdem erneut, wann immer die Schlüsseleinrichtung erneut ausgeführt wird, also behalte den Nullen-Eintrag dauerhaft bei.
Um den Schlüssel an einen weiteren Workspace anzuhängen, füge die Compartment-ID dieses Workspace vor dem Anhängen mit kms:PutKeyPolicy zur Bedingung hinzu.
Registriere den Schlüssel bei Anthropic
Erstelle eine externe Schlüsselkonfiguration über die Admin API.
Für Organisationen auf Claude Platform on AWS sind die Endpunkte für externe Schlüssel noch nicht verfügbar. Registriere, validiere und hänge deinen Schlüssel stattdessen in der Claude Console an.
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 ID des externen Schlüssels:
{
"type": "external_key",
"id": "ekey_<id>",
"display_name": "<friendly-name>"
}Validiere den Schlüssel
Löse einen Verschlüsselungs- und Entschlüsselungs-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:
AccessDeniedException, wenn eine kms:EncryptionContext:anthropic:compartment_uuid-Bedingung nur einen der beiden Werte zulässt, die Anthropic sendet. Die Validierung sendet die Nullen-UUID (00000000-0000-0000-0000-000000000000); der Live-Traffic sendet die Compartment-ID des angehängten Workspace. Bestätige, dass die Bedingung beide auflistet. Um die Bedingung vollständig 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, weil sie für externe Principals, die über ressourcenbasierte Richtlinien aufrufen, nicht ausgewertet werden.aws kms get-key-policy --key-id <id> --policy-name default.Hänge den Schlüssel an einen Workspace an
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?