使用 IAM 控制对 EBS direct API 的访问权限 - Amazon EBS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 IAM 控制对 EBS direct API 的访问权限

用户必须具有以下策略才能使用 EBS direct API。有关更多信息,请参阅更改用户权限

有关 EBS 直接 API 资源、操作和用于 IAM 权限策略中的条件上下文键的更多信息,请参阅服务授权参考中的 Amazon Elastic Block Store 的操作、资源和条件键

重要

向 用户分配以下策略时请小心谨慎。通过分配这些策略,您可以向通过 Amazon EC2 API(例如 CopySnapshot 或 CreateVolume 操作)拒绝其访问同一资源的用户授予访问权限。

以下策略允许对指定 Amazon 区域中的所有快照使用读取 EBS direct API。在该策略中,将 <Region> 替换为快照的区域。

以下策略允许在对具有特定键/值标记的快照使用读取 EBS direct API。在策略中,将 <Key> 替换为标签的键值,并将 <Value> 替换为标签的值。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:ListSnapshotBlocks", "ebs:ListChangedBlocks", "ebs:GetSnapshotBlock" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/<Key>": "<Value>" } } } ] }

以下策略允许仅对账户中特定时间范围内的所有快照使用读取 EBS direct API。此策略授权基于 aws:CurrentTime 全局条件键使用 EBS direct API。在策略中,请务必将显示的日期和时间范围替换为适用于您的策略的日期和时间范围。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:ListSnapshotBlocks", "ebs:ListChangedBlocks", "ebs:GetSnapshotBlock" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "DateGreaterThan": { "aws:CurrentTime": "2018-05-29T00:00:00Z" }, "DateLessThan": { "aws:CurrentTime": "2020-05-29T23:59:59Z" } } } ] }

有关更多信息,请参阅《IAM 用户指南》中的更改用户权限

以下策略允许对指定 Amazon 区域中的所有快照使用写入 EBS direct API。在该策略中,将 <Region> 替换为快照的区域。

以下策略允许在对具有特定键/值标记的快照使用写入 EBS direct API。在策略中,将 <Key> 替换为标签的键值,并将 <Value> 替换为标签的值。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:StartSnapshot", "ebs:PutSnapshotBlock", "ebs:CompleteSnapshot" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/<Key>": "<Value>" } } } ] }

以下策略允许使用所有 EBS direct API。只有在指定了父快照 ID 时,它才允许执行 StartSnapshot 操作。因此,此策略会阻止在不使用父快照的情况下开始新快照的功能。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ebs:*", "Resource": "*", "Condition": { "StringEquals": { "ebs:ParentSnapshot": "arn:aws:ec2:*::snapshot/*" } } } ] }

以下策略允许使用所有 EBS direct API。它还允许只为新快照创建 user 标签键。此策略还确保用户有权创建标签。StartSnapshot 操作是唯一可以指定标签的操作。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ebs:*", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": "user" } } }, { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

以下策略允许仅对账户中特定时间范围内的所有快照使用写入 EBS direct API。此策略授权基于 aws:CurrentTime 全局条件键使用 EBS direct API。在策略中,请务必将显示的日期和时间范围替换为适用于您的策略的日期和时间范围。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ebs:StartSnapshot", "ebs:PutSnapshotBlock", "ebs:CompleteSnapshot" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "DateGreaterThan": { "aws:CurrentTime": "2018-05-29T00:00:00Z" }, "DateLessThan": { "aws:CurrentTime": "2020-05-29T23:59:59Z" } } } ] }

有关更多信息,请参阅《IAM 用户指南》中的更改用户权限

以下策略授予使用特定 KMS 密钥解密已加密快照的权限。该策略还授予使用 EBS 加密的默认 KMS 密钥来加密新快照的权限。在策略中,将 <Region> 替换为 KMS 密钥的区域,将 <AccountId> 替换为 KMS 密钥的 Amazon 账户 ID,并将 <KeyId> 替换为 KMS 密钥 ID。

注意

默认情况下,账户中的所有主体都可以访问用于 Amazon EBS 加密的默认 Amazon 托管式 KMS 密钥,并可将其用于 EBS 加密和解密操作。如果您使用的是客户托管式密钥,则必须创建新的密钥策略或修改客户托管式密钥的现有密钥策略,以便授予主体对客户托管式密钥的访问权限。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的在 Amazon KMS 中使用密钥策略

提示

为遵循最小特权原则,请不要允许对 kms:CreateGrant 拥有完全访问权限。而是仅当 Amazon 服务代表用户创建授权时,才使用 kms:GrantIsForAWSResource 条件键以允许用户在 KMS 密钥上创建授权,如以下示例所示。

有关更多信息,请参阅《IAM 用户指南》中的更改用户权限