Временные учетные данные безопасности - как получить доступ, учитывая имя роли и AWS идентификатор учетной записи? - PullRequest
0 голосов
/ 05 марта 2020

AWS документация предусматривает несколько подходов, здесь .


В нашей среде у нас есть несколько AWS учетных записей.

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

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

Получение доступа (путем переключения) к нескольким AWS учетным записям помогает нам в автоматизации.


В основном мы хотели бы запустить некоторые инструмент, подобный ./some_aws_sdk_tool.py role_name aws_account_name, предполагающий role_name для получения учетных данных.

Я хочу проверить это с моей единственной учетной записью AWS (личная).

1) Каковы шаги для настроить мою AWS учетную запись для создания такой role_name?

2) Как получить временные учетные данные для определенного c aws_account_name с some_aws_sdk_tool.py? чтобы иметь возможность запускать команды AWS CLI в течение n минут ..

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Вы хотите сделать это из своего кода или с помощью AWS CLI?

Если вы используете CLI, самый простой способ - создать профили в файле AWS учетных данных, как описано здесь . Каждый профиль идентифицирует роль ARN и информацию для входа в систему источника, которая может принимать эту роль.

В качестве альтернативы, вы можете запустить команду sts assume-role, проанализировать результаты и установить переменные среды:

aws sts assume-role --role-arn 'arn:aws:iam::123456789012:role/Example' --role-session-name 'some_unique_but_relevant_string'

{
    "Credentials": {
        "AccessKeyId": "ASIAXXXXXXXXXXXXXXXX",
        "SecretAccessKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "SessionToken": "XXXXXXXXXXXXXXX//////////XXX...XXXXX",
        "Expiration": "2020-03-05T20:57:45Z"
    },
    "AssumedRoleUser": {
        "AssumedRoleId": "AROAXXXXXXXXXXXXXXXXX:some_unique_but_relevant_string",
        "Arn": "arn:aws:sts::123456789012:assumed-role/Example/some_unique_but_relevant_string"
    }
}

Если вы хотите сделать это из своей программы, вы можете использовать такой код:

sts_client = boto3.client('sts')

role_arn = "..."
session_name = "some_unique_but_relevant_value"

response = sts_client.assume_role(
    RoleArn=role_arn,
    RoleSessionName=session_name
)
creds = response['Credentials']

actual_client = boto3.client('SERVICE',
    aws_access_key_id=creds['AccessKeyId']
    aws_secret_access_key=creds['SecretAccessKey']
    aws_session_token=creds['SessionToken'])
1 голос
/ 05 марта 2020

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...