Claude Platform Docs
관리암호화 키 (CMEK)

CMEK를 위한 AWS KMS 구성

AWS KMS를 사용하여 조직에 암호화 키를 제공하세요.

Claude Code

Claude Code가 이 기능을 설정하도록 하세요

/claude-api AWS KMS로 고객 관리형 암호화 키를 구성하도록 도와줘

이 가이드는 Anthropic 조직을 위한 고객 관리 암호화 키(customer-managed encryption key, CMEK)로 AWS KMS 키를 구성하는 과정을 안내합니다.

사전 요구 사항

  • KMS 키를 생성하고 키 정책을 설정할 수 있는 권한(kms:CreateKey 및 kms:PutKeyPolicy)이 있는 AWS 계정.
  • 조직을 위한 Anthropic Admin API 키.
  • 설치 및 인증된 AWS CLI.

Anthropic을 위한 Amazon 리소스 이름(ARN)

Anthropic이 암호화 키를 사용하도록 하려면 Anthropic의 IAM 역할에 데이터 암호화에 사용할 수 있는 KMS 키를 제공해야 합니다. Anthropic CMEK의 ARN은 다음과 같습니다:

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

암호화 키 설정

  1. 교차 계정 키 정책으로 KMS 키 생성

    키 정책은 Anthropic의 IAM 역할에 교차 계정 액세스 권한을 부여합니다. 세 가지 명령문이 필요합니다:

    1. 계정 루트 관리자: 표준 KMS 패턴입니다. 계정이 전체 관리자 제어 권한을 유지합니다.
    2. Anthropic 암호화 및 복호화: kms:Encrypt 및 kms:Decrypt 작업으로, Anthropic이 워크스페이스 데이터를 보호하는 데이터 키를 암호화하고 복호화하는 데 사용합니다(봉투 암호화).
    3. Anthropic describe: Anthropic이 시작 시 수행하는 메타데이터 읽기입니다. DescribeKey에는 EncryptionContext 매개변수가 없으므로 이 작업에 대한 EncryptionContext 조건은 항상 거부되기 때문에 별도로 부여됩니다.

    AWS 계정 ID를 찾으려면 aws sts get-caller-identity --query Account --output text를 실행하세요.

    정책에서 <AWS_ACCOUNT_ID>를 AWS 계정 ID로, <ORGANIZATION_UUID>를 조직 ID로 바꾸세요. kms:EncryptionContext:anthropic:org_uuid에 대한 StringEquals 조건은 키를 Anthropic 조직에 바인딩하며, 검증은 이것이 없는 키를 거부합니다. 여러 Anthropic 조직 간에 하나의 키를 공유하려면 조건 값에 각 조직 ID를 나열하세요.

    정책을 key-policy.json으로 저장하세요. 대신 AWS Console에서 키를 생성하려면 이 단계의 뒷부분에서 설명하는 대로 정책을 거기에 붙여넣으세요.

    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

    출력에서 KeyMetadata.Arn을 캡처하세요. 다음 단계에서 키를 등록할 때 필요합니다.

    Anthropic은 키를 검증하거나 워크스페이스에 연결할 때 키를 검증합니다. 각 검증은 CloudTrail에 네 개의 액세스 거부 오류를 추가합니다. 이는 예상된 것입니다. 이를 필터링해야 하는 경우 다음 세 가지 값 모두에 대해 필터링하세요. 첫 번째 값만으로는 충분하지 않은데, 어떤 호출자든 이를 설정할 수 있기 때문입니다:

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

    AWS Console에서도 키를 생성할 수 있습니다. 암호화 및 복호화 키 사용이 있는 대칭 키, 단일 리전 키, KMS 키 자료 원본을 선택하세요. 키 생성 마법사는 Review 단계에서 키 정책을 커밋합니다: 거기서 키 사용 권한 아래에 Anthropic의 계정 ID 915198916910을 추가하면, 생성된 정책이 EncryptionContext 조건 없이 전체 Anthropic 계정에 더 광범위한 작업(예: kms:ReEncrypt* 및 kms:GenerateDataKey*)을 부여하며, 검증이 이를 거부합니다. 과도하게 허용된 키를 남기지 않으려면 관리 권한만으로 마법사를 완료한 다음, 키의 Key policy 탭을 열고 JSON을 이 단계의 앞부분에 표시된 key-policy.json 정책으로 바꾸세요.

    대칭 키 유형, 암호화 및 복호화 키 사용, 단일 리전 키가 선택된 AWS KMS 키 생성 마법사의 키 구성(Configure key) 단계.

    키 구성(Configure key): 대칭, 암호화 및 복호화, 단일 리전 키.

    별칭이 anthropic-cmek이고 설명이 Anthropic CMEK인 AWS KMS 레이블 추가(Add labels) 단계.

    키에 대한 별칭(alias)과 설명을 추가합니다.

    키를 관리할 수 있는 IAM 역할이 나열된 AWS KMS 키 관리 권한 정의(Define key administrative permissions) 단계.

    키 관리 권한(key administrative permissions)을 정의합니다(선택 사항). 계정이 전체 관리자 제어 권한을 유지합니다.

    다른 AWS 계정(Other AWS accounts) 아래에 Anthropic의 계정 ID가 입력된 AWS KMS 키 사용 권한 정의(Define key usage permissions) 단계.

    여기에 Anthropic의 계정 ID를 추가하지 마세요. 이 마법사 단계는 과도하게 허용된 정책을 생성합니다. 사용 권한(usage permissions)을 비워두고 생성 후 Key policy JSON을 편집하세요(앞의 키 정책 참조).

