【发布时间】:2016-12-08 11:23:15
【问题描述】:
使用 Cognito 用户池登录时,我无法理解如何在 DynamoDB 上使用细粒度访问控制。我已经按照文档和谷歌搜索,但由于某种原因,我似乎无法让它工作。
下面列出了我的 AWS 设置。如果我删除角色策略中的条件,我可以获取和放置项目没有问题,因此条件很可能是问题所在。但我不知道如何或在何处调试依赖于经过身份验证的身份的策略 - 哪些变量可用,它们的值是什么等等。
任何帮助将不胜感激!
DynamoDB 表
- 表名:文档
- 主分区键:用户 ID(字符串)
- 主排序键:docID(字符串)
DynamoDB 示例行
{
"attributes": {},
"docID": "0f332745-f749-4b1a-b26d-4593959e9847",
"lastModifiedNumeric": 1470175027561,
"lastModifiedText": "Wed Aug 03 2016 07:57:07 GMT+1000 (AEST)",
"type": "documents",
"userID": "4fbf0c06-03a9-4cbe-b45c-ca4cd0f5f3cb"
}
Cognito 用户池用户
- 用户状态:启用/确认
- MFA 状态:已禁用
- 子:4fbf0c06-03a9-4cbe-b45c-ca4cd0f5f3cb
- email_verified: true
“角色名称”的角色政策
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem"
],
"Resource": [
"arn:aws:dynamodb:ap-southeast-2:NUMBER:table/documents"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${cognito-identity.amazonaws.com:sub}"
]
}
}
}
]
}
cognitoUser.getUserAttributes()返回的登录信息
attribute sub has value 4fbf0c06-03a9-4cbe-b45c-ca4cd0f5f3cb
attribute email_verified has value true
attribute email has value ****@****com
错误信息
Code: "AccessDeniedException"
Message: User: arn:aws:sts::NUMBER:assumed-role/ROLE_NAME/CognitoIdentityCredentials is not authorized to perform: dynamodb:GetItem on resource: arn:aws:dynamodb:ap-southeast-2:NUMBER:table/documents
【问题讨论】:
标签: amazon-web-services amazon-dynamodb amazon-iam amazon-cognito