> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-docs-event-stream-action-templates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Utiliser les balises de session Amazon Web Services pour le contrôle d'accès basé sur les rôles (RBAC)

> Comment utiliser les balises de session Amazon Web Services (AWS) pour implémenter le contrôle d’accès basé sur les rôles (RBAC) pour les API et ressources AWS.

Avec les balises de session Amazon Web Services (AWS), vous pouvez marquer les ressources et attribuer aux utilisateurs des paires clé/valeur, ce qui vous permet de mettre en œuvre un contrôle d’accès basé sur les rôles (RBAC) pour les API et les ressources AWS.

Dans l’exemple inclus dans ce guide, nous allons marquer nos ressources AWS avec des étiquettes de session AWS, puis créer une politique pour un rôle AWS IAM qui permettra aux utilisateurs ayant ce rôle et les étiquettes appropriées d’effectuer des actions particulières sur nos ressources AWS. Nous créerons ensuite une règle dans Auth0 qui attachera notre rôle AWS IAM et les étiquettes de session AWS appropriées à un utilisateur Auth0 et les fera passer par des assertions <Tooltip href="/docs/fr-ca/glossary?term=security-assertion-markup-language" tip="Security Assertion Markup Language (SAML)
Protocole normalisé permettant à deux parties d’échanger des informations d’authentification sans mot de passe." cta="Voir le glossaire">SAML</Tooltip> dans le jeton. Cet exemple s’appuie sur l’exemple fourni dans [Configurer Amazon Web Services pour l’authentification unique](/docs/fr-ca/customize/integrations/aws/configure-amazon-web-services-for-sso).

Pour utiliser les balises de session AWS avec les API et les ressources AWS, vous devez :

1. Tag AWS instances.
2. Create a specialized AWS IAM role.
3. Create an Auth0 rule.
4. Test your configuration.

## Prérequis

* You’ll need an [Amazon Web Services (AWS) account](https://portal.aws.amazon.com/billing/signup#/start) for which you are an administrator.
* [ConfigureR AWS pour la SSO](/docs/fr-ca/customize/integrations/aws/configure-amazon-web-services-for-sso)
* [Set up some AWS VM Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance). For the example in this guide, we use three separate instances.

### Instances de balises AWS

Add tags to your AWS resources. Follow instructions in [Amazon Elastic Compute Cloud User Guide for Linux Instances: Adding and Deleting Tags on an Individual Resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#adding-or-deleting-tags).

You should have created three instances. Add the following tags:

| Instance | Balises                                                                                           |
| -------- | ------------------------------------------------------------------------------------------------- |
| 1        | Clé : `CostCenter`, Valeur : `marketing`.<br />Clé : `Project`, Valeur : `website`.               |
| 2        | Clé: `CostCenter`, Valeur : `engineering`.<br />Clé : `Project`, Valeur : `management_dashboard`. |
| 3        | Clé : `CostCenter`, Valeur : `marketing`.<br />Clé : `Project`, Valeur : `community_site`.        |

### Create a specialized AWS IAM role

Create an IAM role using the AWS SAML <Tooltip href="/docs/fr-ca/glossary?term=idp" tip="Fournisseur d’identité (IdP)
Service de stockage et de gestion des identités numériques." cta="Voir le glossaire">identity provider</Tooltip> you set up during the prerequisites. Follow the instructions in [AWS Identity and Access Management User Guide: Creating a Role for SAML 2.0 Federation (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html).

While setting up your role, make sure you use the following parameters:

| Paramètre        | Description et exemple de valeur                                                                                                                                                                                                                       |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Fournisseur SAML | Nom du fournisseur d’identité que vous avez créé dans les prérequis, par exemple `auth0SamlProvider`. Sélectionnez **Allow programmatic and AWS Management Console access (Autoriser l’accès programmatique et l’accès à la console de gestion AWS)**. |

When asked to **Attach permissions policies**, create a policy with the following JSON and name it `VirtualMachineAccessByCostCenter`.

```json lines theme={null}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/CostCenter": "<%= "${aws:PrincipalTag/CostCenter}" %>"
                }
            }
        }
    ]
}
```

Once the policy has been created, refresh the policy list for the role, then filter and select the new policy.

When reviewing your settings, make sure you use the following parameters:

| Paramètre           | Description                                                   |
| ------------------- | ------------------------------------------------------------- |
| Nom du rôle         | Nom descriptif de votre rôle, tel que `AccessByCostCenter`.   |
| Description du rôle | Description de l’objectif pour lequel votre rôle est utilisé. |

### Create an Auth0 rule

Pour mapper le rôle AWS et les étiquettes à un utilisateur, vous devez [créer une règle](/docs/fr-ca/customize/rules/create-rules) dans Auth0. Ces valeurs seront ensuite transmises aux assertions SAML dans le jeton. Pour l’exemple :

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Remplacez la valeur de la variable `awsAccount` avec celle de votre propre numéro de compte.
</Callout>

```javascript lines theme={null}
function(user, context, callback) {
  var awsAccount = '013823792818';
  var rolePrefix = `arn:aws:iam::` + awsAccount; 
  var samlIdP = rolePrefix + `:saml-provider/auth0SamlProvider`;

  user.awsRole = rolePrefix + `:role/AccessByCostCenter,` + samlIdP;
  user.awsRoleSession = user.email;
  user.awsTagKeys = ['CostCenter', 'Project'];
  user.CostCenter = 'marketing';
  user.Project = 'website';

  context.samlConfiguration.mappings = {
    'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
    'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession',
    'https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter': 'CostCenter',
    'https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project': 'Project'
  };

  callback(null, user, context);
}
```

### Tester la configuration

You should now be able to log in to the AWS Console using an Auth0 user and test your implementation.

To log in, you will need the <Tooltip href="/docs/fr-ca/glossary?term=single-sign-on" tip="Authentification unique (SSO)
Service qui, après qu’un utilisateur se soit connecté à une application, le connecte automatiquement à d’autres applications." cta="Voir le glossaire">SSO</Tooltip> login for the AWS Console. To find it:

1. Go to [Dashboard > Applications > Applications](https://manage.auth0.com/#/applications) and select the name of the Application to view.
2. On the **Addons** tab, enable the **SAML2 Web App** add-on.
3. On the **Usage** tab, locate **Identity Provider Login URL**.
4. Go to the indicated URL.
5. Once you have signed in, from **EC2**, select **Instances**. Click one of the instances tagged with a `CostCenter` of `marketing`, and click **Actions** > **Instance State** > **Stop**. Notice that the action completes successfully.
6. Click the instance tagged with a `CostCenter` of `engineering`, and click **Actions** > **Instance State** > **Stop**. Notice that the action fails with an error.

## En savoir plus

* [Configurer les Services Web Amazon pour l’authentification unique (SSO)](/docs/fr-ca/customize/integrations/aws/configure-amazon-web-services-for-sso)
* [Configurer Amazon Web Services en tant que fournisseur de services SAML](/docs/fr-ca/authenticate/single-sign-on/outbound-single-sign-on/configure-auth0-saml-identity-provider/configure-saml2-web-app-addon-for-aws)
