如何授予对 DynamoDB 表的访问权限?

Posted

技术标签:

【中文标题】如何授予对 DynamoDB 表的访问权限?【英文标题】:How to give access to a DynamoDB table? 【发布时间】:2018-06-10 00:41:21 【问题描述】:

在 IAM 中,我尝试为用户创建以下策略(arn 中的帐户 ID 已混淆):


 "Version": "2012-10-17",
 "Statement": [
    
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": "dynamodb:*",
        "Resource": "arn:aws:dynamodb:us-west-2:999999999999:table/busUsers"
    
 ]

但是,结果是:

此策略定义了一些不提供权限的操作、资源或条件。要授予访问权限,策略必须具有具有适用资源或条件的操作。详情请选择显示剩余Learn more

Show remaining 显示:

一个或多个操作没有适用的资源。

我查看了Learn more 链接,它说用* 替换Resource 元素中的arn。我现在很困惑。 * 是什么意思?我想授予对我的特定 DynamoDB 表的访问权限。如何指定?


编辑:我删除了所有 DyanamoDB 操作,只选择了一个 GetItem,它是:

当我取消选择 GetItem 时,两条错误消息都会消失。 当我选择 table Any 时,第一条错误消息消失。 当我选择 Resource Any 时,第二条错误消息消失。

【问题讨论】:

【参考方案1】:

这是因为您将所有 dynamodb 操作授予表资源的权限,但并非所有这些操作实际上都适用于表。

例如 dynamodb:DescribeStream 不适用于表,仅适用于流,但您无论如何都授予此资源的权限。

您可以放心地忽略此警告。

编辑:您可能没有意识到只需单击“保存策略”即可正常工作。

编辑:感谢您发布您的屏幕截图。这里没有错误,只有警告,在这种情况下,最好将其称为提示。

当您手动输入资源的 ARN 时,AWS 似乎无法识别它是什么类型的资源(即表格)。如果您通过表 ARN 生成器添加资源,则不会出现任何警告。无论哪种情况,您最终都会得到相同的政策。

【讨论】:

我没有选择所有动作(*),而是尝试一一选择。但是,我选择的每一个,例如GetItem,都会导致One or more actions may not support this resource. 我的资源字段值与我原来的问题一样。 (如果我不使用特定资源 arn 而是使用任何 type=table 的资源,则不会出现警告。)我的资源 arn 是否指定了一个 DynamoDB 表并且应该支持其中的 GetItem 您能否发布可视化编辑器的屏幕截图和策略的 json? 已添加。感谢您的帮助。 您能否详细解释一下“手动输入资源的 ARN”与“通过表 ARN 生成器添加资源”的含义 - 我不太清楚您的意思一。谢谢!【参考方案2】:

您可能遇到了 IAM 策略可视化编辑器本身的错误 [由亚马逊员工 rob@AWS 讨论](因此没有遇到任何实际问题): https://forums.aws.amazon.com/thread.jspa?threadID=282453

当我缓解了我的个人问题(这让我首先看到了这个问题)时,我的类似警告仍然存在(即使我的问题被其他东西解决了)——这让我相信我的类似经历可视化编辑器可能确实是那个错误(根本没有导致/涉及我之前的问题)。

【讨论】:

以上是关于如何授予对 DynamoDB 表的访问权限?的主要内容,如果未能解决你的问题,请参考以下文章

授予对 Postgres 中所有表的访问权限

PostgreSQL 授予对表的访问权限

限制对 Redshift 表的访问,仅授予对视图的访问权限

ClickHouse 仅授予用户对数据库中几个表的访问权限

是否有 UI 可以授予对 VS2013 数据库项目中角色的访问权限

Postgres:为不同角色/用户创建的未来表授予对角色/用户的访问权限