Инструменты функционального тестирования для симулятора политики AWS IAM

#amazon-web-services #amazon-iam #functional-testing #aws-codepipeline #aws-control-tower

#amazon-веб-сервисы #amazon-iam #функциональное тестирование #aws-codepipeline #aws-диспетчерская вышка

Вопрос:

Это мой первый пост здесь, я работаю над программой AWS CodePipeline, которая создает новые учетные записи AWS и назначает пользователей через AWS SSO, для которой установлены разрешения с определенными политиками управляемого IAM и встроенной политикой в качестве границ разрешений для групп пользователей. Я хотел бы использовать тестовый конвейер, который проверяет конкретную роль пользователя из добавленной учетной записи AWS и проверяет, может ли пользователь(ы) выполнять определенные действия, такие как включение доступа в Интернет, создание политики и т. Д., И на основе результатов выполнять дальнейшие шаги конвейера.

Пример: Конвейер, запущенный в среде POC, создает учетную запись, затем необходимо будет выполнить тест для пользователя единого входа / локального пользователя IAM, чтобы проверить, может ли пользователь создать интернет-шлюз и т. Д. Обычно это может быть cli симулятора политики IAM, и это приводит к тому, разрешено ли действие пользователя или нет. Мой поток конвейера должен продолжить перемещение источника в ветвь «мастер» для производственной среды в зависимости от результатов тестирования или отказаться в случае сбоя.

Я пробую несколько инструментов, таких как Taskcat и другие, большинство из них не выполняют такой функциональный тест, только проверяет наличие ресурса.

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

Заранее спасибо.

Ответ №1:

Мне удалось использовать «awspec» для выполнения функционального теста для ресурсов AWS, который я специально искал, — это симулятор политики IAM, использующий приведенный ниже ресурс «awspec».

 describe iam_role('my-iam-role') do  it { should be_allowed_action('ec2:DescribeInstances') }  it { should be_allowed_action('s3:Put*').resource_arn('arn:aws:s3:::my-bucket-name/*') } end