

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.

# Création d'utilisateurs et de rôles d'application dans Aurora PostgreSQL compatible
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible"></a>

*Abhishek Verma, Amazon Web Services*

## Résumé
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-summary"></a>

Lorsque vous migrez vers l'édition compatible avec Amazon Aurora PostgreSQL, les utilisateurs et les rôles de base de données qui existent sur la base de données source doivent être créés dans la base de données compatible avec Aurora PostgreSQL. Vous pouvez créer les utilisateurs et les rôles dans Aurora PostgreSQL compatible en utilisant deux approches différentes :
+ Utilisez des utilisateurs et des rôles similaires dans la base de données cible et dans la base de données source. Dans cette approche, les langages de définition des données (DDLs) sont extraits de la base de données source pour les utilisateurs et les rôles. Ils sont ensuite transformés et appliqués à la base de données cible compatible Aurora PostgreSQL. Par exemple, le billet de blog [Utiliser SQL pour mapper les utilisateurs, les rôles et les autorisations d'Oracle à PostgreSQL traite de](https://aws.amazon.com/blogs/database/use-sql-to-map-users-roles-and-grants-from-oracle-to-postgresql) l'utilisation de l'extraction à partir d'un moteur de base de données source Oracle.
+ Utilisez des utilisateurs et des rôles standardisés couramment utilisés lors du développement, de l'administration et pour effectuer d'autres opérations connexes dans la base de données. Cela inclut les opérations de lecture seule, de lecture/écriture, de développement, d'administration et de déploiement effectuées par les utilisateurs respectifs.

Ce modèle contient les autorisations requises pour la création d'utilisateurs et de rôles dans Aurora PostgreSQL compatible avec l'approche standardisée des utilisateurs et des rôles. Les étapes de création des utilisateurs et des rôles sont alignées sur la politique de sécurité qui consiste à accorder le moindre privilège aux utilisateurs de la base de données. Le tableau suivant répertorie les utilisateurs, leurs rôles correspondants et leurs informations sur la base de données.


| 
| 
| Utilisateurs | Roles | Objectif | 
| --- |--- |--- |
| `APP_read` | `APP_RO` | Utilisé pour l'accès en lecture seule au schéma `APP` | 
| `APP_WRITE` | `APP_RW` | Utilisé pour les opérations d'écriture et de lecture sur le schéma `APP` | 
| `APP_dev_user` | `APP_DEV` | Utilisé à des fins de développement sur le schéma`APP_DEV`, avec accès en lecture seule au schéma `APP` | 
| `Admin_User` | `rds_superuser` | Utilisé pour effectuer des opérations d'administration sur la base de données | 
| `APP` | `APP_DEP` | Utilisé pour créer les objets sous le `APP` schéma et pour le déploiement d'objets dans le `APP` schéma | 

## Conditions préalables et limitations
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-prereqs"></a>

**Conditions préalables**
+ Un compte Amazon Web Services (AWS) actif
+ Une base de données PostgreSQL, une base de données Amazon Aurora PostgreSQL Edition compatible ou une base de données Amazon Relational Database Service (Amazon RDS) pour PostgreSQL

**Versions du produit**
+ Toutes les versions de PostgreSQL

## Architecture
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-architecture"></a>

**Pile technologique source**
+ Toute base de données

**Pile technologique cible**
+ Compatible avec Amazon Aurora PostgreSQL

**Architecture cible**

Le schéma suivant montre les rôles des utilisateurs et l'architecture du schéma dans la base de données compatible Aurora PostgreSQL.

![Rôles utilisateur et architecture de schéma pour la base de données compatible Aurora PostgreSQL.](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/80105a81-e3d1-4258-b3c1-77f3a5e78592/images/b95cb9bc-8bf7-47d1-92e7-66cfb37d7ce7.png)


                                                                                                                                    

**Automatisation et mise à l'échelle**

Ce modèle contient les utilisateurs, les rôles et le script de création de schéma, que vous pouvez exécuter plusieurs fois sans aucun impact sur les utilisateurs existants de la base de données source ou cible.

## Outils
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-tools"></a>

**Services AWS**
+ [Amazon Aurora PostgreSQL Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) est un moteur de base de données relationnelle entièrement géré et compatible ACID qui vous aide à configurer, exploiter et dimensionner les déploiements PostgreSQL.

**Autres services**
+ [psql](https://www.postgresql.org/docs/current/app-psql.html) est un outil frontal basé sur un terminal qui est installé avec chaque installation de base de données PostgreSQL. Il possède une interface de ligne de commande pour exécuter des commandes SQL, PL-PGSQL et du système d'exploitation.
+ [pgAdmin](https://www.pgadmin.org/) est un outil de gestion open source pour PostgreSQL. Il fournit une interface graphique qui vous permet de créer, de gérer et d'utiliser des objets de base de données.

## Épopées
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-epics"></a>

### Création des utilisateurs et des rôles
<a name="create-the-users-and-roles"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez l'utilisateur de déploiement. | L'utilisateur de déploiement `APP` sera utilisé pour créer et modifier les objets de base de données lors des déploiements. Utilisez les scripts suivants pour créer le rôle d'utilisateur de déploiement `APP_DEP` dans le schéma`APP`. Validez les droits d'accès pour vous assurer que cet utilisateur a uniquement le privilège de créer des objets dans le schéma requis`APP`.1. Connectez-vous à l'utilisateur administrateur et créez le schéma.<pre>CREATE SCHEMA APP;</pre><br />2. Créez l’utilisateur.<pre>CREATE USER APP WITH PASSWORD  <password> ;</pre><br />3. Créez le rôle.<pre>CREATE ROLE APP_DEP ;<br />GRANT all on  schema APP to APP_DEP ;<br />GRANT USAGE ON SCHEMA APP to APP_DEP ;<br />GRANT connect on database <db_name>  to APP_DEP ;<br />GRANT APP_DEP to APP;</pre><br />4. Pour tester les privilèges, connectez-vous aux tables `APP` et créez-les.<pre>set search_path to APP;<br />SET<br />CREATE TABLE test(id integer ) ;<br />CREATE TABLE</pre><br />5. Vérifiez les privilèges.<pre>select schemaname  , tablename , tableowner    from pg_tables where tablename like 'test' ;<br />schemaname   | tablename |  tableowner <br />APP                  | test            | APP</pre> | DBA | 
| Créez l'utilisateur en lecture seule. | L'utilisateur en lecture seule `APP_read` sera utilisé pour effectuer l'opération en lecture seule dans le schéma. `APP` Utilisez les scripts suivants pour créer l'utilisateur en lecture seule. Validez les droits d'accès pour vous assurer que cet utilisateur a le privilège de lire uniquement les objets du schéma `APP` et d'accorder automatiquement un accès en lecture à tout nouvel objet créé dans le schéma`APP`.1. Créez l'utilisateur`APP_read`.<pre>create user APP_read ;<br />alter user APP_read with password 'your_password' ;</pre><br />2. Créez le rôle.<pre>CREATE ROLE APP_ro ;<br />GRANT SELECT ON ALL TABLES IN SCHEMA  APP  TO  APP_RO   ;<br />GRANT USAGE ON SCHEMA  APP   TO APP_RO<br />GRANT CONNECT ON DATABASE  testdb  TO APP_RO ;<br />GRANT APP_RO TO APP_read;</pre><br />3. Pour tester les privilèges, connectez-vous en utilisant l'`APP_read`utilisateur.<pre>set search_path to APP ;<br />create table test1( id integer) ;<br />ERROR:  permission denied for schema APP<br />LINE 1: create table test1( id integer) ;<br />insert into test values (34) ;<br />ERROR: permission denied for table test SQL state: 42501<br />select from test<br />no rows selected</pre> | DBA | 
| Créez l' read/write utilisateur. | L' read/write utilisateur `APP_WRITE` sera utilisé pour effectuer des opérations de lecture et d'écriture sur le schéma`APP`. Utilisez les scripts suivants pour créer l' read/write utilisateur et lui attribuer le `APP_RW` rôle. Validez les droits d'accès pour vous assurer que cet utilisateur dispose de privilèges de lecture et d'écriture uniquement sur les objets du schéma `APP` et pour accorder automatiquement un accès en lecture et en écriture à tout nouvel objet créé dans le schéma`APP`.1. Créez l’utilisateur.<pre>CREATE USER APP_WRITE ;<br />alter user APP_WRITE  with password 'your_password' ;</pre><br />2. Créez le rôle.<pre>CREATE ROLE APP_RW;<br />GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA APP   TO APP_RW ;<br />GRANT CONNECT ON DATABASE postgres to APP_RW ;<br />GRANT USAGE ON SCHEMA APP to APP_RW ;<br />ALTER DEFAULT PRIVILEGES IN SCHEMA APP<br />GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO APP_RW ;<br />GRANT APP_RW to APP_WRITE</pre><br />3. Pour tester les privilèges, connectez-vous en utilisant l'`APP_WRITE`utilisateur.<pre>SET SEARCH_PATH to APP;<br />CREATE TABLE test1( id integer) ;<br />ERROR:   permission denied for schema APP<br />LINE 1: create table test1( id integer) ;<br />SELECT * FROM test ;<br />id <br />----<br />12<br />INSERT INTO test values (31) ;<br />INSERT 0 1</pre> |  | 
| Créez l'utilisateur administrateur. | L'utilisateur admin `Admin_User` sera utilisé pour effectuer des opérations d'administration sur la base de données. Des exemples de ces opérations sont `CREATE ROLE` et`CREATE DATABASE`. `Admin_User`utilise le rôle intégré `rds_superuser` pour effectuer des opérations d'administration sur la base de données. Utilisez les scripts suivants pour créer et tester les privilèges de l'utilisateur administrateur `Admin_User` dans la base de données.1. Créez l'utilisateur et accordez le rôle.<pre>create user Admin_User WITH PASSWORD   ‘Your password’<br />ALTER user Admin_user CREATEDB;<br />ALTER user Admin_user CREATEROLE;</pre><br />2. Pour tester le privilège, connectez-vous depuis l'`Admin_User`utilisateur.<pre>SELECT * FROM APP.test ;<br />  id<br />  ----<br />   31<br />CREATE ROLE TEST ;<br />CREATE DATABASE test123 ;</pre> | DBA | 
| Créez l'utilisateur de développement. | L'utilisateur de développement `APP_dev_user` aura le droit de créer les objets dans son schéma local `APP_DEV` et d'accéder en lecture dans le schéma`APP`. Utilisez les scripts suivants pour créer et tester les privilèges de l'utilisateur `APP_dev_user` dans la base de données.1. Créez l’utilisateur.<pre>CREATE USER APP1_dev_user with password ‘your password’;</pre><br />2. Créez le `APP_DEV` schéma pour`App_dev_user`.<pre>CREATE SCHEMA APP1_DEV ;</pre><br />3. Créez le rôle `APP_DEV`<pre>CREATE ROLE APP1_DEV ;<br />GRANT   APP1_RO to APP1_DEV ;<br />GRANT SELECT ON ALL TABLES IN SCHEMA APP1_DEV to APP1_dev_user<br />GRANT USAGE, CREATE ON SCHEMA APP1_DEV to APP1_DEV_USER<br />GRANT APP1_DEV  to APP1_DEV_USER ;</pre><br />4. Pour tester les privilèges, connectez-vous depuis`APP_dev_user`.<pre>CREATE TABLE APP1_dev.test1( id integer ) ;<br />CREATE TABLE<br />INSERT into APP1_dev.test1 ( select * from APP1.test );<br />INSERT 0 1<br />CREATE TABLE APP1.test4 ( id int) ;<br />ERROR:   permission denied for schema APP1<br />LINE 1: create table APP1.test4 ( id int) ;</pre> | DBA | 

## Ressources connexes
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-resources"></a>

**Documentation de PostgreSQL**
+ [CRÉER UN RÔLE](https://www.postgresql.org/docs/9.1/sql-createrole.html)
+ [CRÉER UN UTILISATEUR](https://www.postgresql.org/docs/8.0/sql-createuser.html)
+ [Rôles prédéfinis](https://www.postgresql.org/docs/14/predefined-roles.html)

 

## Informations supplémentaires
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-additional"></a>

**Amélioration de PostgreSQL 14**

PostgreSQL 14 fournit un ensemble de rôles prédéfinis qui donnent accès à certaines fonctionnalités et informations privilégiées couramment nécessaires. Les administrateurs (y compris les rôles dotés de `CREATE ROLE` privilèges) peuvent accorder ces rôles ou d'autres rôles dans leur environnement aux utilisateurs, en leur donnant accès aux fonctionnalités et informations spécifiées.

Les administrateurs peuvent autoriser les utilisateurs à accéder à ces rôles à l'aide de la `GRANT` commande. Par exemple, pour attribuer le `pg_signal_backend` rôle à`Admin_User`, vous pouvez exécuter la commande suivante.

```
GRANT pg_signal_backend TO Admin_User;
```

Le `pg_signal_backend` rôle est destiné à permettre aux administrateurs d'activer des rôles fiables, non superutilisateurs, pour envoyer des signaux à d'autres backends. Pour plus d'informations, consultez la section Amélioration de [PostgreSQL 14](https://www.postgresql.org/docs/14/predefined-roles.html).

**Ajustement précis de l'accès**

Dans certains cas, il peut être nécessaire de fournir un accès plus granulaire aux utilisateurs (par exemple, un accès basé sur des tables ou un accès basé sur des colonnes). Dans de tels cas, des rôles supplémentaires peuvent être créés pour accorder ces privilèges aux utilisateurs. Pour plus d'informations, consultez la section [Subventions PostgreSQL](https://www.postgresql.org/docs/8.4/sql-grant.html).