

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

# KMS 密钥访问权限和权限
<a name="control-access"></a>

要使用 AWS KMS，您必须拥有 AWS 可用于对请求进行身份验证的凭证。证书必须包括访问 AWS 资源的权限 AWS KMS keys 和[别名](kms-alias.md)。除非明确提供了 KMS 密钥的权限，否则任何 AWS 委托人均无权访问 KMS 密钥，并且从不被拒绝。不存在使用或管理 KMS 密钥的隐式权限或自动权限。

要控制对 KMS 密钥的访问，您可以使用下列策略机制。
+ [密钥策略](key-policies.md)：每个 KMS 密钥都有密钥策略。密钥策略也是控制访问 KMS 密钥的主要机制。您只能使用密钥策略来控制访问，这意味着对 KMS 密钥的所有访问均在单个文档（密钥策略）中进行定义。有关使用密钥策略的更多信息，请参阅[密钥政策](key-policies.md)。
+ [IAM policy ](iam-policies.md)：您可以将 IAM policy 与密钥策略和授权结合使用，以控制对 KMS 密钥的访问。通过用这种方式控制访问，您可以管理 IAM 中各 IAM 身份的所有权限。若要使用 IAM policy 允许访问 KMS 密钥，密钥策略必须明确允许此访问。有关使用 IAM; 策略的更多信息，请参阅 [IAM 策略](iam-policies.md)。
+ [授权](grants.md)：您可以将密钥策略与 IAM policy 结合使用，以允许对 KMS 密钥的访问。通过用这种方式控制访问权限，您可以在密钥策略中允许访问 KMS 密钥，并允许有关身份将其访问权限委托给其他身份。有关使用授权的更多信息，请参阅[补助金 AWS KMS](grants.md)。

## KMS 密钥政策
<a name="intro-key-policy"></a>

管理 AWS KMS 资源访问权限的主要方法是使用*策略*。策略是用于描述哪些委托人可以访问什么资源的文档。附加到 IAM 身份的策略称为*基于身份的策略*（或 *IAM 策略*），附加到其他类型资源的策略称为*资源*策略。 AWS KMS KMS 密钥的资源策略称为*密钥策略*。

所有 KMS 密钥都具有密钥策略。如果您不提供一个，请为您 AWS KMS 创建一个。 AWS KMS 使用的[默认密钥策略](key-policy-default.md)会有所不同，具体取决于您是在 AWS KMS 控制台中创建密钥还是使用 AWS KMS API。我们建议您编辑默认密钥政策，使其符合贵组织对[最低权限](least-privilege.md)的要求。

如果密钥和 IAM 委托人位于同一个 AWS 账户中，则可以单独使用密钥策略来控制访问权限，这意味着对 KMS 密钥的全部访问范围是在单个文档（密钥策略）中定义的。但是，当一个账户中的调用者必须访问另一个账户中的密钥时，您不能仅使用密钥政策来授予访问权限。在跨账户场景中，必须将 IAM 策略附加到调用者的用户或角色上，明确允许调用者进行 API 调用。

您也可以将 IAM 策略与密钥政策和授权结合使用，以控制对 KMS 密钥的访问权限。要使用 IAM 策略控制对 KMS 密钥的访问权限，密钥政策必须授予账户使用 IAM 策略的权限。您可以指定[启用 IAM 策略的密钥政策语句](key-policy-default.md#key-policy-default-allow-root-enable-iam)，也可以在密钥政策中明确[指定允许的主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying)。

在制定策略时，请确保有严格的控制措施，限制可以执行以下操作的人员：
+ 更新、创建和删除 IAM 和 KMS 密钥政策
+ 对用户、角色和组附加和分离 IAM 策略
+ 对您的 KMS 密钥附加和分离 KMS 密钥政策

## KMS 密钥授权
<a name="intro-kms-grants"></a>

除了 IAM 和密钥策略外，还 AWS KMS 支持[授权](grants.md)。授权提供了一种灵活而强大的权限委托方式。您可以使用授权向您的 AWS 账户或其他 AWS 账户中的 IAM 委托人发放有时限的 KMS 密钥访问权限。如果您在创建策略时不知道主体的名称，或者需要访问权限的主体经常发生变化，我们建议您授予有时限的访问权限。[被授权者主体](grants.md#terms-grantee-principal)可以与 KMS 密钥位于同一账户中，也可以位于不同的账户中。如果主体和 KMS 密钥位于不同的账户中，则除了授予之外，您还必须指定 IAM 策略。授权需要额外的管理，因为您必须调用 API 来创建授权，并在不再需要时停用或撤销授权。