

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Identity and Access Management pour Amazon Aurora
<a name="UsingWithRDS.IAM"></a>





Gestion des identités et des accès AWS (IAM) est un outil Service AWS qui permet à un administrateur de contrôler en toute sécurité l'accès aux AWS ressources. Des administrateurs IAM contrôlent les personnes qui peuvent être *authentifiées* (connectées) et *autorisées* (disposant d’autorisations) à utiliser des ressources Amazon RDS. IAM est un Service AWS outil que vous pouvez utiliser sans frais supplémentaires.

**Topics**
+ [

## Public ciblé
](#security_iam_audience)
+ [

## Authentification par des identités
](#security_iam_authentication)
+ [

## Gestion de l’accès à l’aide de politiques
](#security_iam_access-manage)
+ [

# Comment Amazon Aurora fonctionne avec IAM
](security_iam_service-with-iam.md)
+ [

# Exemples de politiques basées sur l’identité pour Amazon Aurora
](security_iam_id-based-policy-examples.md)
+ [

# AWS politiques gérées pour Amazon RDS
](rds-security-iam-awsmanpol.md)
+ [

# Mises à jour Amazon RDS des politiques gérées par AWS
](rds-manpol-updates.md)
+ [

# Prévention des problèmes d'adjoint confus entre services
](cross-service-confused-deputy-prevention.md)
+ [

# Authentification de base de données IAM
](UsingWithRDS.IAMDBAuth.md)
+ [

# Résolution des problèmes liés à Identity and Access Amazon Aurora
](security_iam_troubleshoot.md)

## Public ciblé
<a name="security_iam_audience"></a>

La façon dont vous utilisez Gestion des identités et des accès AWS (IAM) varie en fonction du travail que vous effectuez dans ).

**Utilisateur du service** – Si vous utilisez le service Aurora pour effectuer votre tâche, votre administrateur vous fournit les informations d’identification et les autorisations dont vous avez besoin. Plus vous utiliserez de fonctionnalités Aurora pour effectuer votre travail, plus vous pourrez avoir besoin d’autorisations supplémentaires. Comprendre la gestion des accès peut vous aider à demander à votre administrateur les autorisations appropriées. Si vous ne pouvez pas accéder à une fonctionnalité dans Aurora, consultez [Résolution des problèmes liés à Identity and Access Amazon Aurora](security_iam_troubleshoot.md).

**Administrateur du service** – Si vous êtes le responsable des ressources Aurora de votre entreprise, vous bénéficiez probablement d’un accès total à Aurora. C’est à vous de déterminer les fonctionnalités et les ressources Aurora auxquelles vos employés pourront accéder. Vous devez ensuite soumettre les demandes à votre administrateur pour modifier les autorisations des utilisateurs de votre service. Consultez les informations sur cette page pour comprendre les concepts de base d’IAM. Pour en savoir plus sur la façon dont votre entreprise peut utiliser IAM avec Aurora, consultez [Comment Amazon Aurora fonctionne avec IAM](security_iam_service-with-iam.md).

**Administrateur** : si vous êtes un administrateur, vous souhaiterez peut-être obtenir des détails sur la façon dont vous pouvez écrire des politiques pour gérer l’accès à Aurora. Pour obtenir des exemples de stratégies Aurora basées sur l’identité que vous pouvez utiliser dans IAM, consultez [Exemples de politiques basées sur l’identité pour Amazon Aurora](security_iam_id-based-policy-examples.md).

## Authentification par des identités
<a name="security_iam_authentication"></a>

L'authentification est la façon dont vous vous connectez à AWS l'aide de vos informations d'identification. Vous devez être authentifié en tant qu'utilisateur IAM ou en assumant un rôle IAM. Utilisateur racine d'un compte AWS

Vous pouvez vous connecter en tant qu'identité fédérée à l'aide d'informations d'identification provenant d'une source d'identité telle que AWS IAM Identity Center (IAM Identity Center), d'une authentification unique ou d'informations d'identification. Google/Facebook Pour plus d’informations sur la connexion, consultez [Connexion à votre Compte AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dans le *Guide de l’utilisateur Connexion à AWS *.

Pour l'accès par programmation, AWS fournit un SDK et une CLI pour signer les demandes de manière cryptographique. Pour plus d’informations, consultez [Signature AWS Version 4 pour les demandes d’API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dans le *Guide de l’utilisateur IAM*.

### AWS utilisateur root du compte
<a name="security_iam_authentication-rootuser"></a>

 Lorsque vous créez un Compte AWS, vous commencez par une seule identité de connexion appelée *utilisateur Compte AWS root* qui dispose d'un accès complet à toutes Services AWS les ressources. Il est vivement déconseillé d’utiliser l’utilisateur racine pour vos tâches quotidiennes. Pour les tâches qui requièrent des informations d’identification de l’utilisateur racine, consultez [Tâches qui requièrent les informations d’identification de l’utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dans le *Guide de l’utilisateur IAM*. 

### Identité fédérée
<a name="security_iam_authentication-federatedidentity"></a>

Il est recommandé d'obliger les utilisateurs humains à utiliser la fédération avec un fournisseur d'identité pour accéder à Services AWS l'aide d'informations d'identification temporaires.

Une *identité fédérée* est un utilisateur provenant de l'annuaire de votre entreprise, de votre fournisseur d'identité Web ou Directory Service qui y accède à Services AWS l'aide d'informations d'identification provenant d'une source d'identité. Les identités fédérées assument des rôles qui fournissent des informations d’identification temporaires.

Pour une gestion des accès centralisée, nous vous recommandons d’utiliser AWS IAM Identity Center. Pour plus d’informations, consultez [Qu’est-ce que IAM Identity Center ?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

### Utilisateurs et groupes IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* est une identité qui dispose d’autorisations spécifiques pour une seule personne ou application. Nous vous recommandons d’utiliser ces informations d’identification temporaires au lieu des utilisateurs IAM avec des informations d’identification à long terme. Pour plus d'informations, voir [Exiger des utilisateurs humains qu'ils utilisent la fédération avec un fournisseur d'identité pour accéder à AWS l'aide d'informations d'identification temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) dans le *guide de l'utilisateur IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) spécifient une collection d’utilisateurs IAM et permettent de gérer plus facilement les autorisations pour de grands ensembles d’utilisateurs. Pour plus d’informations, consultez la section [Cas d’utilisation pour les utilisateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dans le *Guide de l’utilisateur IAM*.

Vous pouvez vous authentifier auprès de votre cluster de bases de données à l’aide de l’authentification de base de données IAM.

L’authentification de base de données IAM fonctionne avec Aurora.Pour plus d’informations sur l’authentification auprès de votre cluster de bases de données avec IAM, consultez [Authentification de base de données IAM](UsingWithRDS.IAMDBAuth.md).

### Rôles IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* est une identité au sein de vous Compte AWS dotée d'autorisations spécifiques. Le concept ressemble à celui d’un utilisateur, mais un rôle n’est pas associé à une personne en particulier. Vous pouvez assumer temporairement un rôle IAM dans le en AWS Management Console [changeant de rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html). Vous pouvez assumer un rôle en appelant une opération d' AWS API AWS CLI ou en utilisant une URL personnalisée. Pour plus d’informations sur les méthodes d’utilisation des rôles, consultez [Utilisation de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) dans le *Guide de l’utilisateur IAM*.

Les rôles IAM avec des informations d’identification temporaires sont utiles dans les cas suivants :
+ **Autorisations utilisateur temporaires** : un utilisateur peut endosser un rôle IAM pour accepter différentes autorisations temporaires concernant une tâche spécifique. 
+ **Accès utilisateur fédéré** : pour attribuer des autorisations à une identité fédérée, vous créez un rôle et définissez des autorisations pour le rôle. Quand une identité externe s’authentifie, l’identité est associée au rôle et reçoit les autorisations qui sont définies par celui-ci. Pour obtenir des informations sur les rôles pour la fédération, consultez [ Création d’un rôle pour un fournisseur d’identité tiers (fédération)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) dans le *Guide de l’utilisateur IAM*. Si vous utilisez IAM Identity Center, vous configurez un jeu d’autorisations. IAM Identity Center met en corrélation le jeu d’autorisations avec un rôle dans IAM afin de contrôler à quoi vos identités peuvent accéder après leur authentification. Pour plus d’informations sur les jeux d’autorisations, consultez [Jeux d’autorisations](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *. 
+ **Accès intercompte** : vous pouvez utiliser un rôle IAM pour permettre à un utilisateur (principal de confiance) d’un compte différent d’accéder aux ressources de votre compte. Les rôles constituent le principal moyen d’accorder l’accès intercompte. Toutefois, dans certains Services AWS cas, vous pouvez associer une politique directement à une ressource (au lieu d'utiliser un rôle comme proxy). Pour en savoir plus sur la différence entre les rôles et les politiques basées sur les ressources pour l’accès intercompte, consultez [Différence entre les rôles IAM et les politiques basées sur les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_compare-resource-policies.html) dans le *Guide de l’utilisateur IAM*.
+ **Accès multiservices** — Certains Services AWS utilisent des fonctionnalités dans d'autres Services AWS. Par exemple, lorsque vous effectuez un appel dans un service, il est courant que ce service exécute des applications dans Amazon EC2 ou stocke des objets dans Amazon S3. Un service peut le faire en utilisant les autorisations d’appel du principal, un rôle de service ou un rôle lié au service. 
  + **Sessions d'accès** par transfert : les sessions d'accès par transfert (FAS) utilisent les autorisations du principal appelant et Service AWS, associées à la demande, Service AWS pour adresser des demandes aux services en aval. Pour plus de détails sur une politique lors de la formulation de demandes FAS, consultez [Transmission des sessions d’accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 
  + **Rôle de service** : il s’agit d’un [rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) attribué à un service afin de réaliser des actions en votre nom. Un administrateur IAM peut créer, modifier et supprimer un rôle de service à partir d’IAM. Pour plus d’informations, consultez [Création d’un rôle pour la délégation d’autorisations à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l’utilisateur IAM*. 
  + **Rôle lié à un service — Un rôle** lié à un service est un type de rôle de service lié à un. Service AWS Le service peut endosser le rôle afin d’effectuer une action en votre nom. Les rôles liés à un service apparaissent dans votre Compte AWS fichier et appartiennent au service. Un administrateur IAM peut consulter, mais ne peut pas modifier, les autorisations concernant les rôles liés à un service. 
+ **Applications exécutées sur Amazon EC2** : vous pouvez utiliser un rôle IAM pour gérer les informations d'identification temporaires pour les applications qui s'exécutent sur une EC2 instance et qui envoient des demandes AWS CLI d' AWS API. Cela est préférable au stockage des clés d'accès dans l' EC2 instance. Pour attribuer un AWS rôle à une EC2 instance et le rendre disponible pour toutes ses applications, vous devez créer un profil d'instance attaché à l'instance. Un profil d'instance contient le rôle et permet aux programmes exécutés sur l' EC2 instance d'obtenir des informations d'identification temporaires. Pour plus d'informations, consultez [Utiliser un rôle IAM pour accorder des autorisations aux applications exécutées sur des EC2 instances Amazon](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) dans le guide de l'*utilisateur IAM*. 

Pour savoir si vous devez utiliser ces rôles IAM ou non, consultez [Quand créer un rôle IAM (au lieu d’un utilisateur)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose_role) dans le *Guide de l’utilisateur IAM*.

## Gestion de l’accès à l’aide de politiques
<a name="security_iam_access-manage"></a>

Vous contrôlez l'accès en AWS créant des politiques et en les associant aux identités ou aux AWS ressources IAM. Une politique est un objet AWS qui, lorsqu'il est associé à une identité ou à une ressource, définit leurs autorisations. AWS évalue ces politiques lorsqu'une entité (utilisateur root, utilisateur ou rôle IAM) fait une demande. Les autorisations dans les politiques déterminent si la demande est autorisée ou refusée. La plupart des politiques sont stockées AWS sous forme de documents JSON. Pour plus d’informations sur la structure et le contenu des documents de politique JSON, consultez [Vue d’ensemble des politiques JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dans le *Guide de l’utilisateur IAM*.

Un administrateur peut utiliser des politiques pour spécifier qui a accès aux AWS ressources et quelles actions il peut effectuer sur ces ressources. Chaque entité IAM (jeu d’autorisations ou rôle) démarre sans autorisation. En d’autres termes, par défaut, les utilisateurs ne peuvent rien faire, pas même changer leurs propres mots de passe. Pour autoriser un utilisateur à effectuer une opération, un administrateur doit associer une politique d’autorisations à ce dernier. Il peut également ajouter l’utilisateur à un groupe disposant des autorisations prévues. Lorsqu’un administrateur accorde des autorisations à un groupe, tous les utilisateurs de ce groupe se voient octroyer ces autorisations.

Les politiques IAM définissent les autorisations d’une action, quelle que soit la méthode que vous utilisez pour exécuter l’opération. Par exemple, supposons que vous disposiez d’une politique qui autorise l’action `iam:GetRole`. Un utilisateur appliquant cette politique peut obtenir des informations sur le rôle à partir de AWS Management Console AWS CLI, de ou de l' AWS API.

### Politiques basées sur l’identité
<a name="security_iam_access-manage-id-based-policies"></a>

Les politiques basées sur l’identité sont des documents de politiques d’autorisations JSON que vous pouvez attacher à une identité telle qu’un jeu d’autorisations ou un rôle. Ces politiques contrôlent les actions que peut exécuter cette identité, sur quelles ressources et dans quelles conditions. Pour découvrir comment créer une politique basée sur l’identité, consultez [Création de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l’utilisateur IAM*.

Les politiques basées sur l’identité peuvent être classées comme des *politiques en ligne* ou des *politiques gérées*. Les politiques en ligne sont intégrées directement à un seul jeu d’autorisations ou rôle. Les politiques gérées sont des politiques autonomes que vous pouvez associer à plusieurs ensembles d'autorisations et rôles dans votre AWS compte. Les politiques gérées incluent les politiques AWS gérées et les politiques gérées par le client. Pour découvrir comment choisir entre une politique gérée et une politique en ligne, consultez [Choix entre les politiques gérées et les politiques en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#choosing-managed-or-inline) dans le *Guide de l’utilisateur IAM*.

Pour plus d'informations sur les politiques AWS gérées spécifiques à (Amazon Aurora), consultez[AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md).

### Autres types de politique
<a name="security_iam_access-manage-other-policies"></a>

AWS prend en charge d'autres types de politiques moins courants. Ces types de politiques peuvent définir le nombre maximum d’autorisations qui vous sont accordées par des types de politiques plus courants. 
+ **Limites des autorisations** : une limite des autorisations est une fonction avancée dans laquelle vous définissez le nombre maximal d’autorisations qu’une politique basée sur l’identité peut accorder à une entité IAM (jeu d’autorisations ou rôle). Vous pouvez définir une limite d’autorisations pour une entité. Les autorisations obtenues représentent la combinaison des politiques basées sur l’identité de l’entité et de ses limites d’autorisations. Les politiques basées sur les ressources qui spécifient le jeu d’autorisations ou le rôle dans le champ `Principal` ne sont pas limitées par les limites des autorisations. Un refus explicite dans l’une de ces politiques annule l’autorisation. Pour plus d’informations sur les limites d’autorisations, consultez [Limites d’autorisations pour des entités IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dans le *Guide de l’utilisateur IAM*.
+ **Politiques de contrôle des services (SCPs)** : SCPs politiques JSON qui spécifient les autorisations maximales pour une organisation ou une unité organisationnelle (UO) dans AWS Organizations. AWS Organizations est un service permettant de regrouper et de gérer de manière centralisée plusieurs AWS comptes détenus par votre entreprise. Si vous activez toutes les fonctionnalités d'une organisation, vous pouvez appliquer des politiques de contrôle des services (SCPs) à l'un ou à l'ensemble de vos comptes. Le SCP limite les autorisations pour les entités figurant dans les comptes des membres, y compris chacune Utilisateur racine d'un compte AWS d'entre elles. Pour plus d'informations sur les Organizations SCPs, voir [Comment SCPs travailler](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_about-scps.html) dans le *Guide de AWS Organizations l'utilisateur*.
+ **Politiques de session** : les politiques de session sont des politiques avancées que vous utilisez en tant que paramètre lorsque vous créez par programmation une session temporaire pour un rôle ou un utilisateur fédéré. Les autorisations de la session obtenues sont une combinaison des politiques basées sur l’identité du rôle ou des jeux d’autorisations et des politiques de session. Les autorisations peuvent également provenir d’une politique basée sur les ressources. Un refus explicite dans l’une de ces politiques annule l’autorisation. Pour plus d’informations, consultez [Politiques de session](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dans le *Guide de l’utilisateur IAM*. 

### Plusieurs types de politique
<a name="security_iam_access-manage-multiple-policies"></a>

Lorsque plusieurs types de politiques s’appliquent à la requête, les autorisations en résultant sont plus compliquées à comprendre. Pour savoir comment AWS déterminer s'il faut autoriser une demande lorsque plusieurs types de politiques sont impliqués, consultez la section [Logique d'évaluation des politiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) dans le *guide de l'utilisateur IAM*.

# Comment Amazon Aurora fonctionne avec IAM
<a name="security_iam_service-with-iam"></a>

Avant d’utiliser IAM pour gérer l’accès à Amazon Aurora, vous devez comprendre quelles sont les fonctions IAM disponibles à utiliser avec Aurora.

Le tableau suivant répertorie les fonctionnalités IAM que vous pouvez utiliser avec Amazon Aurora :


| Fonctionnalité IAM | Prise en charge d’Amazon Aurora | 
| --- | --- | 
|  [Politiques basées sur l’identité](#security_iam_service-with-iam-id-based-policies)  |  Oui  | 
|  [Politiques basées sur les ressources](#security_iam_service-with-iam-resource-based-policies)  |  Non  | 
|  [Actions de politique](#security_iam_service-with-iam-id-based-policies-actions)  |  Oui  | 
|  [Ressources de politique](#security_iam_service-with-iam-id-based-policies-resources)  |  Oui  | 
|  [Clés de condition de politique (spécifiques au service)](#UsingWithRDS.IAM.Conditions)  |  Oui  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |  Non  | 
|  [Contrôle d’accès par attributs (ABAC) (balises dans les politiques)](#security_iam_service-with-iam-tags)  |  Oui  | 
|  [Informations d’identification temporaires](#security_iam_service-with-iam-roles-tempcreds)  |  Oui  | 
|  [Transfert des sessions d’accès](#security_iam_service-with-iam-principal-permissions)  |  Oui  | 
|  [Rôles de service](#security_iam_service-with-iam-roles-service)  |  Oui  | 
|  [Rôles liés à un service](#security_iam_service-with-iam-roles-service-linked)  |  Oui  | 

Pour obtenir une vue d'ensemble de la manière dont , Amazon Aurora et d'autres AWS services fonctionnent avec IAM, consultez la section sur les [AWS services compatibles avec IAM dans le guide de l'utilisateur d'*IAM*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html).

**Topics**
+ [

## Stratégies basées sur l’identité Aurora
](#security_iam_service-with-iam-id-based-policies)
+ [

## Politiques basées sur les ressources au sein d’Aurora
](#security_iam_service-with-iam-resource-based-policies)
+ [

## Actions de politique pour Aurora
](#security_iam_service-with-iam-id-based-policies-actions)
+ [

## Ressources de politique pour Aurora
](#security_iam_service-with-iam-id-based-policies-resources)
+ [

## Clés de condition de politique pour Aurora
](#UsingWithRDS.IAM.Conditions)
+ [

## Listes de contrôle d'accès (ACLs) dans
](#security_iam_service-with-iam-acls)
+ [

## Contrôle d’accès par attributs (ABAC) dans les politiques avec des balises Aurora
](#security_iam_service-with-iam-tags)
+ [

## Utilisation des informations d’identification temporaires avec Aurora
](#security_iam_service-with-iam-roles-tempcreds)
+ [

## Transfert des sessions d’accès pour Aurora
](#security_iam_service-with-iam-principal-permissions)
+ [

## Rôles de service pour Aurora
](#security_iam_service-with-iam-roles-service)
+ [

## Rôles liés à un service pour Aurora
](#security_iam_service-with-iam-roles-service-linked)

## Stratégies basées sur l’identité Aurora
<a name="security_iam_service-with-iam-id-based-policies"></a>

**Prend en charge les politiques basées sur l’identité :** oui.

Les politiques basées sur l’identité sont des documents de politique d’autorisations JSON que vous pouvez attacher à une identité telle qu’un utilisateur, un groupe d’utilisateurs ou un rôle IAM. Ces politiques contrôlent quel type d’actions des utilisateurs et des rôles peuvent exécuter, sur quelles ressources et dans quelles conditions. Pour découvrir comment créer une politique basée sur l’identité, consultez [Définition d’autorisations IAM personnalisées avec des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l’utilisateur IAM*.

Avec les politiques IAM basées sur l’identité, vous pouvez spécifier des actions et ressources autorisées ou refusées, ainsi que les conditions dans lesquelles les actions sont autorisées ou refusées. Pour découvrir tous les éléments que vous utilisez dans une politique JSON, consultez [Références des éléments de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) dans le *Guide de l’utilisateur IAM*.

### Exemples de politiques basées sur l’identité pour Aurora
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>

Pour voir des exemples de stratégies Aurora basées sur l’identité, consultez [Exemples de politiques basées sur l’identité pour Amazon Aurora](security_iam_id-based-policy-examples.md).

## Politiques basées sur les ressources au sein d’Aurora
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**Prend en charge les politiques basées sur les ressources :** non.

Les politiques basées sur les ressources sont des documents de politique JSON que vous attachez à une ressource. Par exemple, les *politiques de confiance de rôle* IAM et les *politiques de compartiment* Amazon S3 sont des politiques basées sur les ressources. Dans les services qui sont compatibles avec les politiques basées sur les ressources, les administrateurs de service peuvent les utiliser pour contrôler l’accès à une ressource spécifique. Pour la ressource dans laquelle se trouve la politique, cette dernière définit quel type d’actions un principal spécifié peut effectuer sur cette ressource et dans quelles conditions. Vous devez [spécifier un principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dans une politique basée sur les ressources. Les principaux peuvent inclure des comptes, des utilisateurs, des rôles, des utilisateurs fédérés ou. Services AWS

Pour permettre un accès intercompte, vous pouvez spécifier un compte entier ou des entités IAM dans un autre compte en tant que principal dans une politique basée sur les ressources. Pour plus d’informations, consultez [Accès intercompte aux ressources dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le *Guide de l’utilisateur IAM*.

## Actions de politique pour Aurora
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**Prend en charge les actions de politique :** oui.

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément `Action` d’une politique JSON décrit les actions que vous pouvez utiliser pour autoriser ou refuser l’accès à une politique. Intégration d’actions dans une politique afin d’accorder l’autorisation d’exécuter les opérations associées.

Les actions de stratégie dans Aurora utilisent le préfixe suivant avant l’action : `rds:`. Par exemple, pour accorder à une personne l’autorisation de décrire les instances de base de données à l’aide de l’opération d’API Amazon RDS`DescribeDBInstances` , vous incluez l’action `rds:DescribeDBInstances` dans sa stratégie. Les déclarations de politique doivent inclure un élément `Action` ou `NotAction`. Aurora définit son propre ensemble d’actions qui décrivent les tâches que vous pouvez effectuer avec ce service.

Pour spécifier plusieurs actions dans une seule instruction, séparez-les par des virgules, comme suit :

```
"Action": [
      "rds:action1",
      "rds:action2"
```

Vous pouvez aussi préciser plusieurs actions à l’aide de caractères génériques (\$1). Par exemple, pour spécifier toutes les actions qui commencent par le mot `Describe`, incluez l’action suivante.

```
"Action": "rds:Describe*"
```



Pour afficher la liste des actions Aurora, consultez [Actions définies par Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions) dans *Référence de l’autorisation de service*.

## Ressources de politique pour Aurora
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**Prend en charge les ressources de politique :** oui.

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément de politique JSON `Resource` indique le ou les objets auxquels l’action s’applique. Il est recommandé de définir une ressource à l’aide de son [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Pour les actions qui ne sont pas compatibles avec les autorisations de niveau ressource, utilisez un caractère générique (\$1) afin d’indiquer que l’instruction s’applique à toutes les ressources.

```
"Resource": "*"
```

La ressource d’instance de base de données possède l’ARN (Amazon Resource Name) suivant.

```
arn:${Partition}:rds:${Region}:${Account}:{ResourceType}/${Resource}
```

Pour plus d'informations sur le format de ARNs, consultez [Amazon Resource Names (ARNs) et espaces de noms AWS de services](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Par exemple, pour spécifier l’instance de base de données `dbtest` dans votre instruction, utilisez l’ARN suivant.

```
"Resource": "arn:aws:rds:us-west-2:123456789012:db:dbtest"
```

Pour spécifier toutes les instances de base de données qui appartiennent à un compte spécifique, utilisez le caractère générique (\$1).

```
"Resource": "arn:aws:rds:us-east-1:123456789012:db:*"
```

Certaines opérations d’API RDS, telles que la création de ressources, ne peuvent pas être exécutées sur une ressource spécifique. Dans ces cas-là, utilisez le caractère générique (\$1).

```
"Resource": "*"
```

De nombreuses opérations d’API Amazon RDS nécessitent plusieurs ressources. Par exemple, `CreateDBInstance` crée une instance de base de données. Vous pouvez spécifier qu’un utilisateur doit utiliser un groupe de sécurité spécifique et un groupe de paramètres lors de la création d’une instance de base de données. Pour spécifier plusieurs ressources dans une seule instruction, séparez-les ARNs par des virgules. 

```
"Resource": [
      "resource1",
      "resource2"
```

Pour consulter la liste des types de ressources Aurora et leurs caractéristiques ARNs, consultez la section [Ressources définies par Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-resources-for-iam-policies) dans le *Service Authorization Reference*. Pour savoir les actions avec lesquelles vous pouvez spécifier l’ARN de chaque ressource, consultez [Actions définies par Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions).

## Clés de condition de politique pour Aurora
<a name="UsingWithRDS.IAM.Conditions"></a>

**Prend en charge les clés de condition de politique spécifiques au service :** oui.

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément `Condition` indique à quel moment les instructions s’exécutent en fonction de critères définis. Vous pouvez créer des expressions conditionnelles qui utilisent des [opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), tels que les signes égal ou inférieur à, pour faire correspondre la condition de la politique aux valeurs de la demande. Pour voir toutes les clés de condition AWS globales, voir les clés de [contexte de condition AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dans le *guide de l'utilisateur IAM*.

Aurora définit son propre ensemble de clés de condition et prend également en charge l’utilisation des clés de condition globales. Pour voir toutes les clés de condition AWS globales, voir les clés de [contexte de condition AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dans le *guide de l'utilisateur IAM*.



 Toutes les opérations d’API RDS prennent en charge la clé de condition `aws:RequestedRegion`. 

Pour afficher la liste des clés de condition Aurora, consultez [Clés de condition pour Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-policy-keys) dans la *Référence de l’autorisation de service*. Pour savoir avec quelles actions et ressources vous pouvez utiliser une clé de condition, consultez [Actions définies par Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions).

## Listes de contrôle d'accès (ACLs) dans
<a name="security_iam_service-with-iam-acls"></a>

**Supporte les listes de contrôle d'accès (ACLs) :** Non

Les listes de contrôle d'accès (ACLs) contrôlent les principaux (membres du compte, utilisateurs ou rôles) autorisés à accéder à une ressource. ACLs sont similaires aux politiques basées sur les ressources, bien qu'elles n'utilisent pas le format de document de politique JSON.

## Contrôle d’accès par attributs (ABAC) dans les politiques avec des balises Aurora
<a name="security_iam_service-with-iam-tags"></a>

**Prend en charge les balises dans les politiques pour le contrôle d’accès par attributs (ABAC) :** oui

Le contrôle d’accès par attributs (ABAC) est une stratégie d’autorisation qui définit les autorisations en fonction des attributs appelés balises. Vous pouvez associer des balises aux entités et aux AWS ressources IAM, puis concevoir des politiques ABAC pour autoriser les opérations lorsque la balise du principal correspond à la balise de la ressource.

Pour contrôler l’accès basé sur des étiquettes, vous devez fournir les informations d’étiquette dans l’[élément de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) d’une politique utilisant les clés de condition `aws:ResourceTag/key-name`, `aws:RequestTag/key-name` ou `aws:TagKeys`.

Si un service prend en charge les trois clés de condition pour tous les types de ressources, alors la valeur pour ce service est **Oui**. Si un service prend en charge les trois clés de condition pour certains types de ressources uniquement, la valeur est **Partielle**.

Pour plus d’informations sur ABAC, consultez [Définition d’autorisations avec l’autorisation ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) dans le *Guide de l’utilisateur IAM*. Pour accéder à un didacticiel décrivant les étapes de configuration de l’ABAC, consultez [Utilisation du contrôle d’accès par attributs (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) dans le *Guide de l’utilisateur IAM*.

Pour plus d’informations sur le balisage des ressources Aurora, consultez [Spécification de conditions : Utilisation de balises personnalisées](UsingWithRDS.IAM.SpecifyingCustomTags.md). Pour visualiser un exemple de politique basée sur l’identité permettant de limiter l’accès à une ressource en fonction des balises de cette ressource, consultez [Accorder une autorisation pour des actions sur une ressource à l’aide d’une balise spécifique avec deux valeurs différentes](security_iam_id-based-policy-examples-create-and-modify-examples.md#security_iam_id-based-policy-examples-grant-permissions-tags).

## Utilisation des informations d’identification temporaires avec Aurora
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**Prend en charge les informations d’identification temporaires :** oui.

Les informations d'identification temporaires fournissent un accès à court terme aux AWS ressources et sont automatiquement créées lorsque vous utilisez la fédération ou que vous changez de rôle. AWS recommande de générer dynamiquement des informations d'identification temporaires au lieu d'utiliser des clés d'accès à long terme. Pour plus d’informations, consultez [Informations d’identification de sécurité temporaires dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) et [Services AWS compatibles avec IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) dans le *Guide de l’utilisateur IAM*.

## Transfert des sessions d’accès pour Aurora
<a name="security_iam_service-with-iam-principal-permissions"></a>

**Prend en charge le transfert des sessions d’accès :** oui.

 Les sessions d'accès direct (FAS) utilisent les autorisations du principal appelant et Service AWS, combinées Service AWS à la demande d'envoi de demandes aux services en aval. Pour plus de détails sur une politique lors de la formulation de demandes FAS, consultez [Transfert des sessions d’accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 

## Rôles de service pour Aurora
<a name="security_iam_service-with-iam-roles-service"></a>

**Prend en charge les rôles de service :** oui.

 Un rôle de service est un [rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) qu’un service endosse pour accomplir des actions en votre nom. Un administrateur IAM peut créer, modifier et supprimer un rôle de service à partir d’IAM. Pour plus d’informations, consultez [Création d’un rôle pour la délégation d’autorisations à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l’utilisateur IAM*. 

**Avertissement**  
La modification des autorisations d’un rôle de service peut altérer la fonctionnalité d’Aurora. Ne modifiez des rôles de service que quand Aurora vous le conseille.

## Rôles liés à un service pour Aurora
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**Prend en charge les rôles liés à un service :** oui.

 Un rôle lié à un service est un type de rôle de service lié à un. Service AWS Le service peut endosser le rôle afin d’effectuer une action en votre nom. Les rôles liés au service apparaissent dans votre Compte AWS fichier et appartiennent au service. Un administrateur IAM peut consulter, mais ne peut pas modifier, les autorisations concernant les rôles liés à un service. 

Pour plus d’informations l’utilisation des rôles liés à un service Aurora, consultez [Utilisation des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md).

# Exemples de politiques basées sur l’identité pour Amazon Aurora
<a name="security_iam_id-based-policy-examples"></a>

Par défaut, les jeux d’autorisations et les rôles ne sont pas autorisés à créer ou modifier des ressources Aurora. Ils ne peuvent pas non plus effectuer de tâches à l'aide de l' AWS API AWS Management Console AWS CLI, ou. Un administrateur doit créer des politiques IAM autorisant les jeux d’autorisations et les rôles à exécuter des opérations d’API spécifiques sur les ressources spécifiées dont ils ont besoin. L’administrateur doit ensuite attacher ces politiques aux jeux d’autorisations et aux rôles qui ont besoin de ces autorisations.

Pour apprendre à créer une politique basée sur l’identité IAM à l’aide de ces exemples de documents de politique JSON, consultez [Création de politiques dans l’onglet JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor) dans le *Guide de l’utilisateur IAM*.

**Topics**
+ [

## Bonnes pratiques en matière de politiques
](#security_iam_service-with-iam-policy-best-practices)
+ [

## Utilisation de la console Aurora
](#security_iam_id-based-policy-examples-console)
+ [

## Autorisations requises pour utiliser la console
](#UsingWithRDS.IAM.RequiredPermissions.Console)
+ [

## Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations
](#security_iam_id-based-policy-examples-view-own-permissions)
+ [

# Politiques d’autorisation pour créer, modifier et supprimer des ressources dans Aurora
](security_iam_id-based-policy-examples-create-and-modify-examples.md)
+ [

# Exemples de politiques : Utilisation des clés de condition
](UsingWithRDS.IAM.Conditions.Examples.md)
+ [

# Spécification de conditions : Utilisation de balises personnalisées
](UsingWithRDS.IAM.SpecifyingCustomTags.md)
+ [

# Octroi d’autorisation de baliser les ressources Aurora lors de la création
](security_iam_id-based-policy-examples-grant-permissions-tags-on-create.md)

## Bonnes pratiques en matière de politiques
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Les stratégies basées sur l’identité déterminent si une personne peut créer, consulter ou supprimer des ressources Amazon RDS dans votre compte. Ces actions peuvent entraîner des frais pour votre Compte AWS. Lorsque vous créez ou modifiez des politiques basées sur l’identité, suivez ces instructions et recommandations :
+ **Commencez AWS par les politiques gérées et passez aux autorisations du moindre privilège : pour commencer à accorder des autorisations** à vos utilisateurs et à vos charges de travail, utilisez les *politiques AWS gérées* qui accordent des autorisations pour de nombreux cas d'utilisation courants. Ils sont disponibles dans votre Compte AWS. Nous vous recommandons de réduire davantage les autorisations en définissant des politiques gérées par les AWS clients spécifiques à vos cas d'utilisation. Pour plus d’informations, consultez [politiques gérées par AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) ou [politiques gérées par AWS pour les activités professionnelles](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dans le *Guide de l’utilisateur IAM*.
+ **Accordez les autorisations de moindre privilège** : lorsque vous définissez des autorisations avec des politiques IAM, accordez uniquement les autorisations nécessaires à l’exécution d’une seule tâche. Pour ce faire, vous définissez les actions qui peuvent être entreprises sur des ressources spécifiques dans des conditions spécifiques, également appelées *autorisations de moindre privilège*. Pour plus d’informations sur l’utilisation d’IAM pour appliquer des autorisations, consultez [politiques et autorisations dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dans le *Guide de l’utilisateur IAM*.
+ **Utilisez des conditions dans les politiques IAM pour restreindre davantage l’accès** : vous pouvez ajouter une condition à vos politiques afin de limiter l’accès aux actions et aux ressources. Par exemple, vous pouvez écrire une condition de politique pour spécifier que toutes les demandes doivent être envoyées via SSL. Vous pouvez également utiliser des conditions pour accorder l'accès aux actions de service si elles sont utilisées par le biais d'un service spécifique Service AWS, tel que CloudFormation. Pour plus d’informations, consultez [Conditions pour éléments de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dans le *Guide de l’utilisateur IAM*.
+ **Utilisez l’Analyseur d’accès IAM pour valider vos politiques IAM afin de garantir des autorisations sécurisées et fonctionnelles** : l’Analyseur d’accès IAM valide les politiques nouvelles et existantes de manière à ce que les politiques IAM respectent le langage de politique IAM (JSON) et les bonnes pratiques IAM. IAM Access Analyzer fournit plus de 100 vérifications de politiques et des recommandations exploitables pour vous aider à créer des politiques sécurisées et fonctionnelles. Pour plus d’informations, consultez [Validation de politiques avec IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dans le *Guide de l’utilisateur IAM*.
+ **Exiger l'authentification multifactorielle (MFA**) : si vous avez un scénario qui nécessite des utilisateurs IAM ou un utilisateur root, activez l'authentification MFA pour une sécurité accrue. Compte AWS Pour exiger la MFA lorsque des opérations d’API sont appelées, ajoutez des conditions MFA à vos politiques. Pour plus d’informations, consultez [Sécurisation de l’accès aux API avec MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) dans le *Guide de l’utilisateur IAM*.

Pour plus d’informations sur les bonnes pratiques dans IAM, consultez [Bonnes pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans le *Guide de l’utilisateur IAM*.

## Utilisation de la console Aurora
<a name="security_iam_id-based-policy-examples-console"></a>

Pour accéder à la console Amazon Aurora, vous devez disposer d’un ensemble minimal d’autorisations. Ces autorisations doivent vous permettre de répertorier et de consulter les informations relatives aux ressources Amazon Aurora présentes dans votre Compte AWS. Si vous créez une politique basée sur l’identité qui est plus restrictive que l’ensemble minimum d’autorisations requis, la console ne fonctionnera pas comme prévu pour les entités (utilisateurs ou rôles) tributaires de cette politique.

Il n'est pas nécessaire d'accorder des autorisations de console minimales aux utilisateurs qui appellent uniquement l'API AWS CLI ou l' AWS API. Autorisez plutôt l’accès à uniquement aux actions qui correspondent à l’opération d’API que vous tentez d’effectuer.

Pour garantir que ces entités peuvent toujours utiliser la console Aurora, associez également la politique AWS gérée suivante aux entités.

```
AmazonRDSReadOnlyAccess
```

Pour plus d’informations, consultez [Ajout d’autorisations à un utilisateur](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) dans le *Guide de l’utilisateur IAM*.

## Autorisations requises pour utiliser la console
<a name="UsingWithRDS.IAM.RequiredPermissions.Console"></a>

Pour qu’un utilisateur puisse utiliser la console, il doit avoir un ensemble minimal d’autorisations. Ces autorisations permettent à l'utilisateur de décrire les ressources Amazon Aurora associées à son AWS compte et de fournir d'autres informations connexes, notamment des informations relatives à la sécurité et au réseau Amazon EC2.

Si vous créez une politique IAM plus restrictive que les autorisations minimales requises, la console ne fonctionne pas comme prévu pour les utilisateurs dotés de cette politique IAM. Pour garantir que ces utilisateurs puissent continuer à utiliser la console, attachez également la stratégie gérée `AmazonRDSReadOnlyAccess` à l’utilisateur, comme décrit dans [Gestion de l’accès à l’aide de politiques](UsingWithRDS.IAM.md#security_iam_access-manage).

Vous n’avez pas besoin d’accorder d’autorisations minimales d’utilisation de la console aux utilisateurs qui effectuent des appels uniquement à l’ AWS CLI ou à l’API Amazon RDS. 

La politique suivante accorde un accès complet à toutes les ressources Amazon Aurora pour le AWS compte racine :

```
AmazonRDSFullAccess             
```

## Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Cet exemple montre comment créer une politique qui permet aux utilisateurs IAM d’afficher les politiques en ligne et gérées attachées à leur identité d’utilisateur. Cette politique inclut les autorisations permettant d'effectuer cette action sur la console ou par programmation à l'aide de l'API AWS CLI or AWS .

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Politiques d’autorisation pour créer, modifier et supprimer des ressources dans Aurora
<a name="security_iam_id-based-policy-examples-create-and-modify-examples"></a>

Les sections suivantes présentent des exemples de politiques d’autorisation qui accordent et restreignent l’accès aux ressources :

## Autoriser un utilisateur à créer des instances de base de données dans un AWS compte
<a name="security_iam_id-based-policy-examples-create-db-instance-in-account"></a>

Voici un exemple de politique qui permet au compte doté de l'ID de `123456789012` créer des instances de base de données pour votre AWS compte. La stratégie exige que le nom de la nouvelle instance de base de données commence par `test`. La nouvelle instance de base de données doit également utiliser le moteur de base de données MySQL et la classe d’instance de base de données `db.t2.micro`. En outre, la nouvelle instance de base de données doit utiliser un groupe d’options et un groupe de paramètres de base de données commençant par `default`, et elle doit utiliser le groupe de sous-réseaux `default`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowCreateDBInstanceOnly",
         "Effect": "Allow",
         "Action": [
            "rds:CreateDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:db:test*",
            "arn:aws:rds:*:123456789012:og:default*",
            "arn:aws:rds:*:123456789012:pg:default*",
            "arn:aws:rds:*:123456789012:subgrp:default"
         ],
         "Condition": {
            "StringEquals": {
               "rds:DatabaseEngine": "mysql",
               "rds:DatabaseClass": "db.t2.micro"
            }
         }
      }
   ]
}
```

------

La stratégie inclut une instruction unique spécifiant les autorisations suivantes pour l’utilisateur  :
+ La politique permet au compte de créer une instance de base de données à l'aide de l'opération [Create DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API (cela s'applique également à la [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI commande et au AWS Management Console).
+ L’élément `Resource` spécifie que l’utilisateur peut effectuer des actions sur et avec des ressources. Vous indiquez des ressources à l’aide d’un nom ARN (Amazon Resources Name). Cet ARN inclut le nom du service auquel appartient la ressource (`rds`), la AWS région (`*`indique n'importe quelle région dans cet exemple), le numéro de AWS compte (`123456789012`il s'agit du numéro de compte dans cet exemple) et le type de ressource. Pour plus d'informations sur la création ARNs, consultez[Amazon Resource Names (ARN) dans Amazon RDS](USER_Tagging.ARN.md).

  L’élément `Resource` dans l’exemple spécifie les contraintes de stratégie suivantes sur les ressources de l’utilisateur :
  + L’identifiant d’instance de base de données de la nouvelle instance de base de données doit commencer par `test` (par exemple, `testCustomerData1`, `test-region2-data`).
  + Le groupe d’options de la nouvelle instance de base de données doit commencer par `default`.
  + Le groupe de paramètres de base de données de la nouvelle instance de base de données doit commencer par `default`.
  + Le groupe de sous-réseaux de la nouvelle instance de base de données doit être le groupe de sous-réseaux `default`.
+ L’élément `Condition` indique que le moteur de base de données doit être MySQL et la classe d’instance de base de données doit être `db.t2.micro`. L’élément `Condition` indique les conditions lorsqu’une stratégie doit entrer en vigueur. Vous pouvez ajouter des autorisations ou des restrictions supplémentaires à l’aide de l’élément `Condition`. Pour plus d’informations sur la spécification de conditions, consultez [Clés de condition de politique pour Aurora](security_iam_service-with-iam.md#UsingWithRDS.IAM.Conditions). Cet exemple spécifie les conditions `rds:DatabaseEngine` et `rds:DatabaseClass`. Pour plus d'informations sur les valeurs de condition valides pour`rds:DatabaseEngine`, consultez la liste sous le `Engine` paramètre dans [Create DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html). Pour plus d’informations sur les valeurs de conditions valides pour `rds:DatabaseClass`, consultez [Moteurs de base de données pris en charge pour les classes d’instance de base de données](Concepts.DBInstanceClass.SupportAurora.md). 

La politique ne spécifie pas l’élément `Principal` car, dans une politique basée sur une identité, vous ne spécifiez pas le principal qui obtient l’autorisation. Quand vous attachez une politique à un utilisateur, l’utilisateur est le principal implicite. Lorsque vous attachez une politique d’autorisation à un rôle IAM, le principal identifié dans la politique d’approbation de ce rôle obtient les autorisations.

Pour afficher la liste des actions Aurora, consultez [Actions définies par Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions) dans *Référence de l’autorisation de service*.

## Autoriser un utilisateur à effectuer une action Describe sur une ressource RDS
<a name="IAMPolicyExamples-RDS-perform-describe-action"></a>

La politique d’autorisation suivante accorde des autorisations à un utilisateur lui permettant d’exécuter toutes les actions commençant par `Describe`. Ces actions affichent des informations sur une ressource RDS, telle qu’une instance de base de données. Le caractère générique (\$1) figurant dans l’élément `Resource` indique que les actions sont autorisées pour toutes les ressources Amazon Aurora détenues par le compte. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowRDSDescribe",
         "Effect": "Allow",
         "Action": "rds:Describe*",
         "Resource": "*"
      }
   ]
}
```

------

## Autoriser un utilisateur à créer une instance de base de données qui utilise le groupe de paramètres de base de données et le groupe de sous-réseau spécifiés
<a name="security_iam_id-based-policy-examples-create-db-instance-specified-groups"></a>

La politique d’autorisation suivante accorde des autorisations permettant à un utilisateur de créer uniquement une instance de base de données devant utiliser le groupe de paramètres de base de données `mydbpg` et le groupe de sous-réseau de base de données `mydbsubnetgroup`. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": "rds:CreateDBInstance",
         "Resource": [
            "arn:aws:rds:*:*:pg:mydbpg",
            "arn:aws:rds:*:*:subgrp:mydbsubnetgroup"
         ]
      }
   ]
}
```

------

## Accorder une autorisation pour des actions sur une ressource à l’aide d’une balise spécifique avec deux valeurs différentes
<a name="security_iam_id-based-policy-examples-grant-permissions-tags"></a>

Vous pouvez utiliser des conditions dans votre stratégie basée sur l’identité pour contrôler l’accès aux ressources Aurora en fonction des balises. La politique suivante accorde l’autorisation d’exécuter l’opération d’API `CreateDBSnapshot` sur les instances de base de données avec la balise `stage` définie sur `development` ou `test`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAnySnapshotName",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:snapshot:*"
      },
      {
         "Sid":"AllowDevTestToCreateSnapshot",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

La politique suivante accorde l’autorisation d’exécuter l’opération d’API `ModifyDBInstance` sur les instances de base de données avec la balise `stage` définie sur `development` ou `test`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowChangingParameterOptionSecurityGroups",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:pg:*",
            "arn:aws:rds:*:123456789012:secgrp:*",
            "arn:aws:rds:*:123456789012:og:*"
         ]
      },
      {
         "Sid":"AllowDevTestToModifyInstance",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

## Empêcher un utilisateur de supprimer une instance de base de données
<a name="IAMPolicyExamples-RDS-prevent-db-deletion"></a>

La politique d’autorisation suivante accorde des autorisations empêchant un utilisateur de supprimer une instance de base de données spécifique. Par exemple, il est possible de refuser la capacité à supprimer vos instances de base de données de production à un utilisateur quelconque qui n’est pas un administrateur.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "DenyDelete1",
         "Effect": "Deny",
         "Action": "rds:DeleteDBInstance",
         "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
      }
   ]
}
```

------

## Refuser tout accès à une ressource
<a name="IAMPolicyExamples-RDS-deny-all-access"></a>

Vous pouvez refuser explicitement l’accès à une ressource. Les politiques de refus ont priorité sur les politiques d’autorisation. La politique suivante refuse explicitement à un utilisateur la possibilité de gérer une ressource :

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Deny",
         "Action": "rds:*",
         "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb"
      }
   ]
}
```

------

# Exemples de politiques : Utilisation des clés de condition
<a name="UsingWithRDS.IAM.Conditions.Examples"></a>

Les exemples suivants montrent comment vous pouvez utiliser des clés de condition dans les stratégies d'autorisation IAM Amazon Aurora. 

## Exemple 1 : Accorder l'autorisation de créer une instance de base de données qui utilise un moteur de base de données spécifique et n'est pas Multi-AZ
<a name="w2aac73c48c33c21b5"></a>

La politique suivante utilise une clé de condition RDS et autorise un utilisateur à créer seulement des instances de bases de données qui utilisent le moteur de base de données MySQL et n'utilisent pas la configuration Multi-AZ. L'élément `Condition` indique l'exigence que le moteur de base de données soit MySQL. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowMySQLCreate",
         "Effect": "Allow",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "StringEquals": {
               "rds:DatabaseEngine": "mysql"
            },
            "Bool": {
               "rds:MultiAz": false
            }
         }
      }
   ]
}
```

------

## Exemple 2 : Refuser explicitement l'autorisation de créer des instances de bases de données pour certaines classes d'instance de base de données et de créer des instances de bases de données qui utilisent les IOPS provisionnées
<a name="w2aac73c48c33c21b7"></a>

La stratégie suivante refuse explicitement l'autorisation de créer des instances de bases de données qui utilisent les classes d'instance de base de données `r3.8xlarge` et `m4.10xlarge`, lesquelles représentent les classes d'instances de base de données les plus grandes et les plus onéreuses. Cette politique empêche également les utilisateurs de créer des instances de bases de données qui utilisent les IOPS provisionnées, ce qui génère un coût additionnel. 

Le refus explicite d'une autorisation a priorité sur toutes les autres autorisations accordées. Cela garantit que des identités n'obtiendront pas par erreur une autorisation que vous ne souhaitez pas accorder.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "DenyLargeCreate",
         "Effect": "Deny",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "StringEquals": {
               "rds:DatabaseClass": [
                  "db.r3.8xlarge",
                  "db.m4.10xlarge"
               ]
            }
         }
      },
      {
         "Sid": "DenyPIOPSCreate",
         "Effect": "Deny",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "NumericNotEquals": {
               "rds:Piops": "0"
            }
         }
      }
   ]
}
```

------

## Exemple 3 : Limiter l'ensemble de clés et de valeurs de balise pouvant être utilisées pour baliser une ressource
<a name="w2aac73c48c33c21b9"></a>

La politique suivante utilise une clé de condition RDS et autorise l'ajout d'une balise avec la clé `stage` à une ressource avec les valeurs `test`, `qa` et `production`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowTagEdits",
      "Effect": "Allow",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource": "arn:aws:rds:us-east-1:123456789012:db:db-123456",
      "Condition": {
        "StringEquals": {
          "rds:req-tag/stage": [
            "test",
            "qa",
            "production"
          ]
        }
      }
    }
  ]
}
```

------

# Spécification de conditions : Utilisation de balises personnalisées
<a name="UsingWithRDS.IAM.SpecifyingCustomTags"></a>

Amazon Aurora prend en charge la spécification de conditions dans une stratégie IAM à l'aide de balises personnalisées.

Par exemple, supposons que vous ajoutiez une balise nommée `environment` à vos instances de base de données avec des valeurs telles que `beta`, `staging`, `production`, etc. Dans ce cas, vous pouvez créer une stratégie qui limite certains utilisateurs aux instances de base de données fondées sur la valeur de balise `environment`.

**Note**  
Les identifiants des balises personnalisées sont sensibles à la casse.

Le tableau suivant répertorie les identifiants des balises RDS que vous pouvez utiliser dans un élément `Condition`. 

<a name="rds-iam-condition-tag-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAM.SpecifyingCustomTags.html)

La syntaxe d'une condition de balise personnalisée est la suivante :

`"Condition":{"StringEquals":{"rds:rds-tag-identifier/tag-name": ["value"]} }` 

Par exemple, l'élément `Condition` suivant s'applique aux instances de bases de données avec une balise nommée `environment` et la valeur de balise `production`. 

` "Condition":{"StringEquals":{"rds:db-tag/environment": ["production"]} } ` 

Pour plus d'informations sur la création de balises, consultez [Marquage des ressources Amazon Aurora et Amazon RDS](USER_Tagging.md).

**Important**  
Si vous gérez l'accès à vos ressources RDS à l'aide du balisage, nous vous recommandons de sécuriser l'accès aux balises pour vos ressources RDS. Vous pouvez gérer l'accès aux balises en créant des stratégies pour les actions `AddTagsToResource` et `RemoveTagsFromResource`. Par exemple, la politique suivante refuse aux utilisateurs la capacité à ajouter ou supprimer des balises pour toutes les ressources. Vous pouvez alors créer des politiques pour autoriser des utilisateurs spécifiques à ajouter ou supprimer des balises.   

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyTagUpdates",
         "Effect":"Deny",
         "Action":[
            "rds:AddTagsToResource",
            "rds:RemoveTagsFromResource"
         ],
         "Resource":"*"
      }
   ]
}
```

Pour afficher la liste des actions Aurora, consultez [Actions définies par Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions) dans *Référence de l'autorisation de service*.

## Exemples de politiques : Utilisation de balises personnalisées
<a name="UsingWithRDS.IAM.Conditions.Tags.Examples"></a>

Les exemples suivants montrent comment vous pouvez utiliser des balises personnalisées dans les stratégies d'autorisation IAM Amazon Aurora. Pour plus d'informations sur l'ajout de balises à une ressource Amazon Aurora, consultez [Amazon Resource Names (ARN) dans Amazon RDS](USER_Tagging.ARN.md). 

**Note**  
Tous les exemples utilisent la région us-west-2 et contiennent un compte fictif. IDs

### Exemple 1 : Accorder une autorisation pour des actions sur une ressource à l'aide d'une balise spécifique avec deux valeurs différentes
<a name="w2aac73c48c33c23c29b6"></a>

La politique suivante accorde l'autorisation d'exécuter l'opération d'API `CreateDBSnapshot` sur les instances de base de données avec la balise `stage` définie sur `development` ou `test`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAnySnapshotName",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:snapshot:*"
      },
      {
         "Sid":"AllowDevTestToCreateSnapshot",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

La politique suivante accorde l'autorisation d'exécuter l'opération d'API `ModifyDBInstance` sur les instances de base de données avec la balise `stage` définie sur `development` ou `test`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowChangingParameterOptionSecurityGroups",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
            ],
          "Resource": [
            "arn:aws:rds:*:123456789012:pg:*",
            "arn:aws:rds:*:123456789012:secgrp:*",
            "arn:aws:rds:*:123456789012:og:*"
            ]
       },
       {
         "Sid":"AllowDevTestToModifyInstance",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
            ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
               "rds:db-tag/stage":[
                  "development",
                  "test"
                  ]
               }
            }
       }
    ]
}
```

------

### Exemple 2 : Refuser explicitement l'autorisation de créer une instance de base de données qui utilise les groupes de paramètres DB spécifiés
<a name="w2aac73c48c33c23c29b8"></a>

La politique suivante refuse explicitement l'autorisation de créer une instance de base de données qui utilise les groupes de paramètres DB avec des valeurs de balise spécifiques. Vous pouvez appliquer cette politique si vous avez besoin qu'un groupe de paramètres DB créé par le client soit toujours utilisé lors de la création des instances de bases de données. Notez que les stratégies qui utilisent `Deny` sont le plus souvent utilisées pour limiter un accès accordé par une stratégie plus large.

Le refus explicite d'une autorisation a priorité sur toutes les autres autorisations accordées. Cela garantit que des identités n'obtiendront pas par erreur une autorisation que vous ne souhaitez pas accorder.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyProductionCreate",
         "Effect":"Deny",
         "Action":"rds:CreateDBInstance",
         "Resource":"arn:aws:rds:*:123456789012:pg:*",
         "Condition":{
            "StringEquals":{
               "rds:pg-tag/usage":"prod"
            }
         }
      }
   ]
}
```

------

### Exemple 3 : Accorder une autorisation pour des actions sur une instance de base de données dont le nom d'instance a un nom d'utilisateur comme préfixe
<a name="w2aac73c48c33c23c29c10"></a>

La stratégie suivante accorde l'autorisation d'appeler une API quelconque (à l'exception de `AddTagsToResource` et de `RemoveTagsFromResource`) sur une instance de base de données dont le nom d'instance de base de données a comme préfixe le nom de l'utilisateur et a une balise nommée `stage` égale à `devo` ou qui n'a pas de balise nommée `stage`.

La ligne `Resource` dans la stratégie identifie une ressource par son Amazon Resource Name (ARN). Pour plus d'informations sur l'utilisation ARNs des ressources , consultez[Amazon Resource Names (ARN) dans Amazon RDS](USER_Tagging.ARN.md). 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowFullDevAccessNoTags",
         "Effect":"Allow",
         "NotAction":[
            "rds:AddTagsToResource",
            "rds:RemoveTagsFromResource"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:${aws:username}*",
         "Condition":{
            "StringEqualsIfExists":{
               "rds:db-tag/stage":"devo"
            }
         }
      }
   ]
}
```

------

# Octroi d’autorisation de baliser les ressources Aurora lors de la création
<a name="security_iam_id-based-policy-examples-grant-permissions-tags-on-create"></a>

Certaines actions RDS API vous permettent de spécifier des balises lorsque vous créez la ressource. Vous pouvez utiliser des balises de ressource pour implémenter le contrôle basé sur les attributs (ABAC). Pour plus d'informations, voir [À quoi sert ABAC ? AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) et [Contrôle de l'accès aux AWS ressources à l'aide de balises](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html).

Pour permettre aux utilisateurs d’attribuer des balises aux ressources au moment de la création, ils doivent avoir les autorisations d’utiliser l’action qui crée la ressource (par exemple, `rds:CreateDBCluster`). Si les balises sont spécifiées dans l’action de création, RDS effectue des autorisations supplémentaires sur l’action `rds:AddTagsToResource` afin de vérifier si les utilisateurs disposent des autorisations nécessaires pour créer des balises. Par conséquent, les utilisateurs doivent également avoir des autorisations explicites d’utiliser l’action `rds:AddTagsToResource`.

Dans la définition de politique IAM de l’action `rds:AddTagsToResource`, vous pouvez utiliser la clé de condition `aws:RequestTag` pour exiger des balises dans une demande de balisage d’une ressource.

Par exemple, la politique suivante permet aux utilisateurs de créer des instances de base de données et d’appliquer des balises lors de la création d’une instances de base de données, mais uniquement avec des clés de balise spécifiques (`environment` ou `project`) :

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "rds:CreateDBInstance"
           ],
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "rds:AddTagsToResource"
           ],
           "Resource": "*",
           "Condition": {
               "StringEquals": {
                   "aws:RequestTag/environment": ["production", "development"],
                   "aws:RequestTag/project": ["dataanalytics", "webapp"]
               },
               "ForAllValues:StringEquals": {
                   "aws:TagKeys": ["environment", "project"]
               }
           }
       }
   ]
}
```

------

Cette politique refuse toute demande de création d’instance de base de données qui inclut les balises `environment` ou `project`, ou qui ne spécifie aucune de ces balises. En outre, les utilisateurs doivent spécifier des valeurs pour les balises qui correspondent aux valeurs autorisées dans la politique.

La politique suivante permet aux utilisateurs de créer des clusters de bases de données et d’appliquer des balises pendant la création, à l’exception de la balise `environment=prod` :

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "rds:CreateDBCluster"
           ],
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "rds:AddTagsToResource"
           ],
           "Resource": "*",
           "Condition": {
               "StringNotEquals": {
                   "aws:RequestTag/environment": "prod"
               }
           }
       }
   ]
}
```

------

## Actions d’API RDS prises en charge pour le balisage lors de la création
<a name="security_iam_id-based-policy-examples-supported-rds-api-actions-tagging-creation"></a>

Les actions d’API RDS suivantes prennent en charge le balisage lors de la création d’une ressource. Pour ces actions, vous pouvez spécifier des balises lorsque vous créez la ressource :
+ `CreateBlueGreenDeployment`
+ `CreateCustomDBEngineVersion`
+ `CreateDBCluster`
+ `CreateDBClusterEndpoint`
+ `CreateDBClusterParameterGroup`
+ `CreateDBClusterSnapshot`
+ `CreateDBInstance`
+ `CreateDBInstanceReadReplica`
+ `CreateDBParameterGroup`
+ `CreateDBProxy`
+ `CreateDBProxyEndpoint`
+ `CreateDBSecurityGroup`
+ `CreateDBShardGroup`
+ `CreateDBSnapshot`
+ `CreateDBSubnetGroup`
+ `CreateEventSubscription`
+ `CreateGlobalCluster`
+ `CreateIntegration`
+ `CreateOptionGroup`
+ `CreateTenantDatabase`
+ `CopyDBClusterParameterGroup`
+ `CopyDBClusterSnapshot`
+ `CopyDBParameterGroup`
+ `CopyDBSnapshot`
+ `CopyOptionGroup`
+ `RestoreDBClusterFromS3`
+ `RestoreDBClusterFromSnapshot`
+ `RestoreDBClusterToPointInTime`
+ `RestoreDBInstanceFromDBSnapshot`
+ `RestoreDBInstanceFromS3`
+ `RestoreDBInstanceToPointInTime`
+ `PurchaseReservedDBInstancesOffering`

Si vous utilisez l'API AWS CLI or pour créer une ressource avec des balises, le `Tags` paramètre est utilisé pour appliquer des balises aux ressources lors de la création.

Pour ces actions d’API, si le balisage échoue, la ressource n’est pas créée et la demande échoue avec une erreur. Ainsi, les ressources sont créées avec des balises ou elles ne sont pas créées du tout, ce qui empêche la création de ressources sans les balises prévues.

# AWS politiques gérées pour Amazon RDS
<a name="rds-security-iam-awsmanpol"></a>

Pour ajouter des autorisations aux ensembles d'autorisations et aux rôles, il est plus facile d'utiliser des politiques AWS gérées que de les rédiger vous-même. Il faut du temps et de l’expertise pour [créer des politiques gérées par le client IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) qui ne fournissent à votre équipe que les autorisations dont elle a besoin. Pour démarrer rapidement, vous pouvez utiliser nos politiques AWS gérées. Ces politiques couvrent des cas d’utilisation courants et sont disponibles dans votre Compte AWS. Pour plus d'informations sur les politiques AWS gérées, voir les [politiques AWS gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dans le *guide de l'utilisateur IAM*.

Services AWS maintenir et mettre à jour les politiques AWS gérées. Vous ne pouvez pas modifier les autorisations dans les politiques AWS gérées. Les services ajoutent parfois des autorisations supplémentaires à une politique AWS gérée pour prendre en charge de nouvelles fonctionnalités. Ce type de mise à jour affecte toutes les identités (jeux d’autorisations et rôles) auxquelles la politique est attachée. Les services sont plus susceptibles de mettre à jour une politique AWS gérée lorsqu'une nouvelle fonctionnalité est lancée ou lorsque de nouvelles opérations sont disponibles. Les services ne suppriment pas les autorisations d'une politique AWS gérée. Les mises à jour des politiques ne portent donc pas atteinte à vos autorisations existantes.

En outre, AWS prend en charge les politiques gérées pour les fonctions professionnelles qui couvrent plusieurs services. Par exemple, la politique `ReadOnlyAccess` AWS gérée fournit un accès en lecture seule à toutes Services AWS les ressources. Lorsqu'un service lance une nouvelle fonctionnalité, il AWS ajoute des autorisations en lecture seule pour les nouvelles opérations et ressources. Pour obtenir la liste des politiques de fonctions professionnelles et leurs descriptions, consultez la page [politiques gérées par AWS pour les fonctions de tâche](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dans le *Guide de l’utilisateur IAM*.

**Topics**
+ [

## AWS politique gérée : Amazon RDSRead OnlyAccess
](#rds-security-iam-awsmanpol-AmazonRDSReadOnlyAccess)
+ [

## AWS politique gérée : Amazon RDSFull Access
](#rds-security-iam-awsmanpol-AmazonRDSFullAccess)
+ [

## AWS politique gérée : Amazon RDSData FullAccess
](#rds-security-iam-awsmanpol-AmazonRDSDataFullAccess)
+ [

## AWS politique gérée : Amazon RDSEnhanced MonitoringRole
](#rds-security-iam-awsmanpol-AmazonRDSEnhancedMonitoringRole)
+ [

## AWS politique gérée : Amazon RDSPerformance InsightsReadOnly
](#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly)
+ [

## AWS politique gérée : Amazon RDSPerformance InsightsFullAccess
](#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess)
+ [

## AWS politique gérée : Amazon RDSDirectory ServiceAccess
](#rds-security-iam-awsmanpol-AmazonRDSDirectoryServiceAccess)
+ [

## AWS politique gérée : Amazon RDSService RolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy)
+ [

## AWS politique gérée : Amazon RDSPreview ServiceRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy)
+ [

## AWS politique gérée : Amazon RDSBeta ServiceRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy)

## AWS politique gérée : Amazon RDSRead OnlyAccess
<a name="rds-security-iam-awsmanpol-AmazonRDSReadOnlyAccess"></a>

Cette politique autorise l'accès en lecture seule à Amazon RDS via le. AWS Management Console

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `rds` : permet aux principaux de décrire les ressources Amazon RDS et de dresser la liste des balises pour les ressources Amazon RDS.
+ `cloudwatch`— Permet aux principaux d'obtenir les statistiques CloudWatch métriques d'Amazon.
+ `ec2` : permet aux principaux de décrire les zones de disponibilité et les ressources de réseaux.
+ `logs`— Permet aux directeurs de décrire les flux de CloudWatch journaux des groupes de journaux et d'obtenir les événements du journal CloudWatch des journaux.
+ `devops-guru`— Permet aux responsables de décrire les ressources couvertes par Amazon DevOps Guru, qui sont spécifiées soit par des noms de CloudFormation pile, soit par des balises de ressources.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSRead OnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSReadOnlyAccess.html) dans le *AWS Managed Policy Reference Guide*.

## AWS politique gérée : Amazon RDSFull Access
<a name="rds-security-iam-awsmanpol-AmazonRDSFullAccess"></a>

Cette politique fournit un accès complet à Amazon RDS via le AWS Management Console.

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `rds` : donne aux principaux un accès complet à Amazon RDS.
+ `application-autoscaling` : permet aux principaux de décrire et de gérer les cibles et les politiques de scalabilité automatique des applications.
+ `cloudwatch`— Permet aux directeurs d'obtenir des statistiques CloudWatch métriques et de gérer les CloudWatch alarmes.
+ `ec2` : permet aux principaux de décrire les zones de disponibilité et les ressources de réseaux.
+ `logs`— Permet aux directeurs de décrire les flux de CloudWatch journaux des groupes de journaux et d'obtenir les événements du journal CloudWatch des journaux.
+ `outposts`— Permet aux principaux d'obtenir des types d' AWS Outposts instances.
+ `pi` : permet aux principaux d’obtenir les métriques de Performance Insights.
+ `sns` : permet aux principaux de s’abonner à Amazon Simple Notification Service (Amazon SNS) et à ses rubriques, et de publier des messages Amazon SNS.
+ `devops-guru`— Permet aux responsables de décrire les ressources couvertes par Amazon DevOps Guru, qui sont spécifiées soit par des noms de CloudFormation pile, soit par des balises de ressources.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSFull Access](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSFullAccess.html) dans le *AWS Managed Policy Reference Guide*.

## AWS politique gérée : Amazon RDSData FullAccess
<a name="rds-security-iam-awsmanpol-AmazonRDSDataFullAccess"></a>

Cette politique permet un accès complet à l'utilisation de l'API de données et de l'éditeur de requêtes sur des Aurora Serverless clusters spécifiques Compte AWS. Cette politique permet d' Compte AWS obtenir la valeur d'un secret auprès de AWS Secrets Manager. 

Vous pouvez associer la politique `AmazonRDSDataFullAccess` à vos identités IAM.

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `dbqms` : permet aux principaux d’accéder, de créer, de supprimer, de décrire et de mettre à jour des requêtes. Le service `dbqms` (Database Query Metadata Service, service de métadonnées de requête de base de données) est un service interne uniquement. Il fournit vos requêtes récentes et enregistrées pour l'éditeur de requêtes sur le AWS Management Console for multiple Services AWS, y compris Amazon RDS.
+ `rds-data` : permet aux principaux d’exécuter des instructions SQL sur les bases de données Aurora Serverless.
+ `secretsmanager`— Permet aux principaux d'obtenir la valeur d'un secret auprès de AWS Secrets Manager.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSData FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSDataFullAccess.html) dans le *AWS Managed Policy Reference Guide*.

## AWS politique gérée : Amazon RDSEnhanced MonitoringRole
<a name="rds-security-iam-awsmanpol-AmazonRDSEnhancedMonitoringRole"></a>

Cette politique donne accès à Amazon CloudWatch Logs pour Amazon RDS Enhanced Monitoring.

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `logs`— Permet aux responsables de créer des groupes de CloudWatch journaux et des politiques de conservation, ainsi que de créer et de décrire CloudWatch les flux de journaux des groupes de journaux. Il permet également aux directeurs de mettre et d'obtenir les événements du journal CloudWatch Logs.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSEnhanced MonitoringRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSEnhancedMonitoringRole.html) dans le *AWS Managed Policy Reference Guide*.

## AWS politique gérée : Amazon RDSPerformance InsightsReadOnly
<a name="rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly"></a>

Cette politique fournit un accès en lecture seule à l’analyse des performances d’Amazon RDS pour les instances Amazon de base de données RDS et les clusters de bases de données Amazon Aurora.

Cette politique inclut désormais `Sid` (ID d’instruction) comme identifiant pour l’instruction de la politique. 

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `rds` : permet aux principaux de décrire des instances de base de données Amazon RDS et des clusters de base de données Amazon Aurora.
+ `pi` : permet aux principaux de faire des appels à l’API Analyse des performances d’Amazon RDS et d’accéder aux métriques de Performance Insights.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSPerformance InsightsReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsReadOnly.html) dans le *AWS Managed Policy Reference Guide*.

## AWS politique gérée : Amazon RDSPerformance InsightsFullAccess
<a name="rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess"></a>

Cette politique fournit un accès complet à l’analyse des performances d’Amazon RDS pour les instances de base de données Amazon RDS et les clusters de bases de données Amazon Aurora.

Cette politique inclut désormais `Sid` (ID d’instruction) comme identifiant pour l’instruction de la politique. 

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `rds` : permet aux principaux de décrire des instances de base de données Amazon RDS et des clusters de bases de données Amazon Aurora.
+ `pi` : permet aux principaux d’appeler l’API Analyse des performances d’Amazon RDS et de créer, d’afficher et de supprimer des rapports d’analyse des performances.
+ `cloudwatch`— Permet aux principaux de répertorier toutes les CloudWatch métriques Amazon et d'obtenir des données et des statistiques sur les métriques.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSPerformance InsightsFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsFullAccess.html) dans le *AWS Managed Policy Reference Guide*.

## AWS politique gérée : Amazon RDSDirectory ServiceAccess
<a name="rds-security-iam-awsmanpol-AmazonRDSDirectoryServiceAccess"></a>

Cette politique permet à Amazon RDS d’effectuer des appels vers Directory Service.

**Détails de l’autorisation**

Cette politique inclut l’autorisation suivante :
+ `ds`— Permet aux principaux de décrire les Directory Service répertoires et de contrôler les autorisations accordées aux Directory Service annuaires.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSDirectory ServiceAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSDirectoryServiceAccess.html) dans le *AWS Managed Policy Reference Guide*.

## AWS politique gérée : Amazon RDSService RolePolicy
<a name="rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy"></a>

Vous ne pouvez pas attacher `AmazonRDSServiceRolePolicy` à vos entités IAM. Cette politique est attachée à un rôle lié à un service qui permet à Amazon RDS d’effectuer des actions en votre nom. Pour de plus amples informations, veuillez consulter [Autorisations des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions).

## AWS politique gérée : Amazon RDSPreview ServiceRolePolicy
<a name="rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy"></a>

Ne joignez pas `AmazonRDSPreviewServiceRolePolicy` à vos entités IAM. Cette politique est associée à un rôle lié à un service qui permet à Amazon RDS d'appeler des AWS services au nom de vos ressources de base de données RDS. Pour de plus amples informations, veuillez consulter [Rôles liés à un service pour Amazon RDS Preview](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-rdspreview). 

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `ec2` : permet aux principaux de décrire les zones de disponibilité et les ressources de réseaux.
+ `secretsmanager`— Permet aux principaux d'obtenir la valeur d'un secret auprès de AWS Secrets Manager.
+ `cloudwatch`, `logs` ‐ Permet à Amazon RDS de télécharger les métriques et les journaux de l'instance de base de données CloudWatch via CloudWatch un agent.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSPreview ServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPreviewServiceRolePolicy.html) dans le *AWS Managed Policy Reference Guide*.

## AWS politique gérée : Amazon RDSBeta ServiceRolePolicy
<a name="rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy"></a>

Ne joignez pas `AmazonRDSBetaServiceRolePolicy` à vos entités IAM. Cette politique est associée à un rôle lié à un service qui permet à Amazon RDS d'appeler des AWS services au nom de vos ressources de base de données RDS. Pour de plus amples informations, veuillez consulter [Autorisations du rôle lié à un service pour Amazon RDS bêta](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-rdsbeta).

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `ec2`‐ Permet à Amazon RDS d'effectuer des opérations de sauvegarde sur l'instance de base de données qui fournit des fonctionnalités de point-in-time restauration.
+ `secretsmanager` ‐ Permet à Amazon RDS de gérer des secrets spécifique à une instance de base de données créés par Amazon RDS.
+ `cloudwatch`, `logs` ‐ Permet à Amazon RDS de télécharger les métriques et les journaux de l'instance de base de données CloudWatch via CloudWatch un agent.

Pour plus d'informations sur cette politique, y compris le document de politique JSON, consultez [Amazon RDSBeta ServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSBetaServiceRolePolicy.html) dans le *AWS Managed Policy Reference Guide*.

# Mises à jour Amazon RDS des politiques gérées par AWS
<a name="rds-manpol-updates"></a>

Affichez les détails des mises à jour des politiques gérées par AWS pour Amazon RDS depuis que ce service a commencé à assurer le suivi des modifications. Pour recevoir des alertes automatiques sur les modifications apportées à cette page, abonnez-vous au flux RSS de la page [Document history](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/WhatsNew.html) (Historique des documents) d’Amazon RDS.




| Modification | Description | Date | 
| --- | --- | --- | 
| [AWS politique gérée : Amazon RDSPreview ServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy) – Mise à jour de la politique existante |  Amazon RDS a supprimé l’autorisation `sns:Publish` de `AmazonRDSPreviewServiceRolePolicy` du rôle lié au service `AWSServiceRoleForRDSPreview`. Pour plus d’informations, consultez [AWS politique gérée : Amazon RDSPreview ServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy). | 7 août 2024 | 
| [AWS politique gérée : Amazon RDSBeta ServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy) – Mise à jour de la politique existante |  Amazon RDS a supprimé l’autorisation `sns:Publish` de `AmazonRDSBetaServiceRolePolicy` du rôle lié au service `AWSServiceRoleForRDSBeta`. Pour plus d’informations, consultez [AWS politique gérée : Amazon RDSBeta ServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy).  | 7 août 2024 | 
| [AWS politique gérée : Amazon RDSService RolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy) – Mise à jour de la politique existante |  Amazon RDS a supprimé l’autorisation `sns:Publish` de `AmazonRDSServiceRolePolicy` du rôle lié au service ` AWSServiceRoleForRDS`. Pour plus d’informations, consultez [AWS politique gérée : Amazon RDSService RolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy).  | 2 juillet 2024 | 
| [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md) – Mise à jour de la politique existante |  Amazon RDS a ajouté une nouvelle autorisation à `AmazonRDSCustomServiceRolePolicy` du rôle `AWSServiceRoleForRDSCustom` liés au service afin de permettre à RDS Custom for SQL Server de modifier le type d’instance de l’hôte de base de données sous-jacent. RDS a également ajouté l’autorisation `ec2:DescribeInstanceTypes` pour obtenir des informations sur le type d’instance pour l’hôte de base de données. Pour plus d’informations, consultez [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md).  | 8 avril 2024 | 
|  [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md) – Nouvelle politique  | Amazon RDS a ajouté une nouvelle politique gérée nommée AmazonRDSCustomInstanceProfileRolePolicy pour permettre à RDS Custom d’effectuer des actions d’automatisation et des tâches de gestion de base de données via un profil d’instance EC2. Pour plus d’informations, consultez [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md). | 27 février 2024 | 
|  [Autorisations des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Mise à jour d’une politique existante | Amazon RDS a ajouté de nouvelles ID d’instruction à la politique `AmazonRDSServiceRolePolicy` du rôle `AWSServiceRoleForRDS` lié au service. Pour plus d’informations, consultez [Autorisations des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions).  |  19 janvier 2024  | 
|  [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md) – Mise à jour des politiques existantes  |  Les politiques gérées par `AmazonRDSPerformanceInsightsReadOnly` et `AmazonRDSPerformanceInsightsFullAccess` incluent désormais `Sid` (ID d’instruction) comme identifiant dans l’instruction de la politique.  Pour plus d’informations, consultez [AWS politique gérée : Amazon RDSPerformance InsightsReadOnly](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly) et [AWS politique gérée : Amazon RDSPerformance InsightsFullAccess](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess).   |  23 octobre 2023  | 
|  [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md) – Mise à jour de la politique existante  |  Amazon RDS a ajouté de nouvelles autorisations à la politique gérée `AmazonRDSFullAccess`. Les autorisations vous permettent de générer, d’afficher et de supprimer le rapport d’analyse des performances pendant une période donnée. Pour plus d’informations sur la configuration de stratégies d’accès pour l’analyse des performances, consultez [Configuration des politiques d’accès pour Performance Insights](USER_PerfInsights.access-control.md)  |  17 août 2023  | 
|  [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md) – Nouvelle politique et mise à jour de la politique existante  |  Amazon RDS a ajouté de nouvelles autorisations à la politique gérée `AmazonRDSPerformanceInsightsReadOnly` et une nouvelle politique gérée nommée `AmazonRDSPerformanceInsightsFullAccess`. Ces autorisations vous permettent d’analyser les informations de performances pour une période donnée, de consulter les résultats d’analyse ainsi que les recommandations, et de supprimer les rapports. Pour plus d’informations sur la configuration de stratégies d’accès pour l’analyse des performances, consultez [Configuration des politiques d’accès pour Performance Insights](USER_PerfInsights.access-control.md)  |  16 août 2023  | 
|  [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md) – Mise à jour d’une politique existante  |  Amazon RDS a ajouté un nouvel espace de noms Amazon CloudWatch `ListMetrics` pour `AmazonRDSFullAccess` et `AmazonRDSReadOnlyAccess`. Cet espace de nom est nécessaire à Amazon RDS pour répertorier des métriques spécifiques sur l’utilisation des ressources. Pour plus d’informations, consultez [Présentation de la gestion des autorisations d’accès à vos ressources CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-access-control-overview-cw.html) dans le *Guide de l’utilisateur Amazon CloudWatch*.  |  4 avril 2023  | 
|  [Autorisations des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Mise à jour d’une politique existante  |  Amazon RDS a ajouté de nouvelles autorisations à la politique `AmazonRDSServiceRolePolicy` du rôle `AWSServiceRoleForRDS` lié au service pour l’intégration avec AWS Secrets Manager. RDS nécessite une intégration à Secrets Manager pour gérer les mots de passe des utilisateurs principaux dans Secrets Manager. Le secret utilise une convention de dénomination réservée et restreint les mises à jour des clients. Pour plus d’informations, consultez [Gestion des mots de passe avec Amazon Aurora et AWS Secrets Manager](rds-secrets-manager.md).  |  22 décembre 2022  | 
|  [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md) – Mise à jour des politiques existantes  |  Amazon RDS a ajouté une nouvelle autorisation aux politiques gérées `AmazonRDSFullAccess` et `AmazonRDSReadOnlyAccess` pour vous permettre d’activer Amazon DevOps Guru dans la console RDS. Cette autorisation est requise pour vérifier si DevOps Guru est activé. Pour plus d’informations, consultez [Configuration des politiques d'accès IAM pour DevOps Guru for RDS](devops-guru-for-rds.md#devops-guru-for-rds.configuring.access).  |  19 décembre 2022  | 
|  [Autorisations des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Mise à jour d’une politique existante  |  Amazon RDS a ajouté un nouvel espace de noms Amazon CloudWatch à `AmazonRDSPreviewServiceRolePolicy` pour `PutMetricData`. Cet espace de nom est nécessaire à Amazon RDS pour publier des métriques sur l’utilisation des ressources. Pour plus d’informations, consultez [Using condition keys to limit access to CloudWatch namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html) (Utilisation des clés de condition pour limiter l’accès aux espaces de noms CloudWatch) dans le *Guide de l’utilisateur Amazon CloudWatch*.  |  7 juin 2022  | 
|  [Autorisations des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Mise à jour d’une politique existante  |  Amazon RDS a ajouté un nouvel espace de noms Amazon CloudWatch à `AmazonRDSBetaServiceRolePolicy` pour `PutMetricData`. Cet espace de nom est nécessaire à Amazon RDS pour publier des métriques sur l’utilisation des ressources. Pour plus d’informations, consultez [Using condition keys to limit access to CloudWatch namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html) (Utilisation des clés de condition pour limiter l’accès aux espaces de noms CloudWatch) dans le *Guide de l’utilisateur Amazon CloudWatch*.  |  7 juin 2022  | 
|  [Autorisations des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Mise à jour d’une politique existante  |  Amazon RDS a ajouté un nouvel espace de noms Amazon CloudWatch à `AWSServiceRoleForRDS` pour `PutMetricData`. Cet espace de nom est nécessaire à Amazon RDS pour publier des métriques sur l’utilisation des ressources. Pour plus d’informations, consultez [Using condition keys to limit access to CloudWatch namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html) (Utilisation des clés de condition pour limiter l’accès aux espaces de noms CloudWatch) dans le *Guide de l’utilisateur Amazon CloudWatch*.  |  22 avril 2022  | 
|  [AWS politiques gérées pour Amazon RDS](rds-security-iam-awsmanpol.md) – Nouvelle politique  |  Amazon RDS a ajouté une nouvelle politique gérée nommée `AmazonRDSPerformanceInsightsReadOnly` pour permettre à Amazon RDS d’appeler des services AWS au nom de vos instances de base de données. Pour plus d’informations sur la configuration de stratégies d’accès pour l’analyse des performances, consultez [Configuration des politiques d’accès pour Performance Insights](USER_PerfInsights.access-control.md)  |  10 mars 2022  | 
|  [Autorisations des rôles liés à un service pour Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Mise à jour d’une politique existante  |  Amazon RDS a ajouté de nouveaux espaces de noms Amazon CloudWatch à `AWSServiceRoleForRDS` pour `PutMetricData`. Ces espaces de noms sont nécessaires pour qu’Amazon DocumentDB (compatible avec MongoDB) et Amazon Neptune puissent publier des métriques CloudWatch. Pour plus d’informations, consultez [Using condition keys to limit access to CloudWatch namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html) (Utilisation des clés de condition pour limiter l’accès aux espaces de noms CloudWatch) dans le *Guide de l’utilisateur Amazon CloudWatch*.  |  4 mars 2022  | 
|  Amazon RDS a commencé à assurer le suivi des modifications  |  Amazon RDS a commencé à assurer le suivi des modifications pour ses politiques gérées par AWS.  |  26 octobre 2021  | 

# Prévention des problèmes d'adjoint confus entre services
<a name="cross-service-confused-deputy-prevention"></a>

Le *problème de l’adjoint confus* est un problème de sécurité dans lequel une entité qui n’a pas l’autorisation d’effectuer une action peut contraindre une entité plus privilégiée à effectuer cette action. EnAWS, l'usurpation d'identité interservices peut entraîner un problème de confusion chez les adjoints. 

L’usurpation d’identité entre services peut se produire lorsqu’un service (le *service appelant*) appelle un autre service (le *service appelé*). Le service appelant peut être manipulé pour utiliser ses autorisations et agir sur les ressources d'un autre client, d'une manière dont il ne devrait pas avoir accès. Pour éviter cela, AWS fournit des outils qui peuvent vous aider à protéger vos données pour tous les services dont les responsables ont obtenu l'accès aux ressources de votre compte. Pour de plus amples informations, veuillez consulter [Le problème du député confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) dans le *Guide de l’utilisateur IAM*.

Afin de limiter les autorisations octroyées par Amazon RDS à un autre service pour une ressource spécifique, nous vous recommandons d'utiliser les clés de contexte de condition globale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) et [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) dans les politiques de ressources. 

Dans certains cas, la valeur `aws:SourceArn` ne contient pas l'ID du compte, par exemple lorsque vous utilisez l'Amazon Resource Name (ARN) pour un compartiment Amazon S3. Dans ces cas, veillez à utiliser les deux clés de contexte de condition globale pour limiter les autorisations. Dans certains cas, vous utilisez les deux clés de contexte de condition globale et la valeur `aws:SourceArn` contient l'ID du compte. Dans ces cas, assurez-vous que la valeur `aws:SourceAccount` et le compte dans le `aws:SourceArn` utilisent le même ID de compte lorsqu'ils sont utilisés dans la même instruction de politique. Utilisez `aws:SourceArn` si vous souhaitez qu'une seule ressource soit associée à l'accès entre services. Si vous souhaitez autoriser l'association d'une ressource du AWS compte spécifié à l'utilisation interservices, utilisez`aws:SourceAccount`.

Assurez-vous que la valeur de `aws:SourceArn` est un ARN d'un type de ressource Amazon RDS. Pour de plus amples informations, veuillez consulter [Amazon Resource Names (ARN) dans Amazon RDS](USER_Tagging.ARN.md).

Le moyen le plus efficace de se protéger contre le problème de député confus consiste à utiliser la clé de contexte de condition globale `aws:SourceArn` avec l’ARN complet de la ressource. Dans certains cas, vous ne connaissez pas l'ARN complet de la ressource ou vous spécifiez plusieurs ressources. Dans ces cas, utilisez la clé de contexte de condition globale `aws:SourceArn` avec des caractères génériques (`*`) pour les parties inconnues de l'ARN. Par exemple : `arn:aws:rds:*:123456789012:*`. 

L'exemple suivant montre comment utiliser les clés de contexte de condition globale `aws:SourceArn` et `aws:SourceAccount` pour dans Amazon RDS afin d'éviter le problème de l'adjoint confus.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "ConfusedDeputyPreventionExamplePolicy",
    "Effect": "Allow",
    "Principal": {
      "Service": "rds.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:mydbinstance"
      },
      "StringEquals": {
        "aws:SourceAccount": "123456789012"
      }
    }
  }
}
```

------

Pour obtenir d'autres exemples de politiques qui utilisent les clés de contexte de condition globale `aws:SourceArn` et `aws:SourceAccount`, veuillez consulter les sections suivantes :
+ [Octroi d’autorisations de publication de notifications dans une rubrique Amazon SNS](USER_Events.GrantingPermissions.md)
+ [Configuration de l’accès à un compartiment Amazon S3](USER_PostgreSQL.S3Import.AccessPermission.md) (importation PostgreSQL)
+ [Configuration de l’accès à un compartiment Amazon S3](postgresql-s3-export-access-bucket.md) (exportation PostgreSQL)

# Authentification de base de données IAM
<a name="UsingWithRDS.IAMDBAuth"></a>

Vous pouvez vous authentifier auprès de votre cluster d' de base de données à l'aide de l'authentification de base de données Gestion des identités et des accès AWS (IAM). L’authentification de base de données IAM fonctionne avec Aurora MySQL et Aurora PostgreSQL. Grâce à cette méthode d’authentification, vous n’avez plus besoin de mot de passe pour vous connecter à un cluster de bases de données. En revanche, un jeton d’authentification est nécessaire.

Un *jeton d’authentification* est une chaîne de caractères unique générée par Amazon Aurora sur demande. Les jetons d'authentification sont générés à l'aide de AWS la version 4 de Signature. Chaque jeton a une durée de vie de 15 minutes. Il n’est pas nécessaire de stocker les informations d’identification des utilisateurs dans la base de données, car l’authentification est gérée de manière externe avec IAM. Vous pouvez aussi toujours utiliser l’authentification de base de données standard. Le jeton est uniquement utilisé pour l’authentification et n’affecte pas la session une fois qu’il est établi.

L’authentification de base de données IAM offre les avantages suivants :
+ Le trafic réseau à destination et en provenance de la base de données est chiffré à l’aide de Secure Socket Layer (SSL) ou de Transport Layer Security (TLS). Pour plus d'informations sur l'utilisation SSL/TLS d', consultez[Utilisation SSL/TLS pour chiffrer une connexion à une de clusters](UsingWithRDS.SSL.md).
+ Vous pouvez utiliser IAM pour gérer de façon centralisée l’accès à vos ressources de base de données, au lieu de gérer l’accès de manière individuelle sur chaque cluster de bases de données.
+ Pour les applications exécutées sur Amazon EC2, vous pouvez utiliser des informations d’identification spécifiques à votre instance EC2 pou accéder à la base de données, ce qui garantit une meilleure sécurité qu’un mot de passe.

En règle générale, envisagez d’utiliser l’authentification de base de données IAM lorsque vos applications créent moins de 200 connexions par seconde, et que vous ne souhaitez pas gérer les noms d’utilisateur et les mots de passe directement dans le code de votre application.

Le pilote JDBC Amazon Web Services (AWS) prend en charge l’authentification de la base de données IAM. Pour plus d'informations, consultez la section [Plug-in d'authentification AWS IAM](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) dans le [référentiel de pilotes JDBC Amazon Web Services (AWS)](https://github.com/aws/aws-advanced-jdbc-wrapper). GitHub 

Le pilote Python Amazon Web Services (AWS) prend en charge l’authentification de la base de données IAM. Pour plus d'informations, consultez la section [Plug-in d'authentification AWS IAM](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) dans le [ GitHubréférentiel de pilotes Python Amazon Web Services (AWS)](https://github.com/aws/aws-advanced-python-wrapper).

Consultez les rubriques suivantes pour apprendre à configurer IAM pour l’authentification de la base de données :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)
+ [Connexion à votre cluster de base de données à l'aide de l'authentification IAM.](UsingWithRDS.IAMDBAuth.Connecting.md) 

## Disponibilité des régions et des versions
<a name="UsingWithRDS.IAMDBAuth.Availability"></a>

 La disponibilité et la prise en charge des fonctions varient selon les versions spécifiques de chaque moteur de base de données Aurora, et selon les Régions AWS. Pour obtenir plus d’informations sur la disponibilité des versions et des régions avec Aurora et l’authentification de la base de données IAM, consultez [Régions et moteurs de base de données Aurora pris en charge pour l’authentification de base de données IAM](Concepts.Aurora_Fea_Regions_DB-eng.Feature.IAMdbauth.md). 

Pour Aurora MySQL, toutes les classes d’instance de base de données prises en charge prennent en charge l’authentification de base de données IAM, à l’exception de db.t2.small et db.t3.small. Pour plus d’informations sur les classes d’instance de base de données prises en charge, consultez [Moteurs de base de données pris en charge pour les classes d’instance de base de données](Concepts.DBInstanceClass.SupportAurora.md). 

## Support CLI et kit SDK
<a name="UsingWithRDS.IAMDBAuth.cli-sdk"></a>

L'authentification de base de données IAM est disponible pour [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/rds/generate-db-auth-token.html)et pour les langues AWS SDKs spécifiques suivantes :
+ [AWS SDK pour .NET](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/RDS/TRDSAuthTokenGenerator.html)
+ [AWS SDK pour C\$1\$1](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/class_aws_1_1_r_d_s_1_1_r_d_s_client.html#ae134ffffed5d7672f6156d324e7bd392)
+ [AWS SDK pour Go](https://docs.aws.amazon.com/sdk-for-go/api/service/rds/#pkg-overview)
+ [AWS SDK pour Java](https://docs.aws.amazon.com/sdk-for-java/latest/reference/software/amazon/awssdk/services/rds/RdsUtilities.html)
+ [AWS SDK pour JavaScript](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html)
+ [AWS SDK pour PHP](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Rds.AuthTokenGenerator.html)
+ [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.generate_db_auth_token)
+ [AWS SDK pour Ruby](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/AuthTokenGenerator.html)

## Limites de l’authentification de base de données IAM
<a name="UsingWithRDS.IAMDBAuth.Limitations"></a>

Les limitations suivantes s’appliquent lors de l’utilisation de l’authentification de base de données IAM :
+ Actuellement, l’authentification de base de données IAM ne prend pas en charge toutes les clés de contexte de condition globale.

  Pour plus d’informations sur les clés de contexte de condition globale, consultez [Clés de contexte de condition globales AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dans le *Guide de l’utilisateur IAM*.
+ Pour PostgreSQL, si le rôle IAM (`rds_iam`) est ajouté à un utilisateur (y compris à l’utilisateur principal RDS), l’authentification IAM a priorité sur l’authentification par mot de passe, de sorte que l’utilisateur doit se connecter en tant qu’utilisateur IAM.
+ Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.
+ CloudWatch et CloudTrail n'enregistrez pas l'authentification IAM. Ces services ne suivent pas les appels d’API `generate-db-auth-token` qui autorisent le rôle IAM à activer la connexion à la base de données.
+ L’authentification de base de données IAM nécessite des ressources de calcul sur le cluster de bases de données. Pour garantir une connectivité fiable, votre base de données doit disposer de 300 à 1 000 Mio de mémoire supplémentaire. Pour connaître la mémoire nécessaire à votre charge de travail, comparez la colonne RES pour les processus RDS dans la liste des processus de surveillance améliorée avant et après l’activation de l’authentification de base de données IAM. Consultez [Affichage des métriques du système d’exploitation dans la console RDS](USER_Monitoring.OS.Viewing.md).

  Si vous utilisez une instance de classe à performances extensibles, évitez de manquer de mémoire en réduisant d’autant la mémoire utilisée par d’autres paramètres tels que les tampons et le cache.
+ Pour Aurora MySQL, vous ne pouvez pas utiliser l'authentification par mot de passe pour un utilisateur de base de données que vous configurez avec l'authentification IAM.
+ L’authentification de base de données IAM n’est prise en charge pour RDS on Outposts, quel que soit le moteur.

## Recommandations pour l’authentification de base de données IAM
<a name="UsingWithRDS.IAMDBAuth.ConnectionsPerSecond"></a>

Nous recommandons les pratiques suivantes lors de l’utilisation de l’authentification de base de données IAM :
+ Utilisez l’authentification de base de données IAM si votre application exige moins de 200 nouvelles connexions d’authentification de base de données IAM par seconde.

  Les moteurs de base de données qui fonctionnent avec Amazon Aurora n’imposent pas de limites de tentatives d’authentification par seconde. Néanmoins, lorsque vous utilisez l’authentification de base de données IAM, votre application doit générer un jeton d’authentification. Votre application emploie ensuite ce jeton pour la connexion au cluster de bases de données. Si vous dépassez la limite maximale de nouvelles connexions par seconde, le traitement supplémentaire d’authentification de base de données IAM peut entraîner une limitation de la connexion. 

  Envisagez d’utiliser le regroupement de connexions dans vos applications pour limiter la création constante de connexions. Cela peut réduire les frais généraux liés à l’authentification de base de données IAM et permettre à vos applications de réutiliser les connexions existantes. Vous pouvez également envisager d’utiliser le proxy RDS pour ces cas d’utilisation. Le proxy RDS entraîne des coûts supplémentaires. Consultez [Tarification de Proxy Amazon RDS](https://aws.amazon.com/rds/proxy/pricing/).
+ La taille d’un jeton d’authentification de base de données IAM dépend de nombreux facteurs, notamment du nombre de balises IAM, des politiques de service IAM, de la longueur des ARN, ainsi que d’autres propriétés IAM et de base de données. La taille minimale de ce jeton est généralement d’environ 1 Ko, mais elle peut être plus grande. Étant donné que ce jeton est utilisé comme mot de passe dans la chaîne de connexion à la base de données à l'aide de l'authentification IAM, vous devez vous assurer que les outils de votre pilote de base de données (par exemple, ODBC) and/or ne limitent ni ne tronquent ce jeton en raison de sa taille. Un jeton tronqué provoquera l’échec de la validation d’authentification effectuée par la base de données et IAM.
+ Si vous utilisez des informations d’identification temporaires lors de la création d’un jeton d’authentification d’une base de données IAM, les informations d’identification temporaires doivent toujours être valides lorsque vous utilisez le jeton d’authentification d’une base de données IAM pour effectuer une demande de connexion.

## Clés contextuelles de condition AWS globale non prises en charge
<a name="UsingWithRDS.IAMDBAuth.GlobalContextKeys"></a>

 L'authentification de base de données IAM ne prend pas en charge le sous-ensemble suivant de clés AWS contextuelles de conditions globales. 
+ `aws:Referer`
+ `aws:SourceIp`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserAgent`
+ `aws:VpcSourceIp`

Pour plus d’informations, consultez [Clés de contexte de condition globales AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dans le *Guide de l’utilisateur IAM*. 

# Activation et désactivation de l’authentification de base de données IAM
<a name="UsingWithRDS.IAMDBAuth.Enabling"></a>

Par défaut, l’authentification de base de données IAM est désactivée sur les et clusters de bases de données. Vous pouvez activer ou désactiver l'authentification de base de données IAM à l'aide de AWS Management Console AWS CLI, ou de l'API.

Vous pouvez activer l’authentification de base de données IAM lorsque vous effectuez une des actions suivantes :
+ Pour créer un nouveau cluster de bases de données avec l’authentification de base de données IAM activée, consultez [Création d’un cluster de bases de données Amazon Aurora](Aurora.CreateInstance.md).
+ Pour modifier un cluster de bases de données afin d’activer l’authentification de base de données IAM, consultez [Modification d’un cluster de bases de données Amazon Aurora](Aurora.Modifying.md).
+ Pour restaurer un cluster de bases de données à partir d’un instantané avec l’authentification de base de données IAM activée, consultez [Restauration à partir d’un instantané de cluster de bases de données](aurora-restore-snapshot.md).
+ Pour restaurer un cluster de bases de données à un instant dans le passé avec l’authentification de base de données IAM activée, consultez [Restauration d’un cluster de bases de données à une date définie](aurora-pitr.md).

## Console
<a name="UsingWithRDS.IAMDBAuth.Enabling.Console"></a>

Chaque flux de travail de création ou de modification comporte une section **Authentification de base de données** dans laquelle vous pouvez activer ou désactiver l’authentification de base de données IAM. Dans cette section, choisissez **Authentification de base de données par mot de passe et IAM** pour activer l’authentification de base de données IAM.

**Pour activer ou désactiver l’authentification de base de données IAM pour un cluster de bases de données**

1. Ouvrez la console Amazon RDS à l'adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Dans la panneau de navigation, choisissez **Databases (Bases de données)**.

1. Choisissez cluster de bases de données que vous souhaitez modifier.
**Note**  
Vous ne pouvez activer l’authentification IAM que si toutes les instances de base de données du cluster sont compatibles avec IAM. Consultez les exigences de compatibilité présentées dans [Disponibilité des régions et des versions](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability). 

1. Sélectionnez **Modify**.

1. Dans la section **Authentification de base de données, sélectionnez Mot de passe et authentification** de **données IAM pour activer l'authentification** de base de données IAM. Choisissez **Authentification par mot de passe** ou **Authentification par mot de passe et Kerberos** pour désactiver l’authentification IAM.

1. Vous pouvez également choisir d'activer la publication des journaux d'authentification IAM DB dans CloudWatch Logs. Sous **Exportations de journaux**, choisissez l'option de **iam-db-auth-error journal**. La publication de vos CloudWatch journaux dans Logs consomme de l'espace de stockage et vous devez payer des frais pour ce stockage. Assurez-vous de supprimer tous les CloudWatch journaux dont vous n'avez plus besoin.

1. Choisissez **Continuer**.

1. Pour appliquer immédiatement les modifications, choisissez **Immédiatement** dans la section **Planification des modifications**.

1. Choisissez ou **Modifier le cluster**.

## AWS CLI
<a name="UsingWithRDS.IAMDBAuth.Enabling.CLI"></a>

Pour créer un nouveau cluster de base de données avec authentification IAM à l'aide de AWS CLI, utilisez la [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html)commande. Spécifiez l’option `--enable-iam-database-authentication`.

Pour mettre à jour un cluster de bases de données existant de manière à activer ou non l’authentification IAM, utilisez la commande de l’ AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html). Spécifiez l’option `--enable-iam-database-authentication` ou `--no-enable-iam-database-authentication`, selon le cas.

**Note**  
Vous ne pouvez activer l’authentification IAM que si toutes les instances de base de données du cluster sont compatibles avec IAM. Consultez les exigences de compatibilité présentées dans [Disponibilité des régions et des versions](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability). 

Par défaut, Aurora procède à la modification pendant la fenêtre de maintenance suivante. Si vous souhaitez ignorer ceci et activer l’authentification de bases de données IAM dès que possible, utilisez le paramètre `--apply-immediately`. 

Si vous restaurez un cluster d' de base de données, utilisez l'une des AWS CLI commandes suivantes :
+ `[restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html)`
+ `[restore-db-cluster-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)`

Le paramètre d’authentification de base de données IAM par défaut est celui de l’instantané source. Pour le modifier, spécifiez l’option `--enable-iam-database-authentication` ou `--no-enable-iam-database-authentication`, selon le cas.

## API RDS
<a name="UsingWithRDS.IAMDBAuth.Enabling.API"></a>

Pour créer une nouvelle instance de base de données avec authentification IAM par l’intermédiaire de l’API, utilisez l’opération d’API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html). Définissez le paramètre `EnableIAMDatabaseAuthentication` sur `true`.

Pour mettre à jour un cluster de bases de données existant de manière à activer l’authentification IAM, utilisez l’opération d’API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html). Définissez le paramètre `EnableIAMDatabaseAuthentication` sur `true` pour activer l’authentification IAM ou sur `false` pour la désactiver.

**Note**  
Vous ne pouvez activer l’authentification IAM que si toutes les instances de base de données du cluster sont compatibles avec IAM. Consultez les exigences de compatibilité présentées dans [Disponibilité des régions et des versions](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability). 

Si vous restaurez un cluster ou une de base de données, utilisez l’une des opérations d’API suivantes :
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html)

Le paramètre d’authentification de base de données IAM par défaut est celui de l’instantané source. Pour modifier ce paramètre, définissez le paramètre `EnableIAMDatabaseAuthentication` sur `true` pour activer l’authentification IAM ou sur `false` pour la désactiver.

# Création et utilisation d'une politique IAM pour l'accès à une base de données IAM
<a name="UsingWithRDS.IAMDBAuth.IAMPolicy"></a>

Pour autoriser un utilisateur ou un rôle à se connecter à votre cluster de bases de données, vous devez créer une politique IAM. Vous attachez ensuite la politique à un jeu d'autorisations ou à un rôle.

**Note**  
Pour en savoir plus sur les stratégies IAM, consultez [Identity and Access Management pour Amazon Aurora](UsingWithRDS.IAM.md).

L'exemple de politique suivant autorise un utilisateur à se connecter à un cluster de bases de données en utilisant l'authentification de base de données IAM.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds-db:connect"
            ],
            "Resource": [
                "arn:aws:rds-db:us-east-2:111122223333:dbuser:cluster-ABCDEFGHIJKL01234/db_user"
            ]
        }
    ]
}
```

------

**Important**  
Un utilisateur doté d'autorisations d'administrateur peut accéder aux clusters de bases de données sans autorisations explicites dans une politique IAM. Si vous souhaitez restreindre l'accès de l'administrateur aux et aux clusters de base de données, vous pouvez créer un rôle IAM avec les autorisations appropriées accordant moins de privilèges, puis les assigner à l'administrateur.

**Note**  
Ne confondez pas le préfixe `rds-db:` avec d'autres préfixes d'opération d'API RDS; qui commencent par `rds:`. Vous utilisez le préfixe `rds-db:` et l'action `rds-db:connect` uniquement pour l'authentification de base de données IAM. Ils ne sont valides que dans ce contexte. 

L'exemple de politique inclut une instruction unique avec les éléments suivants :
+ `Effect` – Spécifiez `Allow` pour octroyer l'accès au cluster de base de données. Si vous n'autorisez pas explicitement l'accès, celui-ci est refusé par défaut.
+ `Action` – Spécifiez `rds-db:connect` pour autoriser les connexions au cluster de base de données.
+ `Resource` – Spécifiez un ARN (Amazon Resource Name) qui décrit un compte de base de données dans un cluster de base de données. Le format de l'ARN est le suivant.

  ```
  arn:aws:rds-db:region:account-id:dbuser:DbClusterResourceId/db-user-name
  ```

  Dans ce format, remplacez les variables suivantes :
  + `region`est la AWS région du cluster d' de base de données. Dans l'exemple de politique, la AWS région est`us-east-2`.
  + `account-id`est le numéro de AWS compte du cluster d' de base de données. Dans l'exemple de stratégie, le numéro de compte est `1234567890`. L'utilisateur doit figurer dans le même compte que le compte du cluster de base de données.

    Pour bénéficier d'un accès intercompte, créez un rôle IAM avec la politique décrite ci-dessus dans le compte du cluster de base de données et autorisez votre autre compte à endosser ce rôle. 
  + `DbClusterResourceId` correspond à l'identifiant du cluster de base de données. Cet identifiant est propre à une AWS région et ne change jamais. Dans cet exemple de stratégie, l'identifiant est `cluster-ABCDEFGHIJKL01234`.

    Pour trouver un ID de ressource de cluster d' de base de AWS Management Console données dans Amazon Aurora, choisissez le cluster d' de base de données pour en voir les détails. Choisissez ensuite l'onglet **Configuration**. L'**ID de ressource** est indiqué dans la section **Configuration**.

    Vous pouvez également utiliser la AWS CLI commande pour répertorier les identifiants et les ressources IDs de l'ensemble de votre cluster d' de base de données dans la AWS région actuelle, comme indiqué ci-dessous.

    ```
    aws rds describe-db-clusters --query "DBClusters[*].[DBClusterIdentifier,DbClusterResourceId]"
    ```
**Note**  
Si vous vous connectez à une base de données via le proxy RDS, spécifiez l'ID de ressource de proxy, par exemple `prx-ABCDEFGHIJKL01234`. Pour plus d'informations sur l'utilisation de l'authentification de base de données IAM avec le proxy RDS, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).
  + `db-user-name` correspond au nom du compte de base de données à associer à l'authentification IAM. Dans cet exemple de stratégie, le compte de la base de données est `db_user`.

Vous pouvez en créer d'autres ARNs pour prendre en charge différents modèles d'accès. La stratégie suivante permet d'accéder à deux comptes de base de données différents dans un cluster de base de données.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
             "rds-db:connect"
         ],
         "Resource": [
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/jane_doe",
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/mary_roe"
         ]
      }
   ]
}
```

------

La politique suivante utilise le caractère « \$1 » pour faire correspondre tous les clusters d' de base de données et les comptes de base de données pour un AWS compte et une AWS région spécifiques. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds-db:connect"
            ],
            "Resource": [
                "arn:aws:rds-db:us-east-2:111122223333:dbuser:*/*"
            ]
        }
    ]
}
```

------

La politique suivante correspond à tous les clusters d' de base de données pour un AWS compte et une AWS région particuliers. Néanmoins, cette stratégie n'octroie l'accès qu'aux et clusters de bases de données qui ont un compte de base de données `jane_doe`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
             "rds-db:connect"
         ],
         "Resource": [
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:*/jane_doe"
         ]
      }
   ]
}
```

------

L'utilisateur ou le rôle a uniquement accès aux bases de données auxquelles l'utilisateur de base de données a accès. Supposons par exemple que votre cluster de base de donnés possède une base de données nommée *dev* et une autre base de données nommée *test*. Si l'utilisateur de base de données `jane_doe` a uniquement accès à *dev*, tous les rôles ou utilisateurs qui accèdent à ce cluster de bases de données avec l'utilisateur `jane_doe` ont aussi uniquement accès à *dev*. Cette restriction d'accès s'applique également aux autres objets de bases de données, tels que les tables, les vues, etc.

Un administrateur doit créer des politiques IAM autorisant les entités à exécuter des opérations d'API spécifiques sur les ressources spécifiées dont ils ont besoin. L'administrateur doit ensuite attacher ces politiques aux jeux d'autorisations ou aux rôles qui ont besoin de ces autorisations. Pour obtenir des exemples de stratégies, consultez la section [Exemples de politiques basées sur l’identité pour Amazon Aurora](security_iam_id-based-policy-examples.md).

## Attacher une politique IAM à un jeu d'autorisations ou à un rôle
<a name="UsingWithRDS.IAMDBAuth.IAMPolicy.Attaching"></a>

Après avoir créé une politique IAM pour permettre l'authentification d'une base de données, il convient d'attacher la politique à un jeu d'autorisations ou à un rôle. Pour accéder à un didacticiel sur ce sujet, veuillez consulter [Créer et attacher votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) dans le *Guide de l'utilisateur IAM*.

Tandis que vous parcourez ce didacticiel, vous pouvez utiliser un exemple de politique illustré dans cette section comme point de départ afin de le personnaliser en fonction de vos besoins. À la fin de ce didacticiel, vous obtenez un jeu d'autorisations avec une politique attachée qui peut utiliser l'action `rds-db:connect`.

**Note**  
Vous pouvez mapper plusieurs jeux d'autorisations ou rôles au même compte d'utilisateur de base de données. Supposons par exemple que votre politique IAM a spécifié l'ARN de ressource suivant.  

```
arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe
```
Si vous attachez la politique à *Jane*, *Bob* et *Diego*, chacun de ces utilisateurs peut se connecter au cluster de bases de données en utilisant le compte de base de données `jane_doe`.

# Création d’un compte de base de données à l’aide de l’authentification IAM
<a name="UsingWithRDS.IAMDBAuth.DBAccounts"></a>

Avec l’authentification de base de données IAM, vous n’avez pas besoin d’associer de mots de passe de base de données aux comptes d’utilisateurs que vous créez. Si vous supprimez un utilisateur qui est mappé à un compte de base de données, vous devez également supprimer le compte de base de données avec l’instruction `DROP USER`.

**Note**  
Le nom d’utilisateur utilisé pour l’authentification IAM doit correspondre à la casse du nom d’utilisateur dans la base de données.

**Topics**
+ [

## Utilisation de l’authentification IAM avec Aurora MySQL
](#UsingWithRDS.IAMDBAuth.DBAccounts.MySQL)
+ [

## Utilisation de l'authentification IAM avec Aurora PostgreSQL
](#UsingWithRDS.IAMDBAuth.DBAccounts.PostgreSQL)

## Utilisation de l’authentification IAM avec Aurora MySQL
<a name="UsingWithRDS.IAMDBAuth.DBAccounts.MySQL"></a>

Avec et Aurora MySQL, l'authentification est `AWSAuthenticationPlugin` gérée AWS par un plugin fourni qui fonctionne parfaitement avec IAM pour authentifier vos utilisateurs. Connectez-vous au cluster de bases de données en tant qu’utilisateur principal ou autre utilisateur qui peut créer des utilisateurs et accorder des privilèges. Après vous être connecté, exécutez l’instruction `CREATE USER`, comme indiqué dans l’exemple suivant.

```
CREATE USER 'jane_doe' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS'; 
```

La clause `IDENTIFIED WITH` permet à Aurora MySQL d’utiliser `AWSAuthenticationPlugin` pour authentifier le compte de base de données (`jane_doe`). La clause `AS 'RDS'` fait référence à la méthode d’authentification. Assurez-vous que le nom d’utilisateur de base de données spécifié est identique à une ressource dans la politique IAM pour l’accès à la base de données IAM. Pour de plus amples informations, veuillez consulter [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md). 

**Note**  
Si le message suivant s'affiche, cela signifie que le plug-in AWS fourni n'est pas disponible pour le cluster d' de base de données actuel.  
`ERROR 1524 (HY000): Plugin 'AWSAuthenticationPlugin' is not loaded`  
Pour remédier à cette erreur, vérifiez si vous utilisez une configuration prise en charge et si vous avez activé l’authentification de base de données IAM sur votre cluster de bases de données. Pour plus d’informations, consultez [Disponibilité des régions et des versions](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability) et [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md).

Après avoir créé un compte à l’aide de `AWSAuthenticationPlugin`, vous pouvez le gérer de la même manière que les autres comptes de base de données. Vous pouvez par exemple modifier les privilèges de compte avec `GRANT` et `REVOKE`, ou changer divers attributs de compte avec l’instruction `ALTER USER`. 

Le trafic réseau de base de données est crypté SSL/TLS lors de l'utilisation d'IAM. Pour autoriser les connexions SSL, modifiez le compte d’utilisateur à l’aide de la commande suivante.

```
ALTER USER 'jane_doe'@'%' REQUIRE SSL;     
```

 

## Utilisation de l'authentification IAM avec Aurora PostgreSQL
<a name="UsingWithRDS.IAMDBAuth.DBAccounts.PostgreSQL"></a>

Pour utiliser l’authentification IAM avec Aurora PostgreSQL, connectez-vous au cluster de bases de données en tant qu’utilisateur principal ou autre utilisateur qui peut créer des utilisateurs et accorder des privilèges. Après vous être connecté, créez des utilisateurs de base de données, puis accordez-leur le rôle `rds_iam`, comme indiqué dans l’exemple suivant.

```
CREATE USER db_userx; 
GRANT rds_iam TO db_userx;
```

Assurez-vous que le nom d’utilisateur de base de données spécifié est identique à une ressource dans la politique IAM pour l’accès à la base de données IAM. Pour plus d’informations, consultez [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md). Vous devez accorder le rôle `rds_iam` pour utiliser l’authentification IAM. Vous pouvez également utiliser des appartenances imbriquées ou des octrois indirects du rôle. 

Notez qu’un utilisateur de base de données PostgreSQL peut utiliser l’authentification IAM ou Kerberos, mais pas les deux, si bien que cet utilisateur ne peut pas avoir le rôle `rds_ad`. Cela s’applique également aux adhésions imbriquées. Pour plus d’informations, consultez [Étape 7 : Créer des utilisateurs PostgreSQL pour vos principaux Kerberos](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins).

# Connexion à votre cluster de base de données à l'aide de l'authentification IAM.
<a name="UsingWithRDS.IAMDBAuth.Connecting"></a>

Avec l'authentification de base de données IAM, vous utilisez un jeton d'identification lors de la connexion à votre cluster de base de données. Un *jeton d'authentification* constitue une chaîne de caractères unique qui remplace un mot de passe. Après avoir été créé, un jeton d'authentification est valable pendant 15 minutes avant d'expirer. Si vous tentez de vous connecter alors que le jeton expiré, la demande de connexion est rejetée.

Chaque jeton d'authentification doit être accompagné d'une signature valide, en utilisant AWS Signature Version 4. (Pour plus d'informations, consultez [Processus de signature Signature version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) dans la *Références générales AWS*.) L'AWS CLI et un kit SDK AWS tel que AWS SDK pour Java ou AWS SDK pour Python (Boto3) peuvent signer automatiquement chaque jeton que vous créez.

Vous pouvez utiliser un jeton d'authentification lorsque vous vous connectez à Amazon Aurora à partir d'un autre service AWS tel que AWS Lambda. L'utilisation d'un jeton vous évite d'avoir à placer un mot de passe dans votre code. Vous pouvez aussi utiliser un kit SDK AWS pour créer et signer un jeton d'authentification par programmation.

Après avoir obtenu un jeton d'authentification IAM signé, vous pouvez vous connecter à un cluster de bases de données Aurora. Utilisez les liens ci-dessous pour savoir comment procéder avec un outil de ligne de commande ou un kit SDK AWS, comme le AWS SDK pour Java ou AWS SDK pour Python (Boto3).

Pour plus d'informations, consultez les billets de blog suivants :
+ [Utilisation de l'authentification IAM pour se connecter avec SQL Workbench/J à Aurora MySQL ou Amazon RDS for MySQL](https://aws.amazon.com/blogs/database/use-iam-authentication-to-connect-with-sql-workbenchj-to-amazon-aurora-mysql-or-amazon-rds-for-mysql/)
+ [Utilisation de l'authentification IAM pour se connecter à PgAdmin Amazon Aurora PostgreSQL ou Amazon RDS for PostgreSQL](https://aws.amazon.com/blogs/database/using-iam-authentication-to-connect-with-pgadmin-amazon-aurora-postgresql-or-amazon-rds-for-postgresql/)

**Prérequis**  
Les conditions préalables à la connexion à votre cluster de base de données à l'aide de l'authentification IAM sont les suivantes :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Topics**
+ [

# Connexion à votre cluster de bases de données à l’aide de l’authentification IAM avec les pilotes AWS
](IAMDBAuth.Connecting.Drivers.md)
+ [

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM à partir de la ligne de commande : AWS CLI et du client MySQL
](UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.md)
+ [

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM à partir de la ligne de commande : AWS CLI et du client psql
](UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.PostgreSQL.md)
+ [

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour .NET
](UsingWithRDS.IAMDBAuth.Connecting.NET.md)
+ [

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour Go
](UsingWithRDS.IAMDBAuth.Connecting.Go.md)
+ [

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour Java
](UsingWithRDS.IAMDBAuth.Connecting.Java.md)
+ [

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour Python (Boto3)
](UsingWithRDS.IAMDBAuth.Connecting.Python.md)

# Connexion à votre cluster de bases de données à l’aide de l’authentification IAM avec les pilotes AWS
<a name="IAMDBAuth.Connecting.Drivers"></a>

La suite de pilotes AWS a été conçue pour accélérer les temps de bascule et de basculement, ainsi que pour l’authentification avec AWS Secrets Manager, Gestion des identités et des accès AWS (IAM) et l’identité fédérée. Les pilotes AWS s’appuient sur la surveillance de l’état du cluster de bases de données et sur la connaissance de la topologie du cluster pour déterminer le nouvel enregistreur. Cette approche réduit les temps de bascule et de basculement à moins de 10 secondes, contre des dizaines de secondes pour les pilotes open source.

Pour plus d’informations sur les pilotes AWS, consultez le pilote correspondant au langage utilisé pour votre cluster de bases de données [Aurora MySQL](Aurora.Connecting.md#Aurora.Connecting.JDBCDriverMySQL) ou [Aurora PostgreSQL](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL.Utilities).

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM à partir de la ligne de commande : AWS CLI et du client MySQL
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI"></a>

Vous pouvez vous connecter depuis la ligne de commande à un cluster de base de données Aurora d'instance de base de données à l'aide de l'outil de ligne de `mysql` commande AWS CLI et comme décrit ci-dessous.

**Conditions préalables**  
Les conditions préalables à la connexion à votre cluster de base de données à l’aide de l’authentification IAM sont les suivantes :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Note**  
Pour plus d'informations sur la connexion à votre base de données à l'aide de SQL Workbench/J avec authentification IAM, consultez le billet de blog [Utiliser l'authentification IAM pour vous connecter avec SQL à Workbench/J Aurora MySQL ou Amazon RDS](https://aws.amazon.com/blogs/database/use-iam-authentication-to-connect-with-sql-workbenchj-to-amazon-aurora-mysql-or-amazon-rds-for-mysql/) for MySQL.

**Topics**
+ [

## Création d'un jeton d'authentification IAM
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken)
+ [

## Connexion à votre cluster de bases de données
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect)

## Création d'un jeton d'authentification IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken"></a>

L'exemple suivant illustre comment obtenir un jeton d'identification signé à l'aide d AWS CLI.

```
aws rds generate-db-auth-token \
   --hostname rdsmysql.123456789012.us-west-2.rds.amazonaws.com \
   --port 3306 \
   --region us-west-2 \
   --username jane_doe
```

Dans cet exemple, les paramètres sont les suivants :
+ `--hostname` – Le nom d'hôte du cluster de base de données auquel vous souhaitez accéder.
+ `--port` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `--region`— La AWS région dans laquelle le cluster d' de base de données est exécuté
+ `--username` – Le compte de base de données auquel vous souhaitez accéder.

Les premiers caractères du jeton ressemblent à l'exemple suivant.

```
rdsmysql.123456789012.us-west-2.rds.amazonaws.com:3306/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
```

**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.

## Connexion à votre cluster de bases de données
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect"></a>

Le format général de connexion est illustré ci-dessous.

```
mysql --host=hostName --port=portNumber --ssl-ca=full_path_to_ssl_certificate --enable-cleartext-plugin --user=userName --password=authToken
```

Les paramètres sont les suivants :
+ `--host` – Le nom d'hôte du cluster de base de données auquel vous souhaitez accéder.
+ `--port` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `--ssl-ca` – Le chemin d'accès complet vers le fichier de certificat SSL contenant la clé publique.

  Pour de plus amples informations, veuillez consulter [Connexions TLS aux clusters de bases de données Aurora MySQL](AuroraMySQL.Security.md#AuroraMySQL.Security.SSL).

  Pour télécharger un certificat SSL, consultez [Utilisation SSL/TLS pour chiffrer une connexion à une de clusters](UsingWithRDS.SSL.md).
+ `--enable-cleartext-plugin` – Une valeur qui spécifie que `AWSAuthenticationPlugin` doit être utilisé pour cette connexion.

  Si vous utilisez un client MariaDB, l'option `--enable-cleartext-plugin` n'est pas requise.
+ `--user` – Le compte de base de données auquel vous souhaitez accéder.
+ `--password` – Un jeton d'authentification IAM signé.

Le jeton d'authentification est composé de plusieurs centaines de caractères. Il peut être encombrant sur la ligne de commande. Pour contourner ce problème, vous pouvez enregistrer le jeton dans une variable d'environnement, puis utiliser cette variable pour la connexion. L'exemple suivant illustre une manière de contourner ce problème. Dans l'exemple, */sample\$1dir/* il s'agit du chemin complet du fichier de certificat SSL contenant la clé publique.

```
RDSHOST="mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username jane_doe )"

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/global-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN
```

Lorsque vous vous connectez avec `AWSAuthenticationPlugin`, la connexion est sécurisée par SSL. Pour le vérifier, tapez la commande suivante à l'invite de commande `mysql>`.

```
show status like 'Ssl%';
```

Les lignes suivantes de l'affichage obtenu fournissent plus de détails.

```
+---------------+-------------+
| Variable_name | Value                                                                                                                                                                                                                                |
+---------------+-------------+
| ...           | ...
| Ssl_cipher    | AES256-SHA                                                                                                                                                                                                                           |
| ...           | ...
| Ssl_version   | TLSv1.1                                                                                                                                                                                                                              |
| ...           | ...
+-----------------------------+
```

Si vous souhaitez vous connecter à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM à partir de la ligne de commande : AWS CLI et du client psql
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.PostgreSQL"></a>

À partir de la ligne de commande, vous pouvez vous connecter à une cluster de base de données Aurora PostgreSQL avec AWS CLI l'outil de ligne de commande psql comme décrit ci-après.

**Conditions préalables**  
Les conditions préalables à la connexion à votre cluster de base de données à l’aide de l’authentification IAM sont les suivantes :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Note**  
Pour plus d'informations sur la connexion à votre base de données à l'aide de pgAdmin avec authentification IAM, consultez le billet de blog [Utilisation de l'authentification IAM pour se connecter à PgAdmin Amazon Aurora PostgreSQL ou Amazon RDS for PostgreSQL](https://aws.amazon.com/blogs/database/using-iam-authentication-to-connect-with-pgadmin-amazon-aurora-postgresql-or-amazon-rds-for-postgresql/)

**Topics**
+ [

## Création d'un jeton d'authentification IAM
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken.PostgreSQL)
+ [

## Connexion à une un cluster Aurora PostgreSQL
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect.PostgreSQL)

## Création d'un jeton d'authentification IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken.PostgreSQL"></a>

Le jeton d'authentification se compose de plusieurs centaines de caractères ; il peut donc être complexe à manipuler sur la ligne de commande. Pour contourner ce problème, vous pouvez enregistrer le jeton dans une variable d'environnement, puis utiliser cette variable pour la connexion. L'exemple suivant montre comment utiliser le pour AWS CLI obtenir un jeton d'authentification signé à l'aide de la `generate-db-auth-token` commande et le stocker dans une variable d'`PGPASSWORD`environnement.

```
export RDSHOST="mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com"
export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"
```

Dans cet exemple, les paramètres de la commande `generate-db-auth-token` sont les suivants :
+ `--hostname` – Nom d'hôte de l'du cluster (point de terminaison du cluster) de base de données auquel vous souhaitez accéder.
+ `--port` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `--region`— La AWS région dans laquelle le cluster d' de base de données est exécuté
+ `--username` – Le compte de base de données auquel vous souhaitez accéder.

Les premiers caractères du jeton généré ressemblent à l'exemple suivant.

```
mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
```

**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.

## Connexion à une un cluster Aurora PostgreSQL
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect.PostgreSQL"></a>

Le format général pour utiliser psql pour la connexion est illustré ci-dessous.

```
psql "host=hostName port=portNumber sslmode=verify-full sslrootcert=full_path_to_ssl_certificate dbname=DBName user=userName password=authToken"
```

Les paramètres sont les suivants :
+ `host` – Nom d'hôte de l'du cluster (point de terminaison du cluster) de base de données auquel vous souhaitez accéder.
+ `port` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `sslmode` – Le mode SSL à utiliser.

  Lorsque vous utilisez `sslmode=verify-full`, la connexion SSL vérifie le point de terminaison de l'cluster de base de données par rapport au point de terminaison dans le certificat SSL.
+ `sslrootcert` – Le chemin d'accès complet vers le fichier de certificat SSL contenant la clé publique.

  Pour de plus amples informations, veuillez consulter [Sécurisation des données Aurora PostgreSQL avec SSL/TLS](AuroraPostgreSQL.Security.md#AuroraPostgreSQL.Security.SSL).

  Pour télécharger un certificat SSL, consultez [Utilisation SSL/TLS pour chiffrer une connexion à une de clusters](UsingWithRDS.SSL.md).
+ `dbname` – La base de données à laquelle vous souhaitez accéder.
+ `user` – Le compte de base de données auquel vous souhaitez accéder.
+ `password` – Un jeton d'authentification IAM signé.

**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.

L'exemple suivant montre l'utilisation de psql pour se connecter. Dans cet exemple, psql utilise la variable d'environnement `RDSHOST` pour l'hôte et la variable d'environnement `PGPASSWORD` pour le jeton généré. Il s'*/sample\$1dir/*agit également du chemin complet vers le fichier de certificat SSL contenant la clé publique.

```
export RDSHOST="mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com"
export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"
                    
psql "host=$RDSHOST port=5432 sslmode=verify-full sslrootcert=/sample_dir/global-bundle.pem dbname=DBName user=jane_doe password=$PGPASSWORD"
```

Si vous souhaitez vous connecter à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour .NET
<a name="UsingWithRDS.IAMDBAuth.Connecting.NET"></a>

Vous pouvez vous connecter à une instance de base de données en procédant comme décrit ci-dessous. AWS SDK pour .NET 

**Conditions préalables**  
Les conditions préalables à la connexion à votre cluster de base de données à l’aide de l’authentification IAM sont les suivantes :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Exemples**  
Les exemples de code suivants montre comment générer un jeton d'authentification, puis comment l'utiliser pour se connecter à un cluster de base de données.

Pour exécuter cet exemple de code, vous avez besoin du [AWS SDK pour .NET](https://aws.amazon.com/sdk-for-net/), qui se trouve sur le AWS site. Les paquets `AWSSDK.CORE` et `AWSSDK.RDS` sont requis. Pour vous connecter à un cluster d' de base de données, utilisez le connecteur de base de données .NET pour le moteur de base de données, par exemple MySqlConnector pour MariaDB ou MySQL, ou Npgsql pour PostgreSQL.

Ce code se connecte à un cluster de base de données Aurora MySQL. Modifiez la valeur des variables suivantes selon les besoins :
+ `server` – Le point de terminaison de cluster de base de données à laquelle vous souhaitez accéder.
+ `user` – Le compte de base de données auquel vous souhaitez accéder.
+ `database` – La base de données à laquelle vous souhaitez accéder.
+ `port` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `SslMode` – Le mode SSL à utiliser.

  Lorsque vous utilisez `SslMode=Required`, la connexion SSL vérifie le point de terminaison de l'cluster de base de données par rapport au point de terminaison dans le certificat SSL.
+ `SslCa` – Le chemin d'accès complet au certificat SSL pour Amazon Aurora

  Pour télécharger un certificat, consultez [Utilisation SSL/TLS pour chiffrer une connexion à une de clusters](UsingWithRDS.SSL.md).

**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.

```
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using Amazon;

namespace ubuntu
{
  class Program
  {
    static void Main(string[] args)
    {
      var pwd = Amazon.RDS.Util.RDSAuthTokenGenerator.GenerateAuthToken(RegionEndpoint.USEast1, "mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com", 3306, "jane_doe");
      // for debug only Console.Write("{0}\n", pwd);  //this verifies the token is generated

      MySqlConnection conn = new MySqlConnection($"server=mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com;user=jane_doe;database=mydB;port=3306;password={pwd};SslMode=Required;SslCa=full_path_to_ssl_certificate");
      conn.Open();

      // Define a query
      MySqlCommand sampleCommand = new MySqlCommand("SHOW DATABASES;", conn);

      // Execute a query
      MySqlDataReader mysqlDataRdr = sampleCommand.ExecuteReader();

      // Read all rows and output the first column in each row
      while (mysqlDataRdr.Read())
        Console.WriteLine(mysqlDataRdr[0]);

      mysqlDataRdr.Close();
      // Close connection
      conn.Close();
    }
  }
}
```

Ce code se connecte à un cluster de base de données Aurora PostgreSQL.

Modifiez la valeur des variables suivantes selon les besoins :
+ `Server` – Le point de terminaison de cluster de base de données à laquelle vous souhaitez accéder.
+ `User ID` – Le compte de base de données auquel vous souhaitez accéder.
+ `Database` – La base de données à laquelle vous souhaitez accéder.
+ `Port` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `SSL Mode` – Le mode SSL à utiliser.

  Lorsque vous utilisez `SSL Mode=Required`, la connexion SSL vérifie le point de terminaison de l'cluster de base de données par rapport au point de terminaison dans le certificat SSL.
+ `Root Certificate` – Le chemin d'accès complet au certificat SSL pour Amazon Aurora

  Pour télécharger un certificat, consultez [Utilisation SSL/TLS pour chiffrer une connexion à une de clusters](UsingWithRDS.SSL.md).

**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.

```
using System;
using Npgsql;
using Amazon.RDS.Util;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var pwd = RDSAuthTokenGenerator.GenerateAuthToken("postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com", 5432, "jane_doe");
// for debug only Console.Write("{0}\n", pwd);  //this verifies the token is generated

            NpgsqlConnection conn = new NpgsqlConnection($"Server=postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com;User Id=jane_doe;Password={pwd};Database=mydb;SSL Mode=Require;Root Certificate=full_path_to_ssl_certificate");
            conn.Open();

            // Define a query
                   NpgsqlCommand cmd = new NpgsqlCommand("select count(*) FROM pg_user", conn);

            // Execute a query
            NpgsqlDataReader dr = cmd.ExecuteReader();

            // Read all rows and output the first column in each row
            while (dr.Read())
                Console.Write("{0}\n", dr[0]);

            // Close connection
            conn.Close();
        }
    }
}
```

Si vous souhaitez vous connecter à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour Go
<a name="UsingWithRDS.IAMDBAuth.Connecting.Go"></a>

Vous pouvez vous connecter à une instance de base de données en procédant comme décrit ci-dessous. AWS SDK pour Go 

**Conditions préalables**  
Les conditions préalables à la connexion à votre cluster de base de données à l’aide de l’authentification IAM sont les suivantes :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Exemples**  
Pour exécuter ces exemples de code, vous avez besoin du [AWS SDK pour Go](https://aws.amazon.com/sdk-for-go/), disponible sur le AWS site.

Modifiez la valeur des variables suivantes selon les besoins :
+ `dbName` – La base de données à laquelle vous souhaitez accéder.
+ `dbUser` – Le compte de base de données auquel vous souhaitez accéder.
+ `dbHost` – Le point de terminaison de cluster de base de données à laquelle vous souhaitez accéder.
**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.
+ `dbPort` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `region`— La AWS région dans laquelle le cluster d' de base de données est exécuté

En outre, assurez-vous que les bibliothèques importées dans l'exemple de code existent sur votre système.

**Important**  
Les exemples de cette section utilisent le code suivant pour fournir des informations d'identification qui accèdent à une base de données à partir d'un environnement local :  
`creds := credentials.NewEnvCredentials()`  
Si vous accédez à une base de données depuis un AWS service, tel qu'Amazon EC2 ou Amazon ECS, vous pouvez remplacer le code par le code suivant :  
`sess := session.Must(session.NewSession())`  
`creds := sess.Config.Credentials`  
Si vous effectuez cette modification, assurez-vous d'ajouter l'importation suivante :  
`"github.com/aws/aws-sdk-go/aws/session"`

**Topics**
+ [

## Connexion à l'aide de l'authentification IAM et de la V2 AWS SDK pour Go
](#UsingWithRDS.IAMDBAuth.Connecting.GoV2)
+ [

## Connexion à l'aide de l'authentification IAM et de la AWS SDK pour Go V1.
](#UsingWithRDS.IAMDBAuth.Connecting.GoV1)

## Connexion à l'aide de l'authentification IAM et de la V2 AWS SDK pour Go
<a name="UsingWithRDS.IAMDBAuth.Connecting.GoV2"></a>

Vous pouvez vous connecter à un cluster d' de base de données à l'aide de l'authentification IAM et de la AWS SDK pour Go V2.

Les exemples de code suivants montre comment générer un jeton d'authentification, puis comment l'utiliser pour se connecter à un cluster de base de données. 

Ce code se connecte à un cluster de base de données Aurora MySQL.

```
package main
                
import (
     "context"
     "database/sql"
     "fmt"

     "github.com/aws/aws-sdk-go-v2/config"
     "github.com/aws/aws-sdk-go-v2/feature/rds/auth"
     _ "github.com/go-sql-driver/mysql"
)

func main() {

     var dbName string = "DatabaseName"
     var dbUser string = "DatabaseUser"
     var dbHost string = "mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
     var dbPort int = 3306
     var dbEndpoint string = fmt.Sprintf("%s:%d", dbHost, dbPort)
     var region string = "us-east-1"

    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
    	panic("configuration error: " + err.Error())
    }

    authenticationToken, err := auth.BuildAuthToken(
    	context.TODO(), dbEndpoint, region, dbUser, cfg.Credentials)
    if err != nil {
	    panic("failed to create authentication token: " + err.Error())
    }

    dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?tls=true&allowCleartextPasswords=true",
        dbUser, authenticationToken, dbEndpoint, dbName,
    )

    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

Ce code se connecte à un cluster de base de données Aurora PostgreSQL.

```
package main

import (
     "context"
     "database/sql"
     "fmt"

     "github.com/aws/aws-sdk-go-v2/config"
     "github.com/aws/aws-sdk-go-v2/feature/rds/auth"
     _ "github.com/lib/pq"
)

func main() {

     var dbName string = "DatabaseName"
     var dbUser string = "DatabaseUser"
     var dbHost string = "postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
     var dbPort int = 5432
     var dbEndpoint string = fmt.Sprintf("%s:%d", dbHost, dbPort)
     var region string = "us-east-1"

    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
    	panic("configuration error: " + err.Error())
    }

    authenticationToken, err := auth.BuildAuthToken(
    	context.TODO(), dbEndpoint, region, dbUser, cfg.Credentials)
    if err != nil {
	    panic("failed to create authentication token: " + err.Error())
    }

    dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s",
        dbHost, dbPort, dbUser, authenticationToken, dbName,
    )

    db, err := sql.Open("postgres", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

Si vous souhaitez vous connecter à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

## Connexion à l'aide de l'authentification IAM et de la AWS SDK pour Go V1.
<a name="UsingWithRDS.IAMDBAuth.Connecting.GoV1"></a>

Vous pouvez vous connecter à un cluster d' de base de données à l'aide de l'authentification IAM et du V1 AWS SDK pour Go 

Les exemples de code suivants montre comment générer un jeton d'authentification, puis comment l'utiliser pour se connecter à un cluster de base de données. 

Ce code se connecte à un cluster de base de données Aurora MySQL.

```
package main
         
import (
    "database/sql"
    "fmt"
    "log"

    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/service/rds/rdsutils"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    dbName := "app"
    dbUser := "jane_doe"
    dbHost := "mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
    dbPort := 3306
    dbEndpoint := fmt.Sprintf("%s:%d", dbHost, dbPort)
    region := "us-east-1"

    creds := credentials.NewEnvCredentials()
    authToken, err := rdsutils.BuildAuthToken(dbEndpoint, region, dbUser, creds)
    if err != nil {
        panic(err)
    }

    dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?tls=true&allowCleartextPasswords=true",
        dbUser, authToken, dbEndpoint, dbName,
    )

    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

Ce code se connecte à un cluster de base de données Aurora PostgreSQL.

```
package main

import (
	"database/sql"
	"fmt"

	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/service/rds/rdsutils"
	_ "github.com/lib/pq"
)

func main() {
    dbName := "app"
    dbUser := "jane_doe"
    dbHost := "postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
    dbPort := 5432
    dbEndpoint := fmt.Sprintf("%s:%d", dbHost, dbPort)
    region := "us-east-1"

    creds := credentials.NewEnvCredentials()
    authToken, err := rdsutils.BuildAuthToken(dbEndpoint, region, dbUser, creds)
    if err != nil {
        panic(err)
    }

    dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s",
        dbHost, dbPort, dbUser, authToken, dbName,
    )

    db, err := sql.Open("postgres", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

Si vous souhaitez vous connecter à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour Java
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java"></a>

Vous pouvez vous connecter à une instance de base de données en procédant comme décrit ci-dessous. AWS SDK pour Java 

**Conditions préalables**  
Les conditions préalables à la connexion à votre cluster de base de données à l’aide de l’authentification IAM sont les suivantes :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)
+ [Configuration du AWS SDK pour Java](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-install.html)

Pour des exemples d’utilisation du kit SDK pour Java 2.x, consultez [Exemples Amazon RDS utilisant le kit SDK pour Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_rds_code_examples.html). Vous pouvez également utiliser l' AWS Advanced JDBC Wrapper, voir la documentation [AWS Advanced JDBC](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/Documentation.md) Wrapper.

**Topics**
+ [

## Création d’un jeton d’authentification IAM
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken)
+ [

## Construction manuelle d’un jeton d’authentification IAM
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken2)
+ [

## Connexion à votre cluster de bases de données
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken.Connect)

## Création d’un jeton d’authentification IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken"></a>

Si vous écrivez des programmes à l'aide de AWS SDK pour Java, vous pouvez obtenir un jeton d'authentification signé à l'aide de la `RdsIamAuthTokenGenerator` classe. L'utilisation de cette classe nécessite que vous fournissiez des AWS informations d'identification. Pour ce faire, vous devez créer une instance de la `DefaultAWSCredentialsProviderChain` classe. `DefaultAWSCredentialsProviderChain`utilise la première clé AWS d'accès et la première clé secrète qu'il trouve dans la [chaîne de fournisseurs d'informations d'identification par défaut](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default). Pour plus d’informations sur les clés d’accès AWS , consultez [Gestion des clés d’accès pour les utilisateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).

**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.

Après avoir créé une instance de `RdsIamAuthTokenGenerator`, vous pouvez appeler la méthode `getAuthToken` pour obtenir un jeton signé. Fournissez la région AWS , le nom d’hôte, le numéro de port et le nom d’utilisateur. L’exemple de code suivant montre comment procéder.

```
package com.amazonaws.codesamples;

import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.rds.auth.GetIamAuthTokenRequest;
import com.amazonaws.services.rds.auth.RdsIamAuthTokenGenerator;

public class GenerateRDSAuthToken {

    public static void main(String[] args) {

	    String region = "us-west-2";
	    String hostname = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
	    String port = "3306";
	    String username = "jane_doe";
	
	    System.out.println(generateAuthToken(region, hostname, port, username));
    }

    static String generateAuthToken(String region, String hostName, String port, String username) {

	    RdsIamAuthTokenGenerator generator = RdsIamAuthTokenGenerator.builder()
		    .credentials(new DefaultAWSCredentialsProviderChain())
		    .region(region)
		    .build();

	    String authToken = generator.getAuthToken(
		    GetIamAuthTokenRequest.builder()
		    .hostname(hostName)
		    .port(Integer.parseInt(port))
		    .userName(username)
		    .build());
	    
	    return authToken;
    }

}
```

## Construction manuelle d’un jeton d’authentification IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken2"></a>

Dans Java, la manière la plus facile de créer un jeton d’authentification est d’utiliser `RdsIamAuthTokenGenerator`. Cette classe crée un jeton d'authentification pour vous, puis le signe à l'aide de AWS la version de signature 4. Pour plus d’informations, consultez [Processus de signature Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) dans le *Références générales AWS*.

Vous pouvez néanmoins aussi construire et signer un jeton d’authentification manuellement, comme indiqué dans l’exemple de code suivant.

```
package com.amazonaws.codesamples;

import com.amazonaws.SdkClientException;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.auth.SigningAlgorithm;
import com.amazonaws.util.BinaryUtils;
import org.apache.commons.lang3.StringUtils;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SortedMap;
import java.util.TreeMap;

import static com.amazonaws.auth.internal.SignerConstants.AWS4_TERMINATOR;
import static com.amazonaws.util.StringUtils.UTF8;

public class CreateRDSAuthTokenManually {
    public static String httpMethod = "GET";
    public static String action = "connect";
    public static String canonicalURIParameter = "/";
    public static SortedMap<String, String> canonicalQueryParameters = new TreeMap();
    public static String payload = StringUtils.EMPTY;
    public static String signedHeader = "host";
    public static String algorithm = "AWS4-HMAC-SHA256";
    public static String serviceName = "rds-db";
    public static String requestWithoutSignature;

    public static void main(String[] args) throws Exception {

        String region = "us-west-2";
        String instanceName = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
        String port = "3306";
        String username = "jane_doe";
	
        Date now = new Date();
        String date = new SimpleDateFormat("yyyyMMdd").format(now);
        String dateTimeStamp = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'").format(now);
        DefaultAWSCredentialsProviderChain creds = new DefaultAWSCredentialsProviderChain();
	    String awsAccessKey = creds.getCredentials().getAWSAccessKeyId();
	    String awsSecretKey = creds.getCredentials().getAWSSecretKey();
        String expiryMinutes = "900";
        
        System.out.println("Step 1:  Create a canonical request:");
        String canonicalString = createCanonicalString(username, awsAccessKey, date, dateTimeStamp, region, expiryMinutes, instanceName, port);
        System.out.println(canonicalString);
        System.out.println();

        System.out.println("Step 2:  Create a string to sign:");        
        String stringToSign = createStringToSign(dateTimeStamp, canonicalString, awsAccessKey, date, region);
        System.out.println(stringToSign);
        System.out.println();

        System.out.println("Step 3:  Calculate the signature:");        
        String signature = BinaryUtils.toHex(calculateSignature(stringToSign, newSigningKey(awsSecretKey, date, region, serviceName)));
        System.out.println(signature);
        System.out.println();

        System.out.println("Step 4:  Add the signing info to the request");                
        System.out.println(appendSignature(signature));
        System.out.println();
        
    }

    //Step 1: Create a canonical request date should be in format YYYYMMDD and dateTime should be in format YYYYMMDDTHHMMSSZ
    public static String createCanonicalString(String user, String accessKey, String date, String dateTime, String region, String expiryPeriod, String hostName, String port) throws Exception {
        canonicalQueryParameters.put("Action", action);
        canonicalQueryParameters.put("DBUser", user);
        canonicalQueryParameters.put("X-Amz-Algorithm", "AWS4-HMAC-SHA256");
        canonicalQueryParameters.put("X-Amz-Credential", accessKey + "%2F" + date + "%2F" + region + "%2F" + serviceName + "%2Faws4_request");
        canonicalQueryParameters.put("X-Amz-Date", dateTime);
        canonicalQueryParameters.put("X-Amz-Expires", expiryPeriod);
        canonicalQueryParameters.put("X-Amz-SignedHeaders", signedHeader);
        String canonicalQueryString = "";
        while(!canonicalQueryParameters.isEmpty()) {
            String currentQueryParameter = canonicalQueryParameters.firstKey();
            String currentQueryParameterValue = canonicalQueryParameters.remove(currentQueryParameter);
            canonicalQueryString = canonicalQueryString + currentQueryParameter + "=" + currentQueryParameterValue;
            if (!currentQueryParameter.equals("X-Amz-SignedHeaders")) {
                canonicalQueryString += "&";
            }
        }
        String canonicalHeaders = "host:" + hostName + ":" + port + '\n';
        requestWithoutSignature = hostName + ":" + port + "/?" + canonicalQueryString;

        String hashedPayload = BinaryUtils.toHex(hash(payload));
        return httpMethod + '\n' + canonicalURIParameter + '\n' + canonicalQueryString + '\n' + canonicalHeaders + '\n' + signedHeader + '\n' + hashedPayload;

    }

    //Step 2: Create a string to sign using sig v4
    public static String createStringToSign(String dateTime, String canonicalRequest, String accessKey, String date, String region) throws Exception {
        String credentialScope = date + "/" + region + "/" + serviceName + "/aws4_request";
        return algorithm + '\n' + dateTime + '\n' + credentialScope + '\n' + BinaryUtils.toHex(hash(canonicalRequest));

    }

    //Step 3: Calculate signature
    /**
     * Step 3 of the &AWS; Signature version 4 calculation. It involves deriving
     * the signing key and computing the signature. Refer to
     * http://docs.aws.amazon
     * .com/general/latest/gr/sigv4-calculate-signature.html
     */
    public static byte[] calculateSignature(String stringToSign,
                                            byte[] signingKey) {
        return sign(stringToSign.getBytes(Charset.forName("UTF-8")), signingKey,
                SigningAlgorithm.HmacSHA256);
    }

    public static byte[] sign(byte[] data, byte[] key,
                          SigningAlgorithm algorithm) throws SdkClientException {
        try {
            Mac mac = algorithm.getMac();
            mac.init(new SecretKeySpec(key, algorithm.toString()));
            return mac.doFinal(data);
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to calculate a request signature: "
                            + e.getMessage(), e);
        }
    }

    public static byte[] newSigningKey(String secretKey,
                                   String dateStamp, String regionName, String serviceName) {
        byte[] kSecret = ("AWS4" + secretKey).getBytes(Charset.forName("UTF-8"));
        byte[] kDate = sign(dateStamp, kSecret, SigningAlgorithm.HmacSHA256);
        byte[] kRegion = sign(regionName, kDate, SigningAlgorithm.HmacSHA256);
        byte[] kService = sign(serviceName, kRegion,
                SigningAlgorithm.HmacSHA256);
        return sign(AWS4_TERMINATOR, kService, SigningAlgorithm.HmacSHA256);
    }

    public static byte[] sign(String stringData, byte[] key,
                       SigningAlgorithm algorithm) throws SdkClientException {
        try {
            byte[] data = stringData.getBytes(UTF8);
            return sign(data, key, algorithm);
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to calculate a request signature: "
                            + e.getMessage(), e);
        }
    }

    //Step 4: append the signature
    public static String appendSignature(String signature) {
        return requestWithoutSignature + "&X-Amz-Signature=" + signature;
    }

    public static byte[] hash(String s) throws Exception {
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            md.update(s.getBytes(UTF8));
            return md.digest();
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to compute hash while signing request: "
                            + e.getMessage(), e);
        }
    }
}
```

## Connexion à votre cluster de bases de données
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken.Connect"></a>

L’exemple de code suivant montre comment créer un jeton d’authentification, puis comment l’utiliser pour se connecter à un cluster exécutant Aurora MySQL. 

Pour exécuter cet exemple de code, vous avez besoin du [AWS SDK pour Java](https://aws.amazon.com/sdk-for-java/), qui se trouve sur le AWS site. En outre, vous avez besoin des éléments suivants :
+ MySQL Connector/J. Cet exemple de code a été testé avec `mysql-connector-java-5.1.33-bin.jar`.
+ Certificat intermédiaire pour (Amazon Aurora) spécifique à une AWS région. (Pour plus d’informations, consultez [Utilisation SSL/TLS pour chiffrer une connexion à une de clusters](UsingWithRDS.SSL.md).) À l’exécution, le chargeur de classe recherche le certificat dans le même annuaire que celui de cet exemple de code Java, afin de pouvoir le trouver.
+ Modifiez la valeur des variables suivantes selon les besoins :
  + `RDS_INSTANCE_HOSTNAME` : le nom d’hôte du cluster de bases de données auquel vous souhaitez accéder.
  + `RDS_INSTANCE_PORT` : le numéro du port utilisé pour la connexion à votre cluster de bases de données PostgreSQL.
  + `REGION_NAME`— La AWS région dans laquelle le cluster d' de base de données est exécuté.
  + `DB_USER` – Le compte de base de données auquel vous souhaitez accéder.
  + `SSL_CERTIFICATE`— Un certificat SSL pour Amazon Aurora spécifique à une AWS région.

    Pour télécharger un certificat pour votre région AWS , consultez [Utilisation SSL/TLS pour chiffrer une connexion à une de clusters](UsingWithRDS.SSL.md). Placez le certificat SSL dans le même annuaire que ce fichier de programme Java, afin que le chargeur de classe puisse le trouver à l’exécution.

Cet exemple de code permet d'obtenir des AWS informations d'identification à partir de la chaîne de [fournisseurs d'informations d'identification par défaut](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default).

**Note**  
Spécifiez un mot de passe pour `DEFAULT_KEY_STORE_PASSWORD` différent de celui indiqué ici, en tant que bonne pratique de sécurité.

```
package com.amazonaws.samples;

import com.amazonaws.services.rds.auth.RdsIamAuthTokenGenerator;
import com.amazonaws.services.rds.auth.GetIamAuthTokenRequest;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.auth.AWSStaticCredentialsProvider;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

import java.net.URL;

public class IAMDatabaseAuthenticationTester {
    //&AWS; Credentials of the IAM user with policy enabling IAM Database Authenticated access to the db by the db user.
    private static final DefaultAWSCredentialsProviderChain creds = new DefaultAWSCredentialsProviderChain();
    private static final String AWS_ACCESS_KEY = creds.getCredentials().getAWSAccessKeyId();
    private static final String AWS_SECRET_KEY = creds.getCredentials().getAWSSecretKey();

    //Configuration parameters for the generation of the IAM Database Authentication token
    private static final String RDS_INSTANCE_HOSTNAME = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
    private static final int RDS_INSTANCE_PORT = 3306;
    private static final String REGION_NAME = "us-west-2";
    private static final String DB_USER = "jane_doe";
    private static final String JDBC_URL = "jdbc:mysql://" + RDS_INSTANCE_HOSTNAME + ":" + RDS_INSTANCE_PORT;

    private static final String SSL_CERTIFICATE = "rds-ca-2019-us-west-2.pem";

    private static final String KEY_STORE_TYPE = "JKS";
    private static final String KEY_STORE_PROVIDER = "SUN";
    private static final String KEY_STORE_FILE_PREFIX = "sys-connect-via-ssl-test-cacerts";
    private static final String KEY_STORE_FILE_SUFFIX = ".jks";
    private static final String DEFAULT_KEY_STORE_PASSWORD = "changeit";

    public static void main(String[] args) throws Exception {
        //get the connection
        Connection connection = getDBConnectionUsingIam();

        //verify the connection is successful
        Statement stmt= connection.createStatement();
        ResultSet rs=stmt.executeQuery("SELECT 'Success!' FROM DUAL;");
        while (rs.next()) {
        	    String id = rs.getString(1);
            System.out.println(id); //Should print "Success!"
        }

        //close the connection
        stmt.close();
        connection.close();
        
        clearSslProperties();
        
    }

    /**
     * This method returns a connection to the db instance authenticated using IAM Database Authentication
     * @return
     * @throws Exception
     */
    private static Connection getDBConnectionUsingIam() throws Exception {
        setSslProperties();
        return DriverManager.getConnection(JDBC_URL, setMySqlConnectionProperties());
    }

    /**
     * This method sets the mysql connection properties which includes the IAM Database Authentication token
     * as the password. It also specifies that SSL verification is required.
     * @return
     */
    private static Properties setMySqlConnectionProperties() {
        Properties mysqlConnectionProperties = new Properties();
        mysqlConnectionProperties.setProperty("verifyServerCertificate","true");
        mysqlConnectionProperties.setProperty("useSSL", "true");
        mysqlConnectionProperties.setProperty("user",DB_USER);
        mysqlConnectionProperties.setProperty("password",generateAuthToken());
        return mysqlConnectionProperties;
    }

    /**
     * This method generates the IAM Auth Token.
     * An example IAM Auth Token would look like follows:
     * btusi123---cmz7kenwo2ye---rds---cn-north-1.amazonaws.com.rproxy.goskope.com.cn:3306/?Action=connect&DBUser=iamtestuser&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20171003T010726Z&X-Amz-SignedHeaders=host&X-Amz-Expires=899&X-Amz-Credential=AKIAPFXHGVDI5RNFO4AQ%2F20171003%2Fcn-north-1%2Frds-db%2Faws4_request&X-Amz-Signature=f9f45ef96c1f770cdad11a53e33ffa4c3730bc03fdee820cfdf1322eed15483b
     * @return
     */
    private static String generateAuthToken() {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);

        RdsIamAuthTokenGenerator generator = RdsIamAuthTokenGenerator.builder()
                .credentials(new AWSStaticCredentialsProvider(awsCredentials)).region(REGION_NAME).build();
        return generator.getAuthToken(GetIamAuthTokenRequest.builder()
                .hostname(RDS_INSTANCE_HOSTNAME).port(RDS_INSTANCE_PORT).userName(DB_USER).build());
    }

    /**
     * This method sets the SSL properties which specify the key store file, its type and password:
     * @throws Exception
     */
    private static void setSslProperties() throws Exception {
        System.setProperty("javax.net.ssl.trustStore", createKeyStoreFile());
        System.setProperty("javax.net.ssl.trustStoreType", KEY_STORE_TYPE);
        System.setProperty("javax.net.ssl.trustStorePassword", DEFAULT_KEY_STORE_PASSWORD);
    }

    /**
     * This method returns the path of the Key Store File needed for the SSL verification during the IAM Database Authentication to
     * the db instance.
     * @return
     * @throws Exception
     */
    private static String createKeyStoreFile() throws Exception {
        return createKeyStoreFile(createCertificate()).getPath();
    }

    /**
     *  This method generates the SSL certificate
     * @return
     * @throws Exception
     */
    private static X509Certificate createCertificate() throws Exception {
        CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
        URL url = new File(SSL_CERTIFICATE).toURI().toURL();
        if (url == null) {
            throw new Exception();
        }
        try (InputStream certInputStream = url.openStream()) {
            return (X509Certificate) certFactory.generateCertificate(certInputStream);
        }
    }

    /**
     * This method creates the Key Store File
     * @param rootX509Certificate - the SSL certificate to be stored in the KeyStore
     * @return
     * @throws Exception
     */
    private static File createKeyStoreFile(X509Certificate rootX509Certificate) throws Exception {
        File keyStoreFile = File.createTempFile(KEY_STORE_FILE_PREFIX, KEY_STORE_FILE_SUFFIX);
        try (FileOutputStream fos = new FileOutputStream(keyStoreFile.getPath())) {
            KeyStore ks = KeyStore.getInstance(KEY_STORE_TYPE, KEY_STORE_PROVIDER);
            ks.load(null);
            ks.setCertificateEntry("rootCaCertificate", rootX509Certificate);
            ks.store(fos, DEFAULT_KEY_STORE_PASSWORD.toCharArray());
        }
        return keyStoreFile;
    }
    
    /**
     * This method clears the SSL properties.
     * @throws Exception
     */
    private static void clearSslProperties() throws Exception {
           System.clearProperty("javax.net.ssl.trustStore");
           System.clearProperty("javax.net.ssl.trustStoreType");
           System.clearProperty("javax.net.ssl.trustStorePassword"); 
    }
    
}
```

Si vous souhaitez vous connecter à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Connexion à votre cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour Python (Boto3)
<a name="UsingWithRDS.IAMDBAuth.Connecting.Python"></a>

Vous pouvez vous connecter à une instance de base de données en procédant comme décrit ci-dessous. AWS SDK pour Python (Boto3) 

**Conditions préalables**  
Les conditions préalables à la connexion à votre cluster de base de données à l’aide de l’authentification IAM sont les suivantes :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

En outre, assurez-vous que les bibliothèques importées dans l'exemple de code existent sur votre système.

**Exemples**  
Les exemples de code utilisent des profils pour les informations d'identification partagées. Pour plus d'informations sur la spécification des informations d'identification, consultez la section [Informations d'identification](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html) dans la AWS SDK pour Python (Boto3) documentation.

Les exemples de code suivants montre comment générer un jeton d'authentification, puis comment l'utiliser pour se connecter à un cluster de base de données. 

Pour exécuter cet exemple de code, vous avez besoin du [AWS SDK pour Python (Boto3)](https://aws.amazon.com/sdk-for-python/), qui se trouve sur le AWS site.

Modifiez la valeur des variables suivantes selon les besoins :
+ `ENDPOINT` – Le point de terminaison de cluster de base de données à laquelle vous souhaitez accéder.
+ `PORT` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `USER` – Le compte de base de données auquel vous souhaitez accéder.
+ `REGION`— La AWS région dans laquelle le cluster d' de base de données est exécuté
+ `DBNAME` – La base de données à laquelle vous souhaitez accéder.
+ `SSLCERTIFICATE` – Le chemin d'accès complet au certificat SSL pour Amazon Aurora

  Pour `ssl_ca`, spécifiez un certificat SSL. Pour télécharger un certificat SSL, consultez [Utilisation SSL/TLS pour chiffrer une connexion à une de clusters](UsingWithRDS.SSL.md).

**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.

Ce code se connecte à un cluster de base de données Aurora MySQL.

Avant d'exécuter ce code, installez le pilote PyMy SQL en suivant les instructions du [Python Package Index](https://pypi.org/project/PyMySQL/).

```
import pymysql
import sys
import boto3
import os

ENDPOINT="mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
PORT="3306"
USER="jane_doe"
REGION="us-east-1"
DBNAME="mydb"
os.environ['LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN'] = '1'

#gets the credentials from .aws/credentials
session = boto3.Session(profile_name='default')
client = session.client('rds')

token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION)

try:
    conn =  pymysql.connect(auth_plugin_map={'mysql_clear_password':None},host=ENDPOINT, user=USER, password=token, port=PORT, database=DBNAME, ssl_ca='SSLCERTIFICATE', ssl_verify_identity=True, ssl_verify_cert=True)
    cur = conn.cursor()
    cur.execute("""SELECT now()""")
    query_results = cur.fetchall()
    print(query_results)
except Exception as e:
    print("Database connection failed due to {}".format(e))
```

Ce code se connecte à un cluster de base de données Aurora PostgreSQL.

Avant d'exécuter ce code, installez `psycopg2` en suivant les instructions de la documentation de [Psycopg](https://pypi.org/project/psycopg2/).

```
import psycopg2
import sys
import boto3
import os

ENDPOINT="postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
PORT="5432"
USER="jane_doe"
REGION="us-east-1"
DBNAME="mydb"

#gets the credentials from .aws/credentials
session = boto3.Session(profile_name='RDSCreds')
client = session.client('rds')

token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION)

try:
    conn = psycopg2.connect(host=ENDPOINT, port=PORT, database=DBNAME, user=USER, password=token, sslrootcert="SSLCERTIFICATE")
    cur = conn.cursor()
    cur.execute("""SELECT now()""")
    query_results = cur.fetchall()
    print(query_results)
except Exception as e:
    print("Database connection failed due to {}".format(e))
```

Si vous souhaitez vous connecter à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Résolution des problèmes liés à l’authentification de base de données IAM
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting"></a>

Vous trouverez ci-dessous des idées de dépannage pour certains problèmes courants liés à l’authentification de base de données IAM, ainsi que des informations sur les journaux CloudWatch pour l’authentification de base de données IAM.

## Exportation des journaux d’erreurs d’authentification de base de données IAM vers CloudWatch Logs
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.ErrorLogs"></a>

Les journaux des erreurs d’authentification de base de données IAM sont stockés sur l’hôte de la base de données, et vous pouvez les exporter vers votre compte CloudWatch Logs. Utilisez les journaux et les méthodes de correction de cette page pour résoudre les problèmes liés à l’authentification de base de données IAM.

Vous pouvez activer les exportations de journaux vers CloudWatch Logs à partir de la console AWS CLI et de l’API RDS. Pour des instructions sur l’utilisation de la console, consultez [Publication des journaux de base de données dans Amazon CloudWatch Logs](USER_LogAccess.Procedural.UploadtoCloudWatch.md).

Pour exporter vos journaux d’erreurs d’authentification de base de données IAM vers CloudWatch Logs lors de la création d’un cluster de bases de données à partir du AWS CLI, utilisez la commande suivante :

```
aws rds create-db-cluster --db-cluster-identifier mydbinstance \
--region us-east-1 \
--engine postgres \
--engine-version 16 \
--master-username master \
--master-user-password password \
--publicly-accessible \
--enable-iam-database-authentication \
--enable-cloudwatch-logs-exports=iam-db-auth-error
```

Pour exporter vos journaux d’erreurs d’authentification de base de données IAM vers CloudWatch Logs lors de la modification d’un cluster de bases de données à partir du AWS CLI, utilisez la commande suivante :

```
aws rds modify-db-cluster --db-cluster-identifier mydbcluster \
--region us-east-1 \
--cloudwatch-logs-export-configuration '{"EnableLogTypes":["iam-db-auth-error"]}'
```

Pour vérifier si votre cluster de bases de données exporte les journaux d’authentification de base de données IAM vers CloudWatch Logs, vérifiez si le paramètre `EnabledCloudwatchLogsExports` est défini sur `iam-db-auth-error` dans la sortie de la commande `describe-db-instances`.

```
aws rds describe-db-cluster --region us-east-1 --db-cluster-identifier mydbcluster
            ...
            
             "EnabledCloudwatchLogsExports": [
                "iam-db-auth-error"
            ],
            ...
```

## Métriques CloudWatch pour l’authentification de base de données IAM
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.CWMetrics"></a>

Amazon Aurora fournit des statistiques en temps quasi réel concernant l’authentification de base de données IAM sur votre compte Amazon CloudWatch. Le tableau suivant répertorie les métriques d’authentification de base de données IAM disponibles avec CloudWatch :


| Métrique | Description | 
| --- | --- | 
|  `IamDbAuthConnectionRequests`  |  Nombre total de demandes de connexion effectuées avec l’authentification de base de données IAM.  | 
|  `IamDbAuthConnectionSuccess`  |  Nombre total de demandes d’authentification de base de données IAM réussies.  | 
|  `IamDbAuthConnectionFailure`  |  Nombre total de demandes d’authentification de base de données IAM ayant échoué.  | 
|  `IamDbAuthConnectionFailureInvalidToken`  | Nombre total de demandes d’authentification de base de données IAM ayant échoué à cause d’un jeton non valide. | 
|  `IamDbAuthConnectionFailureInsufficientPermissions`  |  Nombre total de demandes d’authentification de base de données IAM ayant échoué en raison de politiques ou d’autorisations incorrectes.  | 
|  `IamDbAuthConnectionFailureThrottling`  |  Nombre total de demandes d’authentification de base de données IAM ayant échoué en raison de la limitation de l’authentification de base de données IAM.  | 
|  `IamDbAuthConnectionFailureServerError`  |  Nombre total de demandes d’authentification de base de données IAM ayant échoué en raison d’une erreur interne du serveur dans la fonctionnalité d’authentification de base de données IAM.  | 

## Problèmes courants et solutions correspondantes
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.IssuesSolutions"></a>

 Vous pouvez rencontrer les problèmes suivants lors de l’utilisation de l’authentification de base de données IAM. Suivez les étapes de correction indiquées dans le tableau pour résoudre les problèmes :


| Erreur | Métrique(s) | Cause | Solution | 
| --- | --- | --- | --- | 
|  `[ERROR] Failed to authenticate the connection request for user db_user because the provided token is malformed or otherwise invalid. (Status Code: 400, Error Code: InvalidToken)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInvalidToken`  |  Le jeton d’authentification de base de données IAM figurant dans la demande de connexion n’est pas un jeton SigV4a valide ou il n’est pas formaté correctement.  |  Vérifiez votre stratégie de génération de jetons dans votre application. Dans certains cas, assurez-vous de transmettre le jeton avec un formatage valide. Le fait de tronquer le jeton (ou un formatage de chaîne incorrect) le rend non valide.   | 
|  `[ERROR] Failed to authenticate the connection request for user db_user because the token age is longer than 15 minutes. (Status Code: 400, Error Code:ExpiredToken)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInvalidToken`  |  Le jeton d’authentification de base de données IAM a expiré. Les jetons ne sont valides que pendant 15 minutes.  |  Vérifiez votre logique de mise en cache et/ou de réutilisation des jetons dans votre application. Vous ne devez pas réutiliser des jetons datant de plus de 15 minutes.  | 
|  `[ERROR] Failed to authorize the connection request for user db_user because the IAM policy assumed by the caller 'arn:aws:sts::123456789012:assumed-role/ <RoleName>/ <RoleSession>' is not authorized to perform `rds-db:connect` on the DB instance. (Status Code: 403, Error Code:NotAuthorized)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInsufficientPermissions`  |  Cette erreur peut être due aux raisons suivantes : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.Troubleshooting.html)  |  Vérifiez que vous assumez le rôle et/ou la politique IAM dans votre application. Assurez-vous de suivre la même politique pour générer le jeton que pour vous connecter à la base de données.   | 
|  `[ERROR] Failed to authorize the connection request for user db_user due to IAM DB authentication throttling. (Status Code: 429, Error Code: ThrottlingException)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureThrottling`  | Vous envoyez trop de demandes de connexion à votre base de données en peu de temps. La limite de limitation de l’authentification IAM DB est de 200 connexions par seconde. |  Réduisez le taux d’établissement de nouvelles connexions grâce à l’authentification IAM. Envisagez d’implémenter le regroupement de connexions à l’aide du proxy RDS afin de réutiliser les connexions établies dans votre application.  | 
|  `[ERROR] Failed to authorize the connection request for user db_user due to an internal IAM DB authentication error. (Status Code: 500, Error Code: InternalError)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureThrottling` |  Une erreur interne s’est produite lors de l’autorisation de la connexion à la base de données avec l’authentification de base de données IAM.  |  Contactez https://aws.amazon.com/premiumsupport/ pour enquêter sur le problème.  | 

# Résolution des problèmes liés à Identity and Access Amazon Aurora
<a name="security_iam_troubleshoot"></a>

Utilisez les informations suivantes pour identifier et résoudre les problèmes courants que vous pouvez rencontrer lorsque vous travaillez avec Aurora et IAM.

**Topics**
+ [

## Je ne suis pas autorisé à effectuer une action dans Aurora
](#security_iam_troubleshoot-no-permissions)
+ [

## Je ne suis pas autorisé à effectuer iam : PassRole
](#security_iam_troubleshoot-passrole)
+ [

## Je souhaite autoriser des personnes extérieures à mon AWS compte à accéder à mes ressources Aurora
](#security_iam_troubleshoot-cross-account-access)

## Je ne suis pas autorisé à effectuer une action dans Aurora
<a name="security_iam_troubleshoot-no-permissions"></a>

S'il vous AWS Management Console indique que vous n'êtes pas autorisé à effectuer une action, vous devez contacter votre administrateur pour obtenir de l'aide. Votre administrateur est la personne qui vous a fourni vos informations de connexion.

L'exemple d'erreur suivant se produit lorsque l'`mateojackson`utilisateur essaie d'utiliser la console pour afficher les détails d'un *widget* mais ne dispose pas des `rds:GetWidget` autorisations nécessaires.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: rds:GetWidget on resource: my-example-widget
```

Dans ce cas, Mateo demande à son administrateur de mettre à jour ses politiques pour lui permettre d’accéder à la ressource `my-example-widget` à l’aide de l’action `rds:GetWidget`.

## Je ne suis pas autorisé à effectuer iam : PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Si vous recevez un message d'erreur selon lequel vous n'êtes pas autorisé à exécuter l'action `iam:PassRole`, vous devez contacter votre administrateur pour obtenir de l'aide. Votre administrateur est la personne qui vous a fourni vos informations de connexion. Demandez à cette personne de mettre à jour vos stratégies pour vous permettre de transmettre un rôle à Aurora.

Certains AWS services vous permettent de transmettre un rôle existant à ce service, au lieu de créer un nouveau rôle de service ou un rôle lié à un service. Pour ce faire, vous devez disposer des autorisations nécessaires pour transmettre le rôle au service.

L'exemple d'erreur suivant se produit lorsqu'un utilisateur nommé `marymajor` essaie d'utiliser la console pour exécuter une action dans Aurora. Toutefois, l'action nécessite que le service ait des autorisations accordées par une fonction du service. Mary ne dispose pas des autorisations nécessaires pour transférer le rôle au service.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

Dans ce cas, Mary demande à son administrateur de mettre à jour ses politiques pour lui permettre d'exécuter l'action `iam:PassRole`.

## Je souhaite autoriser des personnes extérieures à mon AWS compte à accéder à mes ressources Aurora
<a name="security_iam_troubleshoot-cross-account-access"></a>

Vous pouvez créer un rôle que les utilisateurs provenant d’autres comptes ou les personnes extérieures à votre organisation pourront utiliser pour accéder à vos ressources. Vous pouvez spécifier qui est autorisé à assumer le rôle. Pour les services qui prennent en charge les politiques basées sur les ressources ou les listes de contrôle d'accès (ACLs), vous pouvez utiliser ces politiques pour autoriser les utilisateurs à accéder à vos ressources.

Pour plus d’informations, consultez les éléments suivants :
+ Pour savoir si Aurora prend en charge ces fonctionnalités, consultez [Comment Amazon Aurora fonctionne avec IAM](security_iam_service-with-iam.md).
+ Pour savoir comment fournir un accès à vos ressources sur les AWS comptes que vous possédez, consultez la section [Fournir un accès à un utilisateur IAM sur un autre AWS compte que vous possédez](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) dans le Guide de l'*utilisateur IAM*.
+ Pour savoir comment fournir l'accès à vos ressources à des AWS comptes tiers, consultez la section [Fournir un accès aux AWS comptes détenus par des tiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) dans le *guide de l'utilisateur IAM*.
+ Pour savoir comment fournir un accès par le biais de la fédération d’identité, consultez [Fournir un accès à des utilisateurs authentifiés en externe (fédération d’identité)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) dans le *Guide de l’utilisateur IAM*.
+ Pour découvrir quelle est la différence entre l’utilisation des rôles et l’utilisation des politiques basées sur les ressources pour l’accès entre comptes, consultez [Différence entre les rôles IAM et les politiques basées sur les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_compare-resource-policies.html) dans le *Guide de l’utilisateur IAM*.