Qu’est-ce que la permission PassRole dans AWS et comment l’utiliser ?

Un service IAM est fourni par de nombreux fournisseurs de services en nuage comme mesure de contrôle de l’accès aux ressources en nuage. Il détermine qui est authentifié et autorisé à accéder à ces ressources. Les identités AWS IAM se composent d’utilisateurs, de groupes et de rôles.

Dans ce guide, nous nous concentrerons spécifiquement sur les rôles IAM. L’identité IAM est comme un utilisateur IAM dans le sens où nous pouvons lui attacher des politiques IAM. Ces politiques déterminent la portée du niveau de permission pour cette identité. Contrairement à un utilisateur IAM qui est associé à un seul utilisateur et possède des informations d’identification à long terme, les rôles suivent une stratégie différente. Ils disposent d’informations d’identification de sécurité temporaires et sont assumés/pris par d’autres personnes qui en ont besoin. Les utilisateurs, applications ou services normaux qui n’ont pas d’autorisation d’accès à tes ressources AWS, assument les rôles pour obtenir cet accès.

Qu’est-ce que nous allons voir ici ?

Dans ce tutoriel, tu apprendras à utiliser l’autorisation ‘IAM Passrole’. Nous te montrerons également un exemple simple sur la façon de connecter une instance EC2 avec un seau S3 privé en utilisant ce concept.

Qu’est-ce que la permission Passrole ?

Lors de la configuration de nombreux services AWS, l’utilisateur/administrateur doit transmettre un rôle à ce service. Le service assume alors ce rôle pour effectuer les actions qui sont autorisées dans ce rôle. Dans la plupart des cas, le rôle n’est transmis au service qu’une seule fois lors de la configuration du service et non pas à chaque fois que le rôle est assumé par le service.

Un utilisateur doit avoir des droits pour transmettre un rôle à un service. C’est un aspect de sécurité fort car seuls les utilisateurs autorisés peuvent transmettre un rôle à un service. De plus, les administrateurs peuvent contrôler le type de rôle qu’un utilisateur peut transmettre au service.

Démonstration de l’autorisation Passrole

Avançons dans ce concept en prenant un exemple pratique. Dans cette démonstration, nous avons un seau S3, une instance EC2 et une application fonctionnant sur cette instance qui est AWS CLI elle-même. Nous voulons configurer un rôle qui permettra à notre application exécutée sur l’instance EC2 d’accéder à notre seau S3. Nous devons créer le rôle de manière à ce que seul l’EC2 obtienne l’autorisation d’accéder à S3 mais pas les autres services AWS de l’utilisateur. Pour cela, notre application doit disposer d’informations d’identification temporaires pour l’authentification et l’autorisation d’accès à S3. Tu auras remarqué que lors du lancement de l’instance EC2, on nous demande de sélectionner un rôle IAM, c’est ce rôle qui fournit ces informations d’identification temporaires à notre instance EC2. Notre application exécutée sur l’instance EC2 récupérera ces informations d’identification pour accéder au seau S3.

Un utilisateur IAM peut transmettre un rôle au service EC2, au moment de lancer l’instance, en utilisant les trois entités ci-dessous :

  1. Tout d’abord, nous devons créer et attacher une politique à notre rôle qui décidera de la limite de permission ou de la portée de notre rôle IAM.
  2. Ensuite, une politique de confiance associée à ce rôle qui permettra essentiellement au service AWS (EC2 dans notre cas) de prendre/assumer le rôle et d’utiliser les permissions listées avec le rôle.
  3. Enfin, une politique de permission IAM, attachée à l’utilisateur IAM qui lui permet de passer les rôles qu’il est autorisé à passer.

Créer le rôle

Dans cette section, nous allons créer un rôle appelé ‘EC2S3Access’ et y associer une politique ‘AmazonS3ReadOnlyAccess’ :

Étape 1. Accède au tableau de bord IAM depuis le compte administrateur ou root et sélectionne ‘Rôles’ sous l’option Gestion de l’accès. Clique sur le bouton ‘Créer un rôle’.

Étape 2. Dans la section ‘Sélectionner l’entité de confiance’, tu verras les options ‘Type d’entité de confiance’ et ‘Cas d’utilisation’. Pour le premier, sélectionne l’option ‘Service AWS’ et pour le second, sélectionne l’option ‘EC2’.

Sélectionne l'entité de confiance

Étape 3. Dans la section suivante ‘Ajouter des autorisations’, nous allons attacher une politique ‘S3ReadOnlyAccess’ et cliquer sur ‘Suivant’ :

