UpdateItem - 访问被拒绝

时间:2018-06-12 23:28:40

标签: amazon-web-services amazon-dynamodb amazon-iam aws-mobilehub

编辑:

我将来自userId的前导密钥更新为sub,其中每个AWS文档应该与已登录用户中的用户ID匹配,即${cognito-identity.amazonaws.com:sub},但它仍然不起作用

我通过MobileHub设置了DynamoDB表,并且我已经能够使用PutItems直到今天我删除了我的Cognito Pool并制作了一个新的。有问题的表格是HighScore。 UserDetails表不受影响

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

错误是:

  

错误Domain = com.amazonaws.AWSServiceErrorDomain Code = 6“(null)”   的UserInfo = {__类型= com.amazon.coral.service#AccessDeniedException异常,   消息=用户:   阿尔恩:AWS:STS :: 123456789012:假设角色/ appName_auth_MOBILEHUB_AppId / CognitoIdentityCredentials   无权执行:dynamodb:资源上的UpdateItem:   ARN:AWS:dynamodb:US-西-1:123456789012:表/ APPNAME-mobilehub-APPID-高分}

这是我的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}"
                    ]
                }
            }
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

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