Введение
Вы когда-нибудь хотели создать и использовать свою личную федерацию AWS с Google в качестве IdP программным способом?
Эта небольшая статья, несомненно, придет на помощь, представив некоторые возможности Leapp CLI.
Давайте начнем!
Необходимые условия
- Доступ к аккаунту AWS с привилегиями adeguate IAM
- Доступ к Google Suite с правами администратора
Перед созданием федеративной сессии с помощью Leapp CLI, мы должны настроить наш Google IdP в AWS.
Мы можем обратиться к нашему руководству в качестве ориентира, но для этой статьи давайте рассмотрим некоторые важные ключевые значения здесь.
Федерация AWS IAM дает возможность принять роль с правами на выполнение действий на ресурсах AWS внешнему пользователю. Эта операция может генерировать временные учетные данные как для программного доступа (CLI или SDK), так и для консольного доступа.
Мы сосредоточимся на программном доступе.
Доверие между Google и AWS зависит от двух файлов метаданных: один от AWS, который должен быть передан Google, и другой от Google, который также содержит ключи, которые AWS может использовать для проверки ответов аутентификации (assertions) от вашей организации.
Еще одним полезным руководством по настройке на вашей стороне является это от AWS, которое показывает, как работает механизм федерации, и это от ***Krishna Modi,* которое наглядно показывает настройку на стороне Google.
Федеративный доступ через Leapp CLI
Вы можете скачать Leapp CLI, следуя инструкциям в нашей официальной документации.
💡 Обратите внимание, что для использования CLI вам также необходимо приложение Leapp Desktop App.
После этого мы можем создать скрипт, позволяющий создать новую Federated Session:
#!/bin/bash
# Make a new Federated Session
# Get Parameters
while getopts ":s:r:a:u:n:" flag;
do
case "${flag}" in
s) name=${OPTARG};;
r) awsregion=${OPTARG};;
a) idparn=${OPTARG};;
u) idpurl=${OPTARG};;
n) rolearn=${OPTARG};;
esac
done
echo $name
echo $awsregion
echo $idparn
echo $idpurl
echo $rolearn
# Find Default Profile ID
profile=$(leapp profile list -x --filter "Profile Name"=default | grep default | cut -d " " -f2)
echo $profile
# Create Session
leapp session add --providerType aws --sessionType awsIamRoleFederated --sessionName $name --region $awsregion --idpArn $idparn --idpUrl $idpurl --profileId $profile --roleArn $rolearn
Вы можете удалить команду echo, которая используется для того, чтобы показать вам, что все аргументы переданы правильно.
Вы можете вызвать команду следующим образом:
./testScript.sh -s MYTEST -r eu-west-1 -a FAKEARN -u https://fakeurl.com -n FAKEROLEARN
💡 Примечание: помните, что все аргументы являются обязательными. Вы также можете изменить сценарий, чтобы дать сессии другой профиль; здесь мы используем профиль по умолчанию.
Вот вывод, взятый непосредственно из моей консоли и моего приложения Leapp Desktop App, чтобы показать, что синхронизация работает правильно.
Бонус: создание цепочечной сессии из федеративной сессии
Обычно федерация используется для доступа к посадочной зоне, но чаще всего вы хотите получить доступ к другой учетной записи (например, к одному из ваших клиентов для работы над проектом).
Здесь я покажу, как создать цепочечную сессию из федеративной:
#!/bin/bash
# Make a chained from a Federated session
# Get Parameters
while getopts ":s:r:n:p:" flag;
do
case "${flag}" in
s) name=${OPTARG};;
r) awsregion=${OPTARG};;
n) rolearn=${OPTARG};;
p) parentname=${OPTARG};;
esac
done
echo $name
echo $awsregion
echo $rolearn
echo $parentname
# Find Parent Session ID
parentid=$(leapp session list -x --filter "Session Name"="$parentname" | grep $parentname | cut -d " " -f2)
echo $parentid
# Find Default Profile ID
profile=$(leapp profile list -x --filter "Profile Name"=default | grep default | cut -d " " -f2)
echo $profile
# Create Session
leapp session add --providerType aws --sessionType awsIamRoleChained --sessionName $name --region $awsregion --profileId $profile --roleArn $rolearn --parentSessionId $parentid
И вот результат:
Как вы можете видеть, свойства корректно импортируются из CLI:
Заключение
В этом небольшом руководстве я показал, как можно создать Federated Session прямо из терминала с помощью Leapp CLI!
Также мы увидели, что скрипты, использующие Leapp CLI, могут быть объединены вместе для достижения еще более интересных результатов (например, создание цепочки сессий из объединенной сессии).
Это только первый из серии небольших уроков, которые мы, команда Noovolari, предложим вам всем, чтобы показать, как вы можете автоматизировать некоторые из ваших учетных процессов с помощью Leapp CLI.
Как всегда, если у вас есть предложения или вопросы, не стесняйтесь, приходите и пообщайтесь с нами в нашем сообществе slack.
До следующего раза, до встречи и будьте осторожны! 🙂 🙂