如何允许 AWS Organization 中的所有账户在我的账户中使用 AWS KMS 密钥?

上次更新日期:2021 年 8 月 5 日

我想将 AWS Key Management Service (AWS KMS) 密钥访问权限仅授予属于我的 AWS Organization 的委托人。

简短描述

aws:PrincipalOrgID 全局条件密钥可以与 AWS KMS 的基于资源的策略中的 Principal 元素结合使用。您可以在 Condition 元素中指定组织 ID,而不是列出组织中的所有 AWS 账户 ID。

解决方法

创建 AWS KMS 密钥策略,允许 AWS 组织中的所有账户使用 AWS 全局条件上下文密钥 aws:PrincipalOrgID 执行 AWS KMS 操作。

重要提示:最佳实践是使用 AWS Identity and Access Management (IAM) 策略授予最低权限

在语句的条件元素中指定您的 AWS Organization ID,以确保只有组织中账户的委托人才能访问 AWS KMS 密钥。要获取组织 ID,请按照以下步骤操作:

  1. 打开 AWS Organizations 控制台
  2. 选择设置
  3. 组织详细信息中,复制组织 ID。

以下 AWS KMS 密钥策略声明允许属于 AWS Organization 且 ID 为 o-xxxxxxxxxxx 的任何 AWS 账户的身份使用 KMS 密钥:

{
  "Sid": "Allow use of the KMS key for organization",
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey",
    "kms:Encrypt",
    "kms:ReEncrypt*",
    "kms:GetKeyPolicy"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalOrgID": "o-xxxxxxxxxxx"
    }
  }
}

注意:AWS: PrincipalOrgID 全局条件上下文密钥不能用于限制对 AWS 服务委托人的访问。调用 API 调用的 AWS 服务来自不属于 AWS Organization 的内部 AWS 账户。