Могу ли я получить учетные данные для учетной записи aws с помощью sso в командной строке без браузера
В настоящее время я использую awscli версии 2 для получения временных учетных данных в командной строке. Кажется, для этого нужен браузер. Это не будет работать везде, как например на сервере. Я хотел бы получить временные учетные данные в командной строке для моей учетной записи с помощью AWS SSO. Это возможно. Из того, что я могу сказать из документации SDK здесь и утилиты awscli версии 2, похоже, нет способа сделать это.
Тип предоставления OAuth2 "код устройства" явно предназначен для аутентификации без браузера, как упоминалось здесь. Но, похоже, SDK AWS SSO не поддерживает это.
Буду признателен за любые идеи / мысли / помощь по этому вопросу.
Спасибо, Виш
2 ответа
Я бы сказал, что теоретически ответ будет положительным, но вам придется создать процесс аутентификации CLI/Script для вашего IdP. AWS SSO ищет и использует активный токен OIDC для получения учетных данных профиля. Если ваш IdP предоставляет API, с помощью которого вы можете написать сценарий аутентификации для IdP и выполнить обмен токенов со службой AWS SSO и получить необходимые учетные данные, вы можете записать их в соответствующий файл кеша для CLI. Этот ответ сильно зависит от используемого вами IdP, но если вы используете http-библиотеки на выбранном вами языке для выполнения задач вашего веб-браузера (или, возможно, текстового браузера, такого как Lynx), вы сможете получить то, что ищете . Вам придется глубоко погрузиться в документацию AWS API и разобраться в необходимом рабочем процессе, но это не так. Насколько я могу судить, это просто интерфейс SAML. Что мне показалось интересным, так это то, что у вас может быть несколько кэшей учетных данных, что означает, что у вас есть возможность создавать сценарии для нескольких поставщиков единого входа (несколько организаций), и я создал для себя библиотеку Python, чтобы лучше реализовать это.
Источник: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html
To manually add AWS SSO support to a named profile, you must add the following keys and values to the profile definition in the file ~/.aws/config (Linux or macOS) or %USERPROFILE%/.aws/config (Windows).
sso_start_url
The URL that points to the organization's AWS SSO user portal.
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region
The AWS Region that contains the AWS SSO portal host. This is separate from, and can be a different region than the default CLI region parameter.
sso_region = us_west-2
sso_account_id
The AWS account ID that contains the IAM role that you want to use with this profile.
sso_account_id = 123456789011
sso_role_name
The name of the IAM role that defines the user's permissions when using this profile.
sso_role_name = ReadAccess
The presence of these keys identify this profile as one that uses AWS SSO to authenticate the user.
You can also include any other keys and values that are valid in the .aws/config file, such as region, output, or s3. However, you can't include any credential related values, such as role_arn or aws_secret_access_key. If you do, the AWS CLI produces an error.
So a typical AWS SSO profile in .aws/config might look similar to the following example.
[profile my-dev-profile]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json```