

# 将基于身份的策略与 Amazon DynamoDB 结合使用
<a name="using-identity-based-policies"></a>

该主题涵盖了将基于身份的 Amazon Identity and Access Management（IAM）策略与 Amazon DynamoDB 结合使用并提供了示例。示例说明账户管理员如何将权限策略附加到 IAM 身份（即用户、组和角色），从而授予对 Amazon DynamoDB 资源执行操作的权限。

本主题的各个部分涵盖以下内容：
+ [使用 Amazon DynamoDB 控制台所需的 IAM 权限](#console-permissions)
+ [适用于 Amazon DynamoDB 的 Amazon 托管式（预定义）IAM 策略](#access-policy-examples-aws-managed)
+ [客户管理型策略示例](#access-policy-examples-for-sdk-cli)



下面是权限策略的示例。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeQueryScanBooksTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:Query",
                "dynamodb:Scan"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Books"
        }
    ]
}
```

------

 该策略有一条语句用于为针对 `us-west-2` Amazon 区域中的某个表（由 `account-id` 指定的 Amazon 账户所有）的三项 DynamoDB 操作（`dynamodb:DescribeTable`、`dynamodb:Query` 和 `dynamodb:Scan`)）授予权限。`Resource` 值中的 *Amazon 资源名称（ARN）*指定了要应用权限的表。

## 使用 Amazon DynamoDB 控制台所需的 IAM 权限
<a name="console-permissions"></a>

要使用 DynamoDB 控制台，用户必须拥有一组最低权限来允许他们使用 Amazon 账户中的 DynamoDB 资源。除这些 DynamoDB 权限以外，控制台还需要权限：
+ 显示指标和图形的 Amazon CloudWatch 权限。
+ Amazon Data Pipeline导出和导入 DynamoDB 数据的 权限。
+  Amazon Identity and Access Management访问导出和导入所需角色的 权限。
+ 每当触发 CloudWatch 警报时通知您的 Amazon Simple Notification Service 权限。
+ Amazon Lambda处理 DynamoDB Streams 记录的 权限。

如果创建比必需的最低权限更为严格的 IAM 策略，对于附加了该 IAM 策略的用户， 控制台将无法按预期正常运行。为确保这些用户仍可使用 DynamoDB 控制台，也可向用户附加 `AmazonDynamoDBReadOnlyAccess` Amazon 托管策略，如 [适用于 Amazon DynamoDB 的 Amazon 托管式（预定义）IAM 策略](#access-policy-examples-aws-managed) 中所述。

对于只需要调用 Amazon CLI 或 Amazon DynamoDB API 的用户，您无需为其提供最低控制台权限。

**注意**  
 如果涉及 VPC 端点，您还需要授权 DescribeEndpoints API 调用，以通过 IAM 操作 (dynamodb:DescribeEndpoints) 请求 IAM 主体。有关更多信息，请参阅 [端点所需的策略](inter-network-traffic-privacy.md#inter-network-traffic-DescribeEndpoints)。

## 适用于 Amazon DynamoDB 的 Amazon 托管式（预定义）IAM 策略
<a name="access-policy-examples-aws-managed"></a>

Amazon 通过提供由 Amazon 创建和管理的独立 IAM 策略来满足许多常用案例的要求。这些 Amazon 托管策略可针对常用案例授予必要的权限，使您不必调查所需权限。有关更多信息，请参阅 *IAM 用户指南*中的 [Amazon 托管策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

下面的 Amazon 托管式策略可附加到您账户中的用户，这些托管式策略特定于 DynamoDB 并且按使用案例场景进行分组：
+ **AmazonDynamoDBReadOnlyAccess** – 通过 Amazon Web Services 管理控制台授予对 DynamoDB 资源的只读访问权限。
+ **AmazonDynamoDBFullAccess** – 通过 Amazon Web Services 管理控制台授予对 DynamoDB 资源的完全访问权限。

您可以通过登录到 IAM 控制台并在该控制台中搜索特定策略来查看这些 Amazon 托管权限策略。

**重要**  
最佳实践是创建自定义 IAM 策略，从而向有需要的用户、角色或组授予[最低权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。

## 客户管理型策略示例
<a name="access-policy-examples-for-sdk-cli"></a>

本节的用户策略示例介绍如何授予各 DynamoDB 操作权限的策略示例。当您使用 Amazon SDK 或 Amazon CLI 时，可以使用这些策略。当您使用控制台时，您需要授予特定于控制台的其他权限。有关更多信息，请参阅 [使用 Amazon DynamoDB 控制台所需的 IAM 权限](#console-permissions)。

**注意**  
以下所有策略示例都使用一个 Amazon 区域并包含虚构的账户 ID 和表名。

示例：
+ [用于向表上的所有 DynamoDB 操作授予权限的 IAM 策略](grant-permissions-to-any-action-on-table.md)
+ [用于授予对 DynamoDB 表中项目的只读权限的 IAM 策略](read-only-permissions-on-table-items.md)
+ [用于授予对特定 DynamoDB 表及其索引的访问权限的 IAM 策略](iam-policy-specific-table-indexes.md)
+ [用于对 DynamoDB 表进行读取、写入、更新和删除访问的 IAM 策略](iam-policy-example-data-crud.md)
+ [用于在同一 Amazon 账户中隔离 DynamoDB 环境的 IAM 策略](iam-policy-separate-environments.md)
+ [用于防止购买 DynamoDB 预留容量的 IAM 策略](iam-prevent-purchase-reserved-capacity.md)
+ [仅授予 DynamoDB 流的读取访问权限的 IAM 策略（不适用于表）](iam-policy-read-stream-only.md)
+ [允许 Amazon Lambda 函数访问 DynamoDB 流记录的 IAM 策略](iam-policy-example-lamda-process-dynamodb-streams.md)
+ [用于对 DynamoDB Accelerator（DAX）集群进行读写访问的 IAM 策略](iam-policy-example-read-write-dax-access.md)

 *IAM 用户指南*，包含[另外三个 DynamoDB 示例](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_examples.html)：
+ [Amazon DynamoDB：允许访问特定的表](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html)
+ [Amazon DynamoDB：允许访问特定的列](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_examples_dynamodb_columns.html)
+ [Amazon DynamoDB：允许基于 Amazon Cognito ID 对 DynamoDB 进行行级别访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_examples_dynamodb_rows.html)