Предоставьте одной роли IAM доступ к большому количеству таблиц DynamoDB - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть приложение AppSyn c, определенное с использованием основного стека CloudFormation и более десятка вложенных стеков. Каждый вложенный стек определяет таблицу DynamoDB, источник данных AppSyn c для этой таблицы и роль IAM для этого источника данных для доступа к этой таблице. Источник данных зависит от роли, которая зависит от таблицы.

Я хотел бы объединить эти роли IAM по трем причинам:

  • Определения ролей являются очень повторяющимися и стандартными. y.
  • Существует много копий этого приложения, и оно добавляет множество ролей IAM - достаточно, чтобы мы работали близко к мягким пределам.
  • Некоторые преобразователи используют пакет DynamoDB операции для доступа к нескольким таблицам, поэтому, по крайней мере, некоторые роли IAM должны в любом случае предоставлять доступ к нескольким таблицам.

Я не хочу предоставлять полный доступ к ролям всем таблицам DynamoDB в учетной записи.

Самый простой способ предоставить одной роли доступ к каждой требуемой таблице - это перечислить их вручную в документе политики. Это имеет очевидный недостаток, заключающийся в том, что при добавлении новых таблиц политика должна быть вручную синхронизирована c. Однако есть и проблема зависимости: источник данных во вложенном стеке зависит от роли в главном стеке, которая зависит от таблиц во вложенных стеках.

Я бы хотел использовать теги: grant для всех Таблицы DynamoDB, которые имеют определенный тег, затем установите этот тег для каждой таблицы. Таким образом, роль IAM не нужно будет редактировать при добавлении новой таблицы. Но, по-видимому, DynamoDB не поддерживает условия на основе тегов .

Существует ли простой способ предоставления доступа к одной роли IAM многим таблицам DynamoDB без предоставления доступа ко всем DynamoDB и без индивидуального перечисления таблицы в роли?

1 Ответ

2 голосов
/ 12 февраля 2020

Если вы можете называть свои таблицы так, чтобы им был присвоен тот же префикс, вы можете использовать подстановочные знаки в ресурсе.

arn:aws:dynamodb:<Region>:<Account>:table/MyPrefix-*

Это будет работать для всех таблиц, которые начинаются с MyPrefix-

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

...