web-dev-qa-db-fra.com

Comment activer l'accès à AWS STS AssumeRole

Je reçois une erreur lors de l'appel à assume role méthode de STS. Il indique que l'utilisateur n'est pas autorisé à effectuer sts:AsumeRole sur la ressource xxx.

J'ai fait ce qui suit:

  1. J'ai créé un rôle pour accéder au compartiment S3.
  2. J'ai effectué un test sur le simulateur de règles et fonctionne bien
  3. J'ai créé un nouveau groupe, et dans celui-ci, j'ai créé une nouvelle politique qui permet toutes les actions sts, sur toutes les ressources.
  4. J'ai exécuté un test avec le simulateur de politique, pour que sts assume le rôle, pointant vers l'ARN du rôle créé à la première étape; et ça marche bien
  5. J'ai créé un nouvel utilisateur et l'ai mis dans le groupe créé à l'étape 3
  6. Avec les informations d'identification du nouvel utilisateur, j'essaie d'obtenir de nouvelles informations d'identification en utilisant le rôle asume sts, mais lancez-moi une erreur indiquant que mon utilisateur n'est pas autorisé à effectuer des sts: AssumeRole

Qu'est-ce que je fais mal?

Politique en groupe

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "some-large-id",
            "Effect": "Allow",
            "Action": [
                "sts:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Politique dans le rôle

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "another-large-id",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket-name/*"
            ]
        }
    ]
}

Et enfin appeler comme ça

let policy = {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "new-custom-id",
            "Effect": "Allow",
            "Action": ["s3:PutObject"],
            "Resource": ["arn:aws:s3:::my-bucket-name/*"]
        }
    ]
};

let params = {
    DurationSeconds: 3600, 
    ExternalId: 'some-value', 
    Policy: JSON.stringify(policy), 
    RoleArn: "arn:aws:iam::NUMBER:role/ROLE-NAME", //Cheked, role is the same that step one
    RoleSessionName: this.makeNewSessionId()
};
let sts = new AWS.STS({ apiVersion: '2012-08-10' });

sts.assumeRole(params, (err, data) => {
    if(err) console.log(err);
    else console.log(data);
});
16
Vladimir Venegas

Il manque une étape: définir la relation d'approbation sur le rôle créé à l'étape 1. Quels que soient les privilèges de l'utilisateur, si la relation d'approbation n'est pas définie, STS refusera la demande.

Dépannage des rôles IAM expliquer comment cela fonctionne.

25
Vladimir Venegas