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

Ind*_*Dan 5 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"
            }
        }
    }
]}
Run Code Online (Sandbox Code Playgroud)

因此,我的主要要求是通过cognito在IAM策略中获取自定义用户池属性。那怎么可能?

Vas*_*kis 2

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

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

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

  • 有更新吗?目前看来不可能满足@dan 的要求。通过认知组和组特定角色的硬限制为 25。通过自定义属性和基于规则的角色分配的软限制为 25。这两个限制都表明,这两种方法对于 1000 个甚至 10000 个组织/范围内的组织都不可行。组。 (7认同)