将基于身份的策略与 Amazon DynamoDB 结合使用 - Amazon DynamoDB

将基于身份的策略与 Amazon DynamoDB 结合使用

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

本主题的各个部分涵盖以下内容:

下面是权限策略的示例。

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

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

使用 Amazon DynamoDB 控制台所需的 IAM 权限

要使用 DynamoDB 控制台,用户必须拥有一组最低权限来允许他们使用 AWS 账户中的 DynamoDB 资源。除这些 DynamoDB 权限以外,控制台还需要权限:

  • 显示指标和图形的 Amazon CloudWatch 权限。

  • 导出和导入 DynamoDB 数据的 AWS Data Pipeline 权限。

  • 访问导出和导入所需角色的 AWS Identity and Access Management 权限。

  • 每当触发 CloudWatch 警报时通知您的 Amazon Simple Notification Service 权限。

  • 处理 DynamoDB Streams 记录的 AWS Lambda 权限。

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

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

注意

如果涉及 VPC 端点,您还需要授权 DescribeEndpoints API 调用,以通过 IAM 操作 (dynamodb:DescribeEndpoints) 请求 IAM 主体。有关更多信息,请参阅端点所需的策略

适用于 Amazon DynamoDB 的 AWS 托管式(预定义)IAM 策略

AWS 通过提供由 AWS 创建和管理的独立 IAM 策略来满足许多常用案例的要求。这些 AWS 托管策略可针对常用案例授予必要的权限,使您不必调查所需权限。有关更多信息,请参阅 IAM 用户指南中的 AWS 托管策略

下面的 AWS 托管式策略可附加到您账户中的用户,这些托管式策略特定于 DynamoDB 并且按使用案例场景进行分组:

  • AmazonDynamoDBReadOnlyAccess – 通过 AWS Management Console授予对 DynamoDB 资源的只读访问权限。

  • AmazonDynamoDBFullAccess – 通过 AWS Management Console授予对 DynamoDB 资源的完全访问权限。

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

重要

最佳实践是创建自定义 IAM 策略,从而向有需要的用户、角色或组授予最低权限

客户管理型策略示例

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

注意

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

示例:

IAM 用户指南,包含另外三个 DynamoDB 示例