UpdateItem - доступ запрещен

РЕДАКТИРОВАТЬ:

Я обновил ведущий ключ с userId на sub, который, согласно документации AWS, должен соответствовать идентификатору пользователя, вошедшему в систему, т.е. ${cognito-identity.amazonaws.com:sub}, и он по-прежнему не работает

У меня есть настройка таблицы DynamoDB через MobileHub, и я мог размещать на ней элементы до сегодняшнего дня, когда я удалил свой пул Cognito и создал новый. Речь идет о таблице HighScore. Таблица UserDetails не изменяется

Я могу аутентифицироваться и получать ресурсы, требующие доступа "auth", но по какой-то причине доступ запрещен при попытке PutItem.

Ошибка:

Домен ошибки = com.amazonaws.AWSServiceErrorDomain Code = 6 "(null)" UserInfo = {__ type = com.amazon.coral.service # AccessDeniedException, Message = User: arn: aws: sts :: 123456789012: Предполагаемая роль / appName_auth_MOBILEHUB_AppId CognitoIdentityCredentials не авторизован для выполнения: Dynamodb: UpdateItem на ресурсе: 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}"
                    ]
                }
            }
        }
    ]
}

person froggomad    schedule 12.06.2018    source источник


Ответы (1)


Кажется, здесь есть ошибка с детальным контролем доступа, поскольку удаление оператора условия (даже после его изменения, чтобы оно соответствовало ключу таблицы) решило проблему.

person froggomad    schedule 16.06.2018
comment
Вы решили эту проблему? - person Shai; 17.06.2021
comment
Не совсем, я удалил условие, и оно сработало, но было бы неплохо иметь детальный контроль доступа. - person froggomad; 23.06.2021