Проблема политики AWS IAM для доступа к таблице DynamoDB аутентифицированными пользователями Cognito - PullRequest
0 голосов
/ 28 января 2019

У меня проблема с доступом к новой таблице DynamoDB через успешно аутентифицированного пользователя Cognito.

При попытке сканирования таблицы (с использованием AWS JavaScript SDK) я получаю следующее AccessDeniedException:

Unable to scan. Error: {
  "message": "User: arn:aws:sts::MY-ACCOUNT-NUM:assumed-role/Cognito_VODStreamTestAuth_Role/CognitoIdentityCredentials 
is not authorized to perform: dynamodb:Scan on resource: arn:aws:dynamodb:us-east-1:MY-ACCOUNT-NUM:table/VideoCatalog",
  "code": "AccessDeniedException",
  "time": "2019-01-27T02:25:27.686Z",
  "requestId": "blahblah",
  "statusCode": 400,
  "retryable": false,
  "retryDelay": 18.559011800834146
}

Аутентифицированная политика пользователя Cognito была расширена следующим разделом DynamoDB:

{
  "Sid": "AllowedCatalogActions",
  "Effect": "Allow",
  "Action": [
     "dynamodb:BatchGetItem",
     "dynamodb:GetItem",
     "dynamodb:Scan",
     "dynamodb:Query",
     "dynamodb:UpdateItem"
  ],
  "Resource": [
     "arn:aws:dynamodb:us-east-2:MY-ACCOUNT-NUM:table/VideoCatalog"
  ]
}

Разве этого недостаточно, чтобы предоставить моим аутентифицированным пользователям Cognito доступ к любой таблице DynamoDB, которую я мог бы создать,пока я указываю ресурс таблицы, как я делаю выше?Или мне также нужно добавить "Детальный контроль доступа" на вкладке "Контроль доступа" таблицы?

Могу сказать, что я создал VideoCatalog DynamoDBтаблица под моей ролью администратора IAM без полномочий root (представлена ​​выше как MY-ACCOUNT-NUM).Это проблема?(До того, как перейти к таблице DynamoDB, я использовал файл JSON на S3 в качестве каталога видео.)

IAM confused!

1 Ответ

0 голосов
/ 28 января 2019

Глядя на сообщение об ошибке от AWS и предоставленный вами документ политики, я вижу, что здесь есть два разных региона.

AWS говорит, что у вашего пользователя нет доступа к aws: Dynamodb: us-east-1 : MY-ACCOUNT-NUM: table / VideoCatalog, в то время как ваш программный документ предоставляет доступ к aws: Dynamodb: us-east-2 : MY-ACCOUNT-NUM: таблица / VideoCatalog.

Возможно, вы по ошибке предоставляете свои ресурсы в двух разных регионах?

...