

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

# 使用 IAM 控制对 EBS direct API 的访问权限
<a name="ebsapi-permissions"></a>

用户必须具有以下策略才能使用 EBS direct API。有关更多信息，请参阅[更改用户权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。

有关 EBS 直接 API 资源、操作和用于 IAM 权限策略中的条件上下文键的更多信息，请参阅*服务授权参考*中的 [Amazon Elastic Block Store 的操作、资源和条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticblockstore.html)。

**重要**  
向 用户分配以下策略时请小心谨慎。通过分配这些策略，您可以向被拒绝通过 Amazon EC2 API（例如 CopySnapshot 或 CreateVolume 操作）访问相同资源的用户授予访问权限。

## 读取快照的权限
<a name="ebsapi-read-permissions"></a>

以下策略允许将*读取 * EBS 直接 API 用于特定 AWS 区域中的所有快照。在策略中，{{<Region>}}替换为快照区域。

以下策略允许在对具有特定键/值标记的快照使用*读取* EBS 直接 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 直接 API。此策略授权基于 `aws:CurrentTime` 全局条件键使用 EBS 直接 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 用户指南》**中的[更改用户权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。

## 写入快照的权限
<a name="ebsapi-write-permissions"></a>

以下策略允许在特定 AWS 区域的所有快照上使用*写入 * EBS 直接 API。在策略中，{{<Region>}}替换为快照区域。

以下策略允许在对具有特定键/值标记的快照使用*写入* EBS 直接 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 直接 API。此策略授权基于 `aws:CurrentTime` 全局条件键使用 EBS 直接 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 用户指南》**中的[更改用户权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。

## 使用权限 AWS KMS keys
<a name="ebsapi-kms-permissions"></a>

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

**注意**  
默认情况下，账户中的所有委托人都有权访问用于 Amazon EBS 加密的默认 AWS 托管 KMS 密钥，他们可以将其用于 EBS 加密和解密操作。如果您使用的是客户托管式密钥，则必须创建新的密钥策略或修改客户托管式密钥的现有密钥策略，以便授予主体对客户托管式密钥的访问权限。有关更多信息，请参阅《*AWS Key Management Service 开发人员指南*》中的[在 AWS KMS中使用密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

**提示**  
为遵循最小特权原则，请不要允许对 `kms:CreateGrant` 拥有完全访问权限。相反，使用`kms:GrantIsForAWSResource`条件密钥允许用户仅在 AWS 服务代表用户创建授权时使用 KMS 密钥创建授权，如以下示例所示。

有关更多信息，请参阅《IAM 用户指南》**中的[更改用户权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。