IAM策略条件中的cognito用户池自定义属性与Dynamodb细粒度访问

时间:2017-04-20 09:21:51

标签: amazon-web-services amazon-dynamodb amazon-iam amazon-cognito

我有一个带有自定义属性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策略中获取自定义用户池属性。怎么可能?

1 个答案:

答案 0 :(得分:1)

这是不可能的。这将要求IAM角色能够从任何cognito用户池中识别自定义属性。这是一个有趣的功能,将与团队讨论。

但是,作为替代方案,您可以查看Cognito身份和角色基本访问控制

http://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html