首页 > 解决方案 > UpdateItem - 访问被拒绝

问题描述

编辑:

我将前导键从 userId 更新为 sub,每个 AWS 文档应该与登录用户的 userID 匹配,即${cognito-identity.amazonaws.com:sub}它仍然不起作用

我通过 MobileHub 设置了一个 DynamoDB 表,直到今天我删除了我的 Cognito 池并创建了一个新池时,我一直能够在上面放置项目。有问题的表格是 HighScore。UserDetails 表不受影响

我能够进行身份验证并获取需要“身份验证”访问的资源,但由于某种原因,尝试 PutItem 时访问被拒绝。

错误是:

错误域=com.amazonaws.AWSServiceErrorDomain Code=6 "(null)" UserInfo={__type=com.amazon.coral.service#AccessDeniedException, Message=User: arn:aws:sts::123456789012:assumed-role/appName_auth_MOBILEHUB_AppId/ CognitoIdentityCredentials 无权执行:dynamodb:UpdateItem on resource:arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-HighScore}

这是我的 IAM 政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:ListTables",
                "dynamodb:Query",
                "dynamodb:Scan"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-HighScore",
                "arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-UserDetails"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchWriteItem",
                "dynamodb:DeleteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-HighScore",
                "arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-UserDetails"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": [
                        "${cognito-identity.amazonaws.com:sub}"
                    ]
                }
            }
        }
    ]
}

标签: amazon-web-servicesamazon-dynamodbamazon-iamaws-mobilehub

解决方案


这里似乎有一个细粒度访问控制的错误,因为删除条件语句(即使在更改它以匹配表的键之后)解决了这个问题。


推荐阅读