Как узнать, какие действия AWS нужно предоставить для команды CLI? - PullRequest
1 голос
/ 21 октября 2019

Предположим, я хочу запустить некоторую команду CLI AWS, например, aws s3 sync dist/ "s3://${DEPLOY_BUCKET_NAME}" --delete.

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


Просто чтобы прояснить мой вопрос. Я знаю, где найти список всех действий для S3 или другого сервиса, и я знаю, как написать политику. Вопрос в том, как узнать, какие конкретные действия мне нужно предоставить для какой-либо команды CLI?

Поскольку каждая команда будет использовать различные действия, а ее аргументы также играют рольздесь.

Ответы [ 3 ]

1 голос
/ 22 октября 2019

Практически каждая команда, используемая в интерфейсе командной строки AWS, сопоставляет индивидуальные действия с действиями IAM.

Однако такие команды aws s3, как sync, являются функциями более высокого уровня, которые вызывают несколько команд.

Для sync, я думаю, вам понадобится:

  • ListBucket
  • CopyObject
  • GetObjectACL
  • PutObjectACL

Если это по-прежнему не помогает, то вы можете использовать AWS CloudTrail , чтобы просмотреть базовые вызовы API, которые AWS CLI совершил для вашей учетной записи. ,Записи CloudTrail будут показывать каждый вызов API, а также, был ли он успешным или неудачным.

1 голос
/ 22 октября 2019

Нет определенного сопоставления действиям API с помощью высокоуровневых команд awscli (например, aws s3 sync) или действий консоли AWS, о которых я знаю.

Одна вещь, которую вы могли бы рассмотреть, - включить CloudTrailзатем временно включите все действия со всеми ресурсами в политике IAM, затем запустите тест aws s3 sync и просмотрите CloudTrail, какие действия API были вызваны для каких ресурсов. Не идеально, но это может дать вам кое-что для начала.

Вы можете использовать Athena для запроса журналов CloudTrail . Сначала это может показаться сложным, но на самом деле это довольно просто. Затем вы можете выдавать простые SQL-запросы, такие как:

SELECT eventtime, eventname, resources FROM trail20191021 ORDER BY eventtime DESC;
0 голосов
/ 22 октября 2019

Если вы хотите знать конкретно о S3, это описано в Руководстве разработчика S3:

В целом, вы можете получить то, что вам нужно для любого ресурса AWS, с Действия, ресурсы и условные ключи для сервисов AWS

И вы можете найти Генератор политик AWS полезным

...