Anthropic에 키 등록

키를 등록하는 방법은 사용하는 제품에 따라 다릅니다.

Claude Console에서 또는 Admin API를 통해 키를 설정할 수 있으며, 결과는 동일합니다.

  1. Anthropic에 키 등록

    Claude Console에서 Data retention 페이지(platform.claude.com/settings/privacy)로 이동하세요. Encryption keys가 보이지 않으면 페이지 상단의 드롭다운 메뉴에서 Organization을 선택하세요. Encryption keys 아래에서 Add key를 클릭하세요. 표시 이름을 입력하고 AWS KMS를 선택한 다음 Continue를 클릭하세요. KMS key ARN에 키 ARN을 붙여넣고 Add를 클릭하세요.

    키 세부 정보 단계에 조직 ID가 표시됩니다. Add를 클릭하기 전에 키 정책에 추가하세요.

  2. 키 검증

    Encryption keys 목록에서 키 옆의 Verify를 클릭하세요. 검사가 통과하면 Connected가 표시됩니다. 실패하면 메시지에 그 이유가 표시됩니다.

  3. 워크스페이스에 키 연결

    Claude Console에서 Data retention 페이지(platform.claude.com/settings/privacy)로 이동하여 페이지 상단의 드롭다운 메뉴에서 워크스페이스를 선택하세요. Encryption key 아래에서 키를 선택하고 Save를 클릭한 다음 확인하세요. 키 연결은 취소할 수 없습니다. 이미 요청을 받고 있는 워크스페이스의 경우 키가 적용되기까지 최대 하루가 걸릴 수 있습니다.

Claude Platform on AWS에서 CMEK 설정

Claude Platform on AWS에서 CMEK는 AWS KMS 키만 사용하며, 설정은 다음과 같은 방식으로 앞의 섹션과 다릅니다:

  • 주체: 키 정책이 AWS 서비스 주체 aws-external-anthropic.amazonaws.com에 액세스 권한을 부여합니다. Anthropic의 IAM 역할과 계정 ID는 사용되지 않으므로 Anthropic을 위한 ARN은 적용되지 않습니다.
  • 키 요구 사항: 키는 암호화 및 복호화 사용이 있는 대칭 KMS 키여야 하며, 단일 리전이어야 하고, 연결하는 워크스페이스와 동일한 AWS 계정 및 리전에 있어야 합니다. 교차 계정 키는 지원되지 않습니다: 키는 조직을 호스팅하는 AWS 계정에 있어야 합니다. 다중 리전 키(mrk-로 시작하는 키 ID)와 별칭 ARN은 키를 등록할 때 거부됩니다; 키 ARN을 사용하세요.
  • 별도의 검증 단계 없음: 등록 시 키 ARN에 대한 이러한 검사 외에, 키는 워크스페이스에 연결할 때 검증됩니다. 연결 호출은 해당 워크스페이스의 컴파트먼트 ID를 암호화 컨텍스트로 사용하여 키에 대해 암호화/복호화 왕복을 수행하므로, 키 정책 문제가 등록 시가 아닌 연결 시에 나타납니다. 따라서 EncryptionContext 조건에는 모두 0인 항목이 필요하지 않습니다.
  • 키 관리 위치: Admin 역할로 AWS를 통해 로그인하여 Claude Console에서 키를 등록하고 연결하세요. 외부 키 엔드포인트는 IAM 작업을 통해 승인되어 Claude Platform on AWS에서도 사용할 수 있습니다; 거기서 키는 ekey_ ID가 아닌 KMS 키 ARN으로 식별됩니다.

