UpdateItem - 访问被拒绝
UpdateItem - access denied
编辑:
我将 leadingkey 从 userId 更新为 sub,根据 AWS 文档,它应该与登录用户的 userID 匹配,即 ${cognito-identity.amazonaws.com:sub}
但它仍然不起作用
我有一个 DynamoDB table 通过 MobileHub 设置,直到今天我删除了我的 Cognito 池并创建了一个新的,我才能够在上面放置项目。有问题的 table 是 HighScore。 UserDetails table 不受影响
我能够进行身份验证并获取需要 "auth" 访问权限的资源,但由于某种原因,在尝试 PutItem 时访问被拒绝。
错误是:
Error Domain=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
is not authorized to perform: 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}"
]
}
}
}
]
}
这里似乎存在细粒度访问控制的错误,因为删除条件语句(即使在更改它使其与 table 的密钥匹配之后)解决了问题。
编辑:
我将 leadingkey 从 userId 更新为 sub,根据 AWS 文档,它应该与登录用户的 userID 匹配,即 ${cognito-identity.amazonaws.com:sub}
但它仍然不起作用
我有一个 DynamoDB table 通过 MobileHub 设置,直到今天我删除了我的 Cognito 池并创建了一个新的,我才能够在上面放置项目。有问题的 table 是 HighScore。 UserDetails table 不受影响
我能够进行身份验证并获取需要 "auth" 访问权限的资源,但由于某种原因,在尝试 PutItem 时访问被拒绝。
错误是:
Error Domain=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 is not authorized to perform: 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}"
]
}
}
}
]
}
这里似乎存在细粒度访问控制的错误,因为删除条件语句(即使在更改它使其与 table 的密钥匹配之后)解决了问题。