本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
控制对 AWS CloudHSM 密钥存储的访问
您可以使用 IAM policy 控制对 AWS CloudHSM 密钥存储和 AWS CloudHSM 集群的访问。您可以使用密钥策略、IAM policy 和授权来控制对 AWS CloudHSM 密钥存储中的 AWS KMS keys 的访问。我们建议您仅向用户、组和角色提供他们可能执行的任务所需的权限。
向 AWS CloudHSM 密钥存储管理员和用户授权
在设计您的 AWS CloudHSM 密钥存储时,请确保使用和管理它的主体仅具有其所需的权限。以下列表描述了 AWS CloudHSM 密钥存储管理员和用户所需的最低权限。
-
创建和管理 AWS CloudHSM 密钥存储的主体需要以下权限才能使用 AWS CloudHSM 密钥存储 API 操作。
-
cloudhsm:DescribeClusters
-
kms:CreateCustomKeyStore
-
kms:ConnectCustomKeyStore
-
kms:DeleteCustomKeyStore
-
kms:DescribeCustomKeyStores
-
kms:DisconnectCustomKeyStore
-
kms:UpdateCustomKeyStore
-
iam:CreateServiceLinkedRole
-
-
创建和管理与您的 AWS CloudHSM 密钥存储关联的 AWS CloudHSM 集群的主体需要创建和初始化 AWS CloudHSM 集群的权限。这包括创建或使用 Amazonn 虚拟私有云(VPC)、创建子网和创建 Amazon EC2 实例所需的权限。他们可能还需要创建和删除 HSM 以及管理备份。有关所需权限的列表,请参阅《AWS CloudHSM User Guide》中的 Identity and access management for AWS CloudHSM。
-
在您的 AWS CloudHSM 密钥存储中创建和管理 AWS KMS keys 的主体需要具有与在 AWS KMS 中创建和管理任何 KMS 密钥的人员相同的权限。AWS CloudHSM 密钥存储中的 KMS 密钥的默认密钥策略与 AWS KMS 中的 KMS 密钥的默认密钥策略相同。基于属性的访问权限控制(ABAC)使用标签和别名来控制对 KMS 密钥的访问,对 AWS CloudHSM 密钥存储中的 KMS 密钥也有效。
-
使用 AWS CloudHSM 密钥存储中的 KMS 密钥进行加密操作的主体需要使用 KMS 密钥执行加密操作的权限,如 kms:Decrypt。您可以在密钥策略或 IAM policy 中提供这些权限。但是,他们无需任何额外权限即可在 AWS CloudHSM 密钥存储中使用 KMS 密钥。
授权 AWS KMS 管理 AWS CloudHSM 和 Amazon EC2 资源
为了支持您的 AWS CloudHSM 密钥存储,AWS KMS 需要获取有关您的 AWS CloudHSM 集群的信息的权限。它还需要创建将您的 AWS CloudHSM 密钥存储连接到其 AWS CloudHSM 集群的网络基础设施的权限。要获得这些权限,AWS KMS 会在您的 AWS 账户 中创建 AWSServiceRoleForKeyManagementServiceCustomKeyStores 服务相关角色。创建 AWS CloudHSM 密钥存储的用户必须具有能让其创建服务相关角色的 iam:CreateServiceLinkedRole
权限。
关于 AWS KMS 服务相关角色
服务相关角色是一种 IAM 角色,该角色可向一个 AWS 服务提供代表您调用其他 AWS 服务的权限。该角色旨在使您能够更轻松地使用多项集成式 AWS 服务的功能,而无需创建和维护复杂的 IAM policy。有关更多信息,请参阅 将服务相关角色用于 AWS KMS。
对于 AWS CloudHSM 密钥存储,AWS KMS 使用 AWSKeyManagementServiceCustomKeyStoresServiceRolePolicy 策略创建 AWSServiceRoleForKeyManagementServiceCustomKeyStores 服务相关角色。此策略向该角色授予以下权限:
-
cloudhsm:Describe* – 检测连接到您的自定义密钥存储的 AWS CloudHSM 集群中的更改。
-
ec2:CreateSecurityGroup – 在连接 AWS CloudHSM 密钥存储以创建安全组时使用,该安全组能够实现 AWS KMS 和您的 AWS CloudHSM 集群间的网络流量。
-
ec2:AuthorizeSecurityGroupIngress – 在连接 AWS CloudHSM 密钥存储以允许网络从 AWS KMS 访问包含您 AWS CloudHSM 集群的 VPC 时使用。
-
ec2:CreateNetworkInterface – 在连接 AWS CloudHSM 密钥存储以创建用于 AWS KMS 和 AWS CloudHSM 集群间通信的网络接口时使用。
-
ec2:RevokeSecurityGroupEgress – 在连接 AWS CloudHSM 密钥存储以从 AWS KMS 创建的安全组中删除所有出站规则时使用。
-
ec2:DeleteSecurityGroup – 在断开 AWS CloudHSM 密钥存储连接以 删除连接 AWS CloudHSM 密钥存储时创建的安全组时使用。
-
ec2:DescribeSecurityGroups – 用于监控 AWS KMS 在包含您的 AWS CloudHSM 集群的 VPC 中创建的安全组中的更改,以便 AWS KMS 能在出现故障时提供明确清晰的错误消息。
-
ec2:DescribeVpcs – 用于监控包含您的 AWS CloudHSM 集群的 VPC 中的更改,以便 AWS KMS 能在出现故障时提供明确清晰的错误消息。
-
ec2:DescribeNetworkAcls – 用于监控包含您的 AWS CloudHSM 集群的 VPC 网络 ACL 中的更改,以便 AWS KMS 能在出现故障时提供明确清晰的错误消息。
-
ec2:DescribeNetworkInterfaces – 用于监控 AWS KMS 在包含您的 AWS CloudHSM 集群的 VPC 中创建的网络接口中的更改,以便 AWS KMS 能在出现故障时提供明确清晰的错误消息。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudhsm:Describe*", "ec2:CreateNetworkInterface", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2:DescribeSecurityGroups", "ec2:RevokeSecurityGroupEgress", "ec2:DeleteSecurityGroup", "ec2:DescribeVpcs", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaces" ], "Resource": "*" } ] }
由于 AWSServiceRoleForKeyManagementServiceCustomKeyStores 服务相关角色仅信任 cks.kms.amazonaws.com
,所以只有 AWS KMS 可以代入此服务相关角色。该角色受限于 AWS KMS 查看您的 AWS CloudHSM 集群并将 AWS CloudHSM 密钥存储连接到其关联 AWS CloudHSM 集群所需的操作。它不会向 AWS KMS 提供任何额外权限。例如,AWS KMS 无权创建、管理或删除您的 AWS CloudHSM 集群、HSM 或备份。
区域
与 AWS CloudHSM 密钥存储功能一样,AWSServiceRoleForKeyManagementServiceCustomKeyStores 角色在提供 AWS KMS 和 AWS CloudHSM 的所有 AWS 区域 中受到支持。有关每项服务支持的 AWS 区域 的列表,请参阅《Amazon Web Services 一般参考》中的 AWS Key Management Service Endpoints and Quotas 和 AWS CloudHSM endpoints and quotas。
有关 AWS 服务如何使用服务相关角色的更多信息,请参阅《IAM 用户指南》中的使用服务相关角色。
创建服务相关角色
如果 AWSServiceRoleForKeyManagementServiceCustomKeyStores 服务相关角色尚不存在,当您创建 AWS CloudHSM 密钥存储时,AWS KMS 会在您的 AWS 账户 中自动创建该角色。您无法直接创建或重新创建此服务相关角色。
编辑服务相关角色描述
您无法在 AWSServiceRoleForKeyManagementServiceCustomKeyStores 服务相关角色中编辑角色名称或策略语句,但可以编辑角色描述。有关说明,请参阅《IAM 用户指南》中的编辑服务相关角色。
删除服务相关角色
即使您已经删除了所有 AWS CloudHSM 密钥存储,AWS KMS 也不会从您的 AWS 账户 删除 AWSServiceRoleForKeyManagementServiceCustomKeyStores 服务相关角色。尽管目前没有删除 AWSServiceRoleForKeyManagementServiceCustomKeyStores 服务相关角色的过程,但是 AWS KMS 不会代入此角色或使用其权限,除非您有活动的 AWS CloudHSM 密钥存储。