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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理对 AWS KMS 资源的访问概述

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

注意

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

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

AWS KMS 资源和操作

AWS KMS 中,主要资源为客户主键(厘米). AWS KMS 还支持alias(一种独立于 CMK 的资源),但提供可与 CMK 关联的友好名称。有些 AWS KMS 操作允许您使用别名来标识 CMK。

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

  • 客户主密钥 (CMK)

    ARN 格式:

    arn:AWS partition name:AWS service name:AWS Region:AWS account ID:key/CMK key ID

    示例 ARN:

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

  • 别名

    ARN 格式:

    arn:AWS partition name:AWS service name:AWS region:AWS account ID:alias/alias name

    示例 ARN:

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

AWS KMS 提供一组 API 操作,用以处理您的 AWS KMS 资源。有关 AWS 管理控制台和 AWS KMS API 操作中标识 CMK 的更多信息,请参阅密钥标识符 (KeyId)。有关 AWS KMS 操作的列表,请参阅AWS Key Management Service API 参考

管理对 AWS KMS CMK 的访问

管理对 AWS KMS CMK 的访问的主要方式是使用策略。策略是一些用于描述谁可以访问什么内容的文档。附加到 IAM 身份的策略称为基于身份的策略(或IAM 策略),并且附加到其他类型资源的策略称为基于资源的策略。AWS KMS 中,您必须将基于资源的策略附加到您的客户主密钥 (CMK)。这些策略称为密钥策略。所有 KMS CMK 都具有密钥策略。

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

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

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

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

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

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

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

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

在策略中指定权限

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

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

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

  • 操作— 您可以使用操作指定要允许或拒绝的 API 操作。例如,kms:Encrypt操作对应于 AWS KMSEncryptoperation.

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

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

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

在策略中指定条件

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

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

为支持基于属性的访问控制 (ABAC),AWS KMS 提供了条件密钥,用于根据客户主密钥 (CMK) 的标签和别名控制对其访问。有关详细信息,请参阅 使用适用于 AWS KMS 的 ABAC