我有一个带有自定义属性organisation_id的Cognito用户池。 一个组织可能有多个用户。可以有多个组织。 另一个Dynamodb表用于维护具有_id和organisation_id作为分区键的类别。 类别可以由组织拥有,以便属于该特定组织的用户仅在这些类别中执行某些操作。
现在,我如何创建IAM策略,使其取代organisation_id而不是sub / user_id,如此处所述 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAccessToOnlyItemsMatchingUserID",
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:BatchGetItem",
"dynamodb:Query",
"dynamodb:PutItem",
"dynamodb:UpdateItem",
"dynamodb:DeleteItem",
"dynamodb:BatchWriteItem"
],
"Resource": [
"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${cognito:organisation_id(?)}"
],
"dynamodb:Attributes": [
"UserId",
"GameTitle",
"Wins",
"Losses",
"TopScore",
"TopScoreDateTime"
]
},
"StringEqualsIfExists": {
"dynamodb:Select": "SPECIFIC_ATTRIBUTES"
}
}
}
]}
所以我的主要要求是通过cognito在IAM策略中获取自定义用户池属性。怎么可能?
答案 0 :(得分:1)
这是不可能的。这将要求IAM角色能够从任何cognito用户池中识别自定义属性。这是一个有趣的功能,将与团队讨论。
但是,作为替代方案,您可以查看Cognito身份和角色基本访问控制
http://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html