web-dev-qa-db-fra.com

Comment assumer un rôle AWS à partir d'un autre rôle AWS?

J'ai deux comptes AWS - disons A et B.

Dans le compte B, j'ai un rôle défini qui permet d'accéder à un autre rôle à partir du compte A. Appelons-le Role-B

{
  "Version": "2012-10-17",
  "Statement": [
  {
     "Effect": "Allow",
     "Principal": {
         "AWS": "arn:aws:iam::********:role/RoleA"
     },
    "Action": "sts:AssumeRole"
  }]
}

Dans le compte A, j'ai défini un rôle qui permet à l'utilisateur root d'assumer le rôle. Appelons-le Role-A

{
  "Version": "2012-10-17",
  "Statement": [
  {
     "Effect": "Allow",
     "Principal": {
         "AWS": "arn:aws:iam::********:root"
     },
    "Action": "sts:AssumeRole"
  }]
}

Le rôle A est associé à la stratégie suivante

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::****:role/RoleB",
            "Effect": "Allow"
       }]
 }

En tant qu'utilisateur du compte A, j'ai assumé le rôle A. Maintenant, en utilisant ces informations d'identification temporaires, je veux assumer le rôle B et accéder à la ressource appartenant au compte B. J'ai le code ci-dessous

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'])

Ce code fonctionne pour l'ensemble des rôles que j'ai obtenus de mon client, mais ne fonctionne pas pour les rôles que j'ai définis entre deux des comptes AWS auxquels j'ai accès.

25
Prashant

Finalement, cela a fonctionné. La configuration ci-dessus est correcte. Il y avait une faute d'orthographe dans la politique.

Je garderai cette question ici car cela peut aider quelqu'un qui souhaite réaliser une authentification double saut en utilisant des rôles.

24
Prashant