管理对您的 Amazon KMS 资源的访问权限 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

管理对您的 Amazon KMS 资源的访问权限

每个 Amazon 资源属于一个 Amazon Web Services 账户。创建或访问资源的权限在该账户的权限策略中定义。账户管理员可以向各 IAM 身份(即,用户、组和角色)附加权限策略,某些服务(包括 Amazon KMS)也支持向其他资源类型附加权限策略。

注意

账户管理员 (或管理员用户) 是具有管理员权限的用户。有关更多信息,请参阅 IAM 用户指南中的创建管理员用户和组

在管理权限时,您要决定谁可以获得权限、获得哪些资源的权限以及允许的特定操作。

Amazon KMS 资源和操作

在 Amazon KMS 中,主要资源为 Amazon KMS keys。Amazon KMS 也支持别名,别名是一个独立的资源,为 KMS 密钥提供友好名称。一些 Amazon KMS 操作允许您使用别名来标识 KMS 密钥。

KMS 密钥或别名的每个实例均具有标准格式的唯一 Amazon Resource Name (ARN)。在 Amazon KMS 资源中,Amazon 服务名称为 kms

  • Amazon KMS key

    ARN 格式:

    arn:Amazon partition name:Amazon service name:Amazon Web Services 区域:Amazon Web Services 账户 ID:key/key ID

    示例 ARN:

    arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

  • 别名

    ARN 格式:

    arn:Amazon partition name:Amazon service name:Amazon Web Services 区域:Amazon Web Services 账户 ID:alias/alias name

    示例 ARN:

    arn:aws:kms:us-west-2:111122223333:alias/example-alias

Amazon KMS 提供一组 API 操作,用以处理您的 Amazon KMS 资源。有关在 Amazon Web Services Management Console和 Amazon KMS API 操作中标识 KMS 密钥的更多信息,请参阅 密钥标识符 (KeyId)。有关 Amazon KMS 操作的列表,请参阅 Amazon Key Management Service API 参考

管理对 KMS 密钥的访问

要管理对 KMS 密钥的访问,主要的方法是使用策略。策略是用于描述哪些委托人可以访问什么资源的文档。附加到 IAM 身份的策略称作基于身份的策略(或 IAM 策略),附加到其他资源类型的策略称作基于资源的策略。在 Amazon KMS 中,必须将基于资源的策略附加到您的 KMS 密钥。这些策略称为密钥策略。所有 KMS 密钥都具有密钥策略。

您可以通过下列方式控制对 KMS 密钥的访问:

  • 使用密钥策略 – 您必须使用密钥策略来控制对 KMS 密钥的访问。您只能使用密钥策略来控制访问,这意味着对 KMS 密钥的所有访问均在单个文档(密钥策略)中进行定义。

  • 结合使用 IAM 策略和密钥策略 – 您可以结合使用 IAM 策略和密钥策略来控制对 KMS 密钥的访问。通过用这种方式控制访问,您可以管理 IAM 中各 IAM 身份的所有权限。

  • 结合使用授权和密钥策略 – 您可以结合使用授权和密钥策略来允许对 KMS 密钥的访问。通过用这种方式控制访问,您可以在密钥策略中允许访问 KMS 密钥,并允许用户将其访问权限委托给其他用户。

对于大多数 Amazon 服务,IAM 策略是控制对服务资源的访问的唯一方式。有些服务提供基于资源的策略或其他访问控制机制来补充 IAM 策略,但这些通常都是可选项,您可以只使用 IAM 策略来控制对这些服务中的资源的访问。但这并不适用于 Amazon KMS。要允许对 KMS 密钥的访问,您必须使用密钥策略,要么单独使用,要么与 IAM 策略或授予结合使用。IAM 策略本身不足以允许对 KMS 密钥的访问,但您可以将它们与密钥策略配合使用。

KMS 密钥属于创建它们的 Amazon 账户。创建 KMS 密钥的 IAM 用户不会被视为密钥的拥有者,且他们不会自动获得使用或管理自己所创建 KMS 密钥的权限。与任何其他主体一样,密钥创建者需要通过密钥策略、IAM 策略或授权获得权限。但是,拥有 kms:CreateKey 权限的主体可以设置初始密钥策略,并授予自己使用或管理密钥的权限。

有关使用密钥策略的更多信息,请参阅密钥策略

有关使用 IAM; 策略的更多信息,请参阅 IAM 策略

有关使用授权的更多信息,请参阅使用 Amazon KMS 中的授权

在策略中指定权限

Amazon KMS 提供一组 API 操作。为了控制对这些 API 操作的访问,Amazon KMS 提供一组可以在策略中指定的操作。有关更多信息,请参阅 权限参考

策略是一个用于描述一组权限的文档。以下是基本的策略元素。

  • 资源 – 在 IAM 策略中,使用 Amazon Resource Name (ARN) 指定策略应用到的资源。有关更多信息,请参阅 Amazon KMS 资源和操作。密钥策略使用 "*" 作为 resource,这实际上表示“本 KMS 密钥”。密钥策略仅适用于它附加到的 KMS 密钥。

  • 操作 – 使用操作指定要允许或拒绝的 API 操作。例如,kms:Encrypt 操作对应于 Amazon KMS Encrypt 操作。

  • 效果 – 使用效果指定是允许还是拒绝权限。如果没有显式允许访问资源,则隐式拒绝访问。您也可以显式拒绝对资源的访问,这样可确保用户无法访问该资源,即使有其他策略允许访问也是如此。

  • 委托人 – 在 IAM 策略中,请勿指定 Amazon 委托人。附加了策略的身份(IAM 用户、组或角色)直接成为隐式委托人。在密钥策略中,则必须指定权限应用到的委托人 (身份)。您可以指定 Amazon Web Services 账户(根)、IAM 用户、IAM 角色和一些 Amazon 服务作为密钥策略中的委托人。IAM 组不是密钥策略中的有效委托人。

有关更多信息,请参阅 密钥策略IAM 策略

在策略中指定条件

您可以使用另一个称为条件键的策略元素指定策略生效的条件。例如,您可能希望策略语句仅在特定日期后生效。或者,您可能希望策略语句根据 API 请求中是否存在特定值来控制访问。

要指定条件,您可以使用预定义的条件键。一些条件键通用于 Amazon,而一些条件键特定于 Amazon KMS。有关更多信息,请参阅 策略条件

为支持基于属性的访问控制 (ABAC),Amazon KMS 提供了基于标签和别名控制对 KMS 密钥的访问的条件键。有关详细信息,请参阅Amazon KMS 中的 ABAC