Проверка политики AWS IAM с помощью пробных вызовов API

Я работаю над инструментом, который принимает политику IAM как JSON и создает политику на aws. Я использую aws-sdk-go для создания инструмента. Я ищу способ, с помощью которого я могу проверить политику перед ее выполнением на aws. Предоставляет ли AWS какой-то API для пробного запуска создания политики или что-то в этом роде?

То, что я пробовал: я проверяю политику поле за полем.

  • Поле эффекта должно быть Allow или Deny.
  • Для поля «Действие» я добавил в свой инструмент словарь, который сопоставляет службу с допустимыми действиями. Проблема с этим подходом в том, что он требует много обслуживания. AWS продолжает выпускать новые сервисы и действия, и мне приходится обновлять словарь.
  • Для ресурса это должен быть действительный ARN.

Добавлено несколько других проверок, но очень сложно добавить все проверки вручную. Я считаю, что aws должен предоставлять какое-то пробное средство для политики.


person Abhishek Soni    schedule 21.12.2018    source источник


Ответы (2)


API AWS предоставляет конечную точку симулятора политик. Вы должны иметь функции, упрощающие использование симулятора политик, по адресу https://docs.aws.amazon.com/sdk-for-go/api/service/iam/ и, в частности, https://docs.aws.amazon.com/sdk-for-go/api/service/iam/#IAM.SimulateCustomPolicy .

Симулятор политики позволит вам проверить json вашей политики и убедиться, что ваши намерения выражены в результатах разрешений, которые вы предоставляете в политике. Вы можете указать контекстные ключи, такие как aws:SourceIp, aws:RequestedRegion и т. д.

person Ian Jenkins    schedule 06.01.2019
comment
Он не проверяет схему json. Например: `{Эффект:Разрешить, Действие:недействительно:недействительно, Ресурс:некоторый действительный ARN ресурса}` является допустимой политикой в ​​соответствии с API симулятора. Пользовательский симулятор только сообщает, какой принципал может выполнять какие действия с каким ресурсом. Пользовательский симулятор очень мало помогает, когда дело доходит до проверки Condition элемента политики. - person Abhishek Soni; 08.01.2019

Вы можете использовать схему JSON для выполнения некоторых проверок. Если вы посмотрите в Интернете, вы можете найти несколько примеров схем IAM Json на github. вот пример одного из них:

https://gist.github.com/jstewmon/ee5d4b7ec0d8d60cbc303cb515272f8a

И я предполагаю, что с помощью Go вы можете использовать что-то вроде следующего для проверки JSON на этой схеме Json:

https://github.com/xeipuuv/gojsonschema

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

person Aram    schedule 18.09.2020