UpdateItem - доступ запрещен - PullRequest
0 голосов
/ 13 июня 2018

EDIT:

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

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

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

Ошибка:

Ошибка домена = com.amazonaws.AWSServiceErrorDomain Code = 6 "(null)" UserInfo = {__ type = com.amazon.coral.service # AccessDeniedException, сообщение = пользователь: arn: aws: sts ::123456789012: предполагаемая роль / appName_auth_MOBILEHUB_AppId / CognitoIdentityCredentials не авторизована для выполнения: dynamicodb: UpdateItem на ресурсе: arn: aws: Dynamodb: us-west-1: 123456789012: таблица / appName-mobilehub-appId 1013 * 1014 High High}}*

Вот моя политика 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}"
                    ]
                }
            }
        }
    ]
}

1 Ответ

0 голосов
/ 16 июня 2018

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

...