AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

注意

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

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

AWS KMS 资源和操作

要管理权限,您应该了解一些有关资源和操作的基本信息。在 AWS KMS 中,主要资源类型为客户主密钥 (CMK)。AWS KMS 还支持可与 CMK 一起使用的另一种资源类型:别名。别名是一个指向 CMK 的友好名称。有些 AWS KMS 操作允许您通过别名指定 CMK。

这些资源类型都具有与其关联的唯一 Amazon 资源名称 (ARN),如以下列表所示。

  • 客户主密钥 (CMK)

    ARN 格式:

    arn:aws:kms: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:kms: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 KMS 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 KMS Encrypt API 操作。

     

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

     

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

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

在策略中指定条件

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

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