У меня есть два счета AWS - позволяет сказать, что А и В.Как взять роль AWS из другой роли AWS?
В счет Б, я роль определил, что разрешить доступ к другой роли из учетной записи А. Назовём его Role-B
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:role/RoleA"
},
"Action": "sts:AssumeRole"
}]
}
В учетной записи A я определил роль, которая позволяет пользователю root взять на себя роль. Назовём его роль-A
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:root"
},
"Action": "sts:AssumeRole"
}]
}
Роль А имеет следующую политику прилагается к нему
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::****:role/RoleB",
"Effect": "Allow"
}]
}
Как пользователь в аккаунте, я взял на себя роль-A. Теперь с помощью этого временного удостоверения, я хочу взять на себя роль-B и получить доступ к ресурсу, принадлежащий учетной запись B. У меня есть код, приведенный ниже
client = boto3.client('sts')
firewall_role_object = client.assume_role(
RoleArn=INTERMEDIARY_IAM_ROLE_ARN,
RoleSessionName=str("default"),
DurationSeconds=3600)
firewall_credentials = firewall_role_object['Credentials']
firewall_client = boto3.client(
'sts',
aws_access_key_id=firewall_credentials['AccessKeyId'],
aws_secret_access_key=firewall_credentials['SecretAccessKey'],
aws_session_token=firewall_credentials['SessionToken'],)
optimizely_role_object = firewall_client.assume_role(
RoleArn=CUSTOMER_IAM_ROLE_ARN,
RoleSessionName=str("default"),
DurationSeconds=3600)
print(optimizely_role_object['Credentials'])
Этот код работает для набора ролей я получил от моего клиента, но это не работая для роли, которую я определил между двумя учетными записями AWS, к которым у меня есть доступ.
Это было действительно полезно, спасибо. Я предполагаю, что вы исправили орфографическую ошибку в политике. :-) – pcurry