---
title: 在 Claude Platform on AWS 上设置 CMEK
url: https://platform.claude.com/docs/zh-CN/manage-claude/cmek-claude-platform-on-aws
description: 在 Claude Platform on AWS 上使用 AWS KMS 密钥作为客户管理的加密密钥。
---

本指南介绍如何在 [Claude Platform on AWS](https://platform.claude.com/docs/zh-CN/build-with-claude/claude-platform-on-aws) 上使用 [AWS KMS](https://aws.amazon.com/kms/) 密钥作为[客户管理加密密钥（customer-managed encryption key，CMEK）](https://platform.claude.com/docs/zh-CN/manage-claude/cmek)。对于 Claude Platform 或 Claude Enterprise，请改为按照[为 CMEK 配置 AWS KMS](https://platform.claude.com/docs/zh-CN/manage-claude/cmek-aws-kms) 进行操作。

<Warning>
  启用 CMEK 是永久性的。如果您的 KMS 密钥被删除或禁用，Anthropic 将无法恢复使用该密钥加密的数据。在开始之前，请查看[警告和限制](https://platform.claude.com/docs/zh-CN/manage-claude/cmek)。
</Warning>

## 前提条件

* 托管您的 Claude Platform on AWS 组织的 AWS 账户，具有创建 KMS 密钥和设置密钥策略的权限（`kms:CreateKey` 和 `kms:PutKeyPolicy`）。

* 如需从命令行创建密钥，需要已安装并通过身份验证的 [AWS CLI](https://aws.amazon.com/cli/)。

* Claude Platform on AWS 的 Claude Console 中的 **Admin** 角色。请参阅[使用 Claude Console](https://platform.claude.com/docs/zh-CN/build-with-claude/claude-platform-on-aws#using-the-claude-console)。

* 您用于登录 Claude Console 的 IAM 主体需具备以下权限：

  * **登录：** `aws-external-anthropic:AssumeConsole`
  * **注册密钥：** `aws-external-anthropic:RegisterKey`
  * **查看已注册的密钥：** `aws-external-anthropic:ListKeys` 和 `aws-external-anthropic:GetKey`
  * **附加密钥：** `aws-external-anthropic:UpdateWorkspace` 或 `aws-external-anthropic:CreateWorkspace`，以及对该密钥的 `kms:DescribeKey`、`kms:Encrypt` 和 `kms:Decrypt`
  * **从列表中选择密钥（可选）：** `kms:ListKeys` 和 `kms:DescribeKey`

  `aws-external-anthropic:RegisterKey`、`aws-external-anthropic:ListKeys`、`aws-external-anthropic:GetKey` 和 `aws-external-anthropic:CreateWorkspace` 是账户范围的权限。请在 `Resource: "*"` 上授予这些权限。请参阅 [IAM 操作](https://platform.claude.com/docs/zh-CN/api/claude-platform-on-aws-iam-actions#encryption-keys)。

## Anthropic 的 AWS 服务主体

本指南中的密钥策略授予以下 AWS 服务主体访问您密钥的权限：

```text wrap
aws-external-anthropic.amazonaws.com
```

<Warning>
  仅使用此已发布的服务主体名称。切勿信任通过电子邮件、聊天或任何入门渠道提供的标识符。
</Warning>

## 加密密钥设置

### 准备密钥策略

将此策略复制到文本编辑器中：

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

`EncryptionContext` 条件是可选的。它将密钥限制为您列出的工作区。要移除该条件，请从 `AllowClaudePlatformOnAWSCrypto` 语句中删除 `Condition` 块。

如果您保留该条件，请在将密钥附加到每个工作区之前添加该工作区的分区 ID。对于新工作区：

1. 在不使用密钥的情况下创建工作区。
2. 将其分区 ID 添加到策略中。
3. 附加密钥。

如果您稍后添加该条件，请列出该密钥已附加到的每个工作区的分区 ID。

要进一步限制密钥策略，请参阅[可选的 `aws:SourceArn` 条件](https://platform.claude.com/docs/zh-CN/manage-claude/cmek-claude-platform-on-aws#source-arn-condition)。

替换占位符：

* **`<AWS_ACCOUNT_ID>`：** 您的 [AWS 账户 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/console-account-id.html)。如需使用 AWS CLI 打印该 ID，请运行 `aws sts get-caller-identity --query Account --output text`。
* **`<COMPARTMENT_UUID>`：** 您要附加密钥的工作区的分区 ID

<Note>
  **查找您的分区 ID：** 在 Claude Console 中，前往 [Data retention](https://platform.claude.com/settings/privacy) 页面（`platform.claude.com/settings/privacy`）。从页面顶部的下拉菜单中选择工作区。该 ID 位于 **Encryption key** 下的 **Compartment ID** 字段中。您也可以读取 [Get Workspace](https://platform.claude.com/docs/zh-CN/api/organization/workspaces/retrieve) 端点返回的 `compartment_id` 字段。
</Note>

### 创建密钥

在托管您的 Claude Platform on AWS 组织的 AWS 账户中，在与工作区相同的区域创建密钥。

<Tabs>
  <Tab title="AWS Console">
    <Steps>
      <Step title="打开创建密钥向导">
        打开 [AWS KMS 控制台](https://console.aws.amazon.com/kms)，并切换到要创建密钥的区域。前往 **Customer managed keys**，然后点击 **Create key**。
      </Step>

      <Step title="配置密钥（Configure key）">
        请确保已选择以下选项：

        * **Key type：** Symmetric
        * **Key usage：** Encrypt and decrypt
        * **Advanced options > Key material origin：** KMS
        * **Advanced options > Regionality：** Single-Region key

        点击 **Next**。

        <Frame caption="对称、加密和解密、单区域密钥。">
          ![AWS KMS 创建密钥向导的配置密钥（Configure key）步骤，已选择对称密钥类型、加密和解密密钥用途以及单区域密钥。](https://platform.claude.com/docs/images/cmek/aws-configure-key.png)
        </Frame>
      </Step>

      <Step title="添加标签（Add labels）">
        为密钥输入一个 **Alias**，例如 `anthropic-cmek`。点击 **Next**。

        <Frame caption="密钥的别名。">
          ![AWS KMS 添加标签（Add labels）步骤，别名为 anthropic-cmek，描述为 Anthropic CMEK。](https://platform.claude.com/docs/images/cmek/aws-add-labels.png)
        </Frame>
      </Step>

      <Step title="定义密钥管理权限（Define key administrative permissions）">
        不要选择任何密钥管理员。您的密钥策略已经为您的 AWS 账户授予了完全的管理控制权。点击 **Next**。

        <Frame caption="将密钥管理员留空。">
          ![AWS KMS 定义密钥管理权限（Define key administrative permissions）步骤，列出了可以管理该密钥的 IAM 角色。](https://platform.claude.com/docs/images/cmek/aws-admin-permissions.png)
        </Frame>
      </Step>

      <Step title="定义密钥用途权限（Define key usage permissions）">
        不要选择任何密钥用户，也不要在 **Other AWS accounts** 下添加任何内容。您的密钥策略已经授予了所需的访问权限。点击 **Next**。
      </Step>

      <Step title="编辑密钥策略（Edit key policy）">
        点击 **Edit**。用您的密钥策略替换整个策略，然后点击 **Next**。
      </Step>

      <Step title="审核（Review）">
        点击 **Finish**。
      </Step>

      <Step title="复制密钥 ARN">
        在 **Customer managed keys** 中，打开新密钥并复制其 ARN。您需要使用该 ARN 来注册密钥。
      </Step>
    </Steps>

    要替换已有密钥的密钥策略：

    1. 打开该密钥，然后点击 **Key policy** 选项卡。
    2. 如果您看到 **Switch to policy view**，请点击它。
    3. 点击 **Edit**。
    4. 用您的密钥策略替换 JSON。
    5. 点击 **Save changes**。
  </Tab>

  <Tab title="AWS CLI">
    将您的密钥策略保存为 `key-policy.json`，然后创建密钥。将 `<REGION>` 替换为密钥所在的区域。

    ```bash
    aws kms create-key \
      --region <REGION> \
      --description "Anthropic CMEK" \
      --key-usage ENCRYPT_DECRYPT \
      --policy file://key-policy.json
    ```

    从输出中复制 `KeyMetadata.Arn`。您需要使用它来注册密钥。
  </Tab>
</Tabs>

<Note>
  **可选：** 要进一步限制这两条服务主体语句，请为每条语句添加 `aws:SourceArn` 条件。每次调用的源 ARN 都是[工作区的 ARN](https://platform.claude.com/docs/zh-CN/api/claude-platform-on-aws-iam-actions#service-details)，格式为 `arn:aws:aws-external-anthropic:<REGION>:<AWS_ACCOUNT_ID>:workspace/<WORKSPACE_ID>`。

  * **您 AWS 账户中的所有工作区：** `"ArnLike": {"aws:SourceArn": "arn:aws:aws-external-anthropic:*:<AWS_ACCOUNT_ID>:workspace/*"}`
  * **特定工作区：** 相同的条件，但使用完整工作区 ARN 列表代替通配符
</Note>

## 向 Anthropic 注册密钥

使用 Admin 角色通过 AWS 登录 Claude Console。

<Steps>
  <Step title="打开加密密钥设置">
    在 Claude Console 中，前往 [Data retention](https://platform.claude.com/settings/privacy#encryption-keys) 页面（`platform.claude.com/settings/privacy`）。如果您没有看到 **Encryption keys**，请从页面顶部的下拉菜单中选择 **Organization**。
  </Step>

  <Step title="添加密钥">
    在 **Encryption keys** 下，点击 **Add key**。输入 **Display name**。
  </Step>

  <Step title="输入密钥 ARN">
    Anthropic 不接受别名 ARN 和多区域密钥。

    在 **KMS key ARN** 中，粘贴密钥 ARN。如果显示的是密钥列表，请选择您的密钥，或点击 **Enter ARN manually** 并粘贴 ARN。点击 **Add**。
  </Step>

  <Step title="将密钥附加到工作区">
    附加密钥后无法撤销。如果可以，请在新工作区接收任何请求之前将密钥附加到该工作区。在已经接收请求的工作区中，密钥可能需要[最多一天才能生效](https://platform.claude.com/docs/zh-CN/manage-claude/cmek#how-it-works)。

    在 Data retention 页面上，从页面顶部的下拉菜单中选择工作区。在 **Encryption key** 下，选择密钥并点击 **Save**。
  </Step>

  <Step title="确认更改">
    选中复选框以确认您已阅读 CMEK 文档，然后点击 **Confirm**。
  </Step>
</Steps>

附加操作会验证密钥。如果因 KMS 访问错误而失败，请参阅[排查验证问题](https://platform.claude.com/docs/zh-CN/manage-claude/cmek-claude-platform-on-aws#troubleshoot-validation)。

如果您的密钥策略没有 `EncryptionContext` 条件，您也可以在 Claude Console 中创建工作区时选择密钥。

如需改用 API 注册和附加密钥，请参阅 [IAM 操作](https://platform.claude.com/docs/zh-CN/api/claude-platform-on-aws-iam-actions#encryption-keys)。API 通过 KMS 密钥 ARN 来标识密钥。

## 排查验证问题

如果验证失败，常见原因有：

* **密钥策略不匹配：** 确保密钥策略与[准备密钥策略](https://platform.claude.com/docs/zh-CN/manage-claude/cmek-claude-platform-on-aws#prepare-the-key-policy)中的策略一致。如需检查密钥策略，请运行 `aws kms get-key-policy --region <REGION> --key-id <KEY_ARN> --policy-name default`。
* **条件不匹配：** 确保任何 `EncryptionContext` 或 `aws:SourceArn` 条件都包含此工作区。
* **密钥状态或位置：** 确认密钥已启用、为单区域密钥，并且与工作区位于同一 AWS 账户和区域中。
* **缺少权限：** 您登录所用的主体需要对该密钥具有 `kms:DescribeKey`、`kms:Encrypt` 和 `kms:Decrypt` 权限。
* **组织策略：** 确保您 AWS 组织中没有服务控制策略或资源控制策略阻止该服务主体或您的主体。

如果附加仍然失败，请在密钥所在账户的 CloudTrail 中查找被拒绝的 `kms:` 事件。该事件会显示调用主体，对于加密调用，还会显示加密上下文。解决问题后，再次点击 **Save**。

## Terraform

如需使用 Terraform 创建密钥，请使用 `aws` 提供程序中的 `aws_kms_key` 和 `aws_kms_alias` 资源。