사전 요구 사항

  • KMS 키를 생성하고 키 정책을 설정할 수 있는 권한(kms:CreateKey 및 kms:PutKeyPolicy)이 있는, Claude Platform on AWS 조직을 호스팅하는 AWS 계정.
  • Claude Platform on AWS용 Claude Console의 Admin 역할. Claude Console 사용하기를 참조하세요.
  • Claude Console에 로그인하는 IAM 주체의 경우: 키 등록, 나열, 연결은 AWS 게이트웨이를 거치므로 aws-external-anthropic:AssumeConsole 외에 그곳에서 수행하는 작업에 대한 IAM 작업이 필요합니다. 키 등록은 RegisterKey(등록 내역을 보려면 ListKeys 및 GetKey 포함)이고, 키 연결은 UpdateWorkspace 또는 CreateWorkspace입니다. 외부 키 작업(및 CreateWorkspace)은 계정 범위이므로 Resource: "*"에 대해 부여하세요. 워크스페이스 ARN으로 제한된 정책에는 이러한 작업이 포함되지 않습니다.
  • 키를 워크스페이스에 연결하는 IAM 주체(Claude Console에 로그인한 ID)의 경우: 키에 대한 kms:DescribeKey, kms:Encrypt, kms:Decrypt. 키에 대한 주체의 액세스는 서비스 주체의 액세스 외에 연결할 때 확인됩니다.
  • 선택 사항, Claude Console의 키 선택기의 경우: 로그인하는 주체에 대한 kms:ListKeys 및 kms:DescribeKey. 이것들이 없으면 대신 키 ARN을 붙여넣으세요.

KMS 키 생성

키 정책에는 세 가지 명령문이 있습니다: 계정의 루트 관리자 명령문, Claude Platform on AWS 서비스 주체가 데이터 키를 암호화, 복호화 및 생성할 수 있도록 하는 명령문, 그리고 kms:DescribeKey에 대한 별도의 명령문입니다. 암호화 명령문에는 나열한 워크스페이스에 키를 바인딩하는 선택적 EncryptionContext 조건이 포함됩니다. DescribeKey에는 EncryptionContext 매개변수가 없어 해당 작업에 EncryptionContext 조건을 걸면 항상 거부되므로, 별도로 부여됩니다.

여기에 표시된 선택적 EncryptionContext 조건을 사용하려면 먼저 워크스페이스를 (키 없이) 생성하고, 컴파트먼트 ID를 복사하여 <compartment-uuid>를 대체하세요. Claude Console에서 ID를 찾으려면 Data retention 페이지(platform.claude.com/settings/privacy)로 이동하여 페이지 상단의 드롭다운 메뉴에서 워크스페이스를 선택하세요. ID는 Encryption key 아래의 Compartment ID 필드에 있습니다. Get Workspace 엔드포인트가 반환하는 compartment_id 필드에서 읽을 수도 있습니다. 조건을 사용하지 않으려면 해당 명령문에서 Condition 블록을 삭제하세요.

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

출력에서 KeyMetadata.Arn을 캡처하세요. 키를 등록할 때 필요합니다.

EncryptionContext 조건은 선택 사항입니다. 연결 시 확인을 포함하여 워크스페이스에 대해 수행되는 모든 암호화, 복호화 및 데이터 키 호출은 해당 워크스페이스의 컴파트먼트 ID를 anthropic:compartment_uuid로 전달하므로, 조건에는 키를 연결하는 각 워크스페이스의 컴파트먼트 ID를 나열하며 모두 0인 항목은 필요하지 않습니다. 이 조건을 추가하면 IAM 계층에서도 나열한 워크스페이스에 키가 바인딩됩니다. 컴파트먼트 ID는 워크스페이스가 생성된 후에만 존재하므로, 순서는 다음과 같습니다: 워크스페이스를 생성하고, 해당 컴파트먼트 ID를 조건에 넣은 다음(키 생성 시 또는 나중에 kms:PutKeyPolicy로), 키를 연결합니다. 추가 워크스페이스에 키를 연결할 때마다 그 전에 같은 방식으로 해당 워크스페이스의 컴파트먼트 ID를 추가하세요. 조건 없이 시작하려면 AllowClaudePlatformOnAWSCrypto 명령문에서 Condition 블록을 삭제하세요. 나중에 조건을 추가하는 경우 키가 이미 연결된 모든 워크스페이스의 컴파트먼트 ID를 포함하세요.

aws:SourceArn 조건으로 두 서비스 주체 명령문을 추가로 제한할 수 있습니다. 서비스는 키를 사용하는 모든 호출에서 워크스페이스의 ARN(arn:aws:aws-external-anthropic:<region>:<account-id>:workspace/<workspace-id>)을 소스 ARN으로 전달하므로, "ArnLike": {"aws:SourceArn": "arn:aws:aws-external-anthropic:*:<account-id>:workspace/*"}는 권한 부여 범위를 자신의 AWS 계정에 있는 워크스페이스로 제한하고, 전체 워크스페이스 ARN 목록은 해당 워크스페이스로 제한합니다. 이 조건은 필수가 아닙니다. EncryptionContext 조건만으로도 나열한 워크스페이스에 키가 바인딩됩니다.

