允许访问特定表的 DynamoDB 控制台的 IAM 策略

IAM policy to allow access to DynamoDB console for specific tables

是否可以创建一个 AWS IAM 策略,只为特定表提供对 DynamoDB 控制台的访问权限?我试过:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt0000000001",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:ListTables",
                <other actions>
            ], 
            "Effect": "Allow",
            "Resource": [
                "arn:aws:dynamodb:<region>:<account>:table/FooTable",
                "arn:aws:dynamodb:<region>:<account>:table/BarTable"
            ]
        }
    ]
}

但对于附加了此策略的用户,DynamoDB 表列表显示 Not Authorized(与未附加策略时一样)。

"Resource" 设置为 "*" 并添加如下所示的新语句让用户在 FooTableBarTable 上执行 <other actions>,但他们也可以查看表格列表中的所有其他表格。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt0000000001",
            "Action": [
                <other actions>
            ], 
            "Effect": "Allow",
            "Resource": [
                "arn:aws:dynamodb:<region>:<account>:table/FooTable",
                "arn:aws:dynamodb:<region>:<account>:table/BarTable"
            ]
        },
        {
            "Sid": "Stmt0000000002",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:ListTables"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

抱歉告诉你坏消息,AWS 管理控制台需要对整个 DynamoDB 的 DescribeTableListTables 权限才能正常运行。

但是,有一个小的解决方法...您可以为控制台用户提供一个 URL,将他们直接带到 table,并且可以正常查看和添加项目等。

只需从具有正确权限的用户处复制 URL,例如:

https://REGION.console.aws.amazon.com/dynamodb/home?region=REGION#explore:name=TABLE-NAME

我发现除了 DynamoDB,users need to have wildcard permissions for CloudWatch and SNS. (Consider "Example 5: Set Up Permissions Policies for Separate Test and Production Environments").

您可以将 AmazonDynamoDBReadOnlyAccess 添加到您的预定义策略中。