Ajouter une politique au rôle.

Étape 4. Saisis ici un nom pour le rôle : ‘EC2S3Access’ et une description facultative pour celui-ci. Note qu’une politique de confiance sera automatiquement attachée à ce rôle :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Principal": {
                "Service": [
                    "ec2.amazonaws.com"
                ]
            }
        }
    ]
} 

Étape 5. Enfin, clique sur le bouton ‘Créer un rôle’ pour créer le rôle ci-dessus :

Détails du rôle

Ajout de la politique IAM pour l’utilisateur IAM

Jusqu’à présent, nous avons créé un rôle et lui avons attaché une politique, puis nous avons également obtenu une politique de confiance. Nous allons maintenant créer une politique pour l’utilisateur IAM lui-même. Dans cette politique, nous donnerons à l’utilisateur la permission d’accéder à EC2 et d’associer le rôle ‘EC2S3Access’ ci-dessus à notre instance EC2.

Étape 1. Accède à nouveau au tableau de bord IAM à partir du compte administrateur ou root, sélectionne ‘Politiques’ et clique sur le bouton ‘Créer une politique’.

Étape 2. Dans l’assistant de création de politique, clique sur l’onglet json et colle simplement le code json suivant pour cette politique :

{
   "Version": "2012-10-17",
   "Statement": [{
  	"Effect":"Allow",
  	"Action":["ec2:*"],
  	"Resource":"*"
	},
	{
  	"Effect":"Allow",
  	"Action":"iam:PassRole",
  	"Resource":"arn:aws:iam::account_ID:role/EC2S3Access"
	}]
}

Dans ce code, remplace ‘account_ID’ par le numéro de compte ou l’ID de l’utilisateur et ‘EC2S3Access’ par le nom du rôle dans ton cas. Clique sur ‘Suivant’ : Balises’.

Étape 3. Indique les ‘Balises’ facultatives que tu veux utiliser et clique sur ‘Suivant’ : Révision’ :

Étape 4. Donne un nom à cette politique (‘iam_user_policy’ dans notre cas) et clique enfin sur le bouton ‘Create policy’ pour créer cette politique :

Créer une politique IAM pour l'utilisateur IAM

Étape 5. Attache la politique créée ci-dessus à l’utilisateur IAM :

Attacher la politique IAM à l'utilisateur IAM

Attacher le rôle à l’instance

Comme notre rôle est prêt et que l’utilisateur IAM est attaché à la politique requise, il est temps d’attacher ce rôle (‘EC2S3Access’) à l’instance EC2.

Remarque : Un rôle peut être attaché à une instance lors de son lancement et également à une instance en cours d’exécution.

Dans notre cas, l’instance EC2 est déjà en cours d’exécution, alors navigue dans la console EC2 et sélectionne l’instance cible. Sélectionne ‘Action > Sécurité > Modifier le rôle IAM’. Sélectionne l’option ‘EC2S3Access’ dans le menu déroulant de la nouvelle page et clique sur ‘Enregistrer’ pour continuer :

Attacher le rôle à l'instance

Test de la configuration

Si tout a été configuré correctement, notre instance EC2 devrait pouvoir accéder à un seau S3. Commence par créer un seau S3 à partir du compte administrateur. Ensuite, connecte-toi à l’instance EC2 cible, puis installe et configure l’application aws cli pour l’utilisateur IAM avec la ‘user-iam-policy’. Depuis un terminal sur l’instance, exécute la commande de listing S3 ci-dessous :

$ aws s3 ls

Pour vérifier par recoupement si l’autorisation Passrole fonctionne, exécute la même commande à partir du même utilisateur IAM configuré sur une autre machine. Cette fois, tu constateras, avec un peu de chance, que nous obtenons une erreur d’accessibilité due à une permission limitée :

Test de l'installation

L’erreur ci-dessus s’est produite car nous n’avons donné l’autorisation d’accès de S3 qu’à l’instance EC2 configurée avec la ‘iam_user_policy’ mais n’avons donné aucune autorisation de ce type à aucun autre service AWS de l’utilisateur IAM.

Remarque : Le seau et ses objets ne sont pas accessibles au public.

Conclusion

Dans ce guide, nous avons appris à utiliser la permission PassRole pour donner le moindre privilège à un utilisateur AWS IAM. Nous t’avons montré comment connecter une instance EC2 à un seau S3.

Vous aimerez aussi...