AWS Console에서도 키를 생성할 수 있습니다: 워크스페이스의 리전에서 암호화 및 복호화 키 사용이 있는 대칭 키, 단일 리전 키, KMS 키 자료 원본을 선택하세요. 키 생성 마법사에서 키 사용 권한을 비워둔 다음, 키의 Key policy 탭을 열고 JSON을 여기에 표시된 정책으로 바꾸세요.

키 등록 및 연결

  1. 키 등록

    Claude Console에서 Data retention 페이지(platform.claude.com/settings/privacy)로 이동하세요. Encryption keys가 보이지 않으면 페이지 상단의 드롭다운 메뉴에서 Organization을 선택하세요. Encryption keys 아래에서 Add key를 클릭하세요. 표시 이름을 입력한 다음, 키 선택기에서 키를 선택하거나 Enter ARN manually를 선택하고 키 ARN을 붙여넣은 후 Add를 클릭하세요. 키는 조직을 호스팅하는 AWS 계정에 있어야 하며, 교차 계정 키는 지원되지 않습니다. 선택기는 조직의 리전 중 하나에 있는 계정의 활성화된 고객 관리형 대칭 단일 리전 키를 나열합니다. 선택기에 나열되지 않는 키의 경우 ARN을 입력하세요. 선택기는 로그인한 주체가 kms:ListKeys 및 kms:DescribeKey를 호출할 수 있는 경우에만 키를 나열합니다.

  2. 워크스페이스에 키 연결

    새 워크스페이스에 요청을 보내기 전에 해당 워크스페이스에 키를 연결하세요. 이미 요청을 받고 있는 워크스페이스의 경우 키가 적용되기까지 최대 하루가 걸릴 수 있습니다. Claude Console에서 Data retention 페이지(platform.claude.com/settings/privacy)로 이동하여 페이지 상단의 드롭다운 메뉴에서 워크스페이스를 선택하세요. Encryption key 아래에서 키를 선택하고 Save를 클릭한 다음 확인하세요. Claude Console에서 워크스페이스를 생성할 때 키를 선택할 수도 있지만, 워크스페이스의 컴파트먼트 ID는 생성 시 할당되므로 키 정책이 아직 특정 워크스페이스를 지정하지 않은 경우(EncryptionContext 조건 없음)에만 가능합니다. 일단 연결되면 워크스페이스의 키는 변경할 수 없습니다.

    이때 키가 검증됩니다: 연결 호출은 키에 대한 주체의 액세스를 확인하고 워크스페이스의 컴파트먼트 ID를 암호화 컨텍스트로 사용하여 키에 대해 암호화/복호화 왕복을 수행하므로, 키 정책 또는 주체의 권한 문제가 해당 호출에서 오류로 나타납니다. 연결이 KMS 액세스 오류로 실패하는 경우 다음을 확인하세요:

    • 키 정책이 aws-external-anthropic.amazonaws.com 서비스 주체를 지정하고 kms:Encrypt, kms:Decrypt, kms:GenerateDataKey를 부여하며, EncryptionContext 조건이 없는 별도의 명령문에서 kms:DescribeKey를 부여합니다.
    • 모든 EncryptionContext 조건에 이 워크스페이스의 컴파트먼트 ID가 포함되어 있고, 추가한 모든 aws:SourceArn 조건이 이 워크스페이스의 ARN과 일치합니다.
    • 키가 활성화되어 있고, 단일 리전이며, 워크스페이스와 동일한 AWS 계정 및 리전에 있습니다.
    • 로그인한 주체가 키에 대한 kms:DescribeKey, kms:Encrypt, kms:Decrypt를 가지고 있습니다.
    • AWS 조직의 어떤 서비스 제어 정책이나 리소스 제어 정책도 서비스 주체나 주체가 키를 사용하는 것을 막지 않습니다.
    • 정책이 올바른 것 같은데도 연결이 계속 실패하면, 키가 있는 계정의 CloudTrail에서 거부된 kms: 이벤트를 찾은 다음(호출 주체와, 암호화 호출의 경우 암호화 컨텍스트가 표시됨), kms:PutKeyPolicy로 조건을 수정하고 다시 시도하세요.

Terraform

코드형 인프라(infrastructure-as-code) 배포의 경우, 동일한 단계가 aws_kms_key 및 aws_kms_alias 리소스와 함께 aws 공급자에 매핑됩니다.

Was this page helpful?