

# Uso de roles de base de datos y autenticación de IAM
<a name="using-database-and-iam-roles"></a>

Aurora DSQL admite la autenticación mediante roles de IAM y usuarios de IAM. Puede usar cualquiera de los métodos para autenticarse y acceder a las bases de datos de Aurora DSQL.

## Roles de IAM
<a name="dsql-iam-roles"></a>

Un rol de IAM es una identidad dentro de la Cuenta de AWS que tiene permisos específicos pero no está asociada a una persona específica. El uso de roles de IAM proporciona credenciales de seguridad temporales. Puede asumir temporalmente un rol de IAM de varias maneras:
+ Mediante el cambio de roles en la Consola de administración de AWS
+ Mediante una llamada a una operación de API de AWS CLI o AWS
+ Mediante una URL personalizada

Tras asumir un rol, puede acceder a Aurora DSQL con las credenciales temporales del rol. Para obtener más información sobre los métodos para el uso de roles, consulte [Identidades de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) en la *Guía del usuario de IAM*.

## Usuarios de IAM
<a name="dsql-iam-users"></a>

Un usuario de IAM es una identidad dentro de la Cuenta de AWS que tiene permisos específicos y está asociada a una sola persona o aplicación. Los usuarios de IAM tienen credenciales de larga duración, como contraseñas y claves de acceso, que se pueden utilizar para acceder a Aurora DSQL. 

**nota**  
Para ejecutar comandos SQL con la autenticación de IAM, puede utilizar los ARN del rol de IAM o los ARN del usuario de IAM en los ejemplos siguientes.

## Autorización de roles de base de datos para conectarse al clúster
<a name="using-database-and-iam-roles-custom-database-roles"></a>

Cree un rol de IAM y conceda la autorización de conexión con la acción de política de IAM: `dsql:DbConnect`.

La política de IAM también debe conceder permiso para acceder a los recursos del clúster. Utilice un comodín (`*`) o siga las instrucciones en [Uso de claves de condición de IAM con Amazon Aurora DSQL](using-iam-condition-keys.md#using-iam-condition-keys-create-cluster).

## Autorización de roles de base de datos para utilizar SQL en la base de datos
<a name="using-database-and-iam-roles-custom-database-roles-sql"></a>

Debe utilizar un rol de IAM con autorización para conectarse al clúster.

1. Conéctese al clúster de Aurora DSQL con una utilidad SQL.

   Utilice el rol de base de datos `admin` con una identidad de IAM que esté autorizada para la acción de IAM `dsql:DbConnectAdmin` para conectarse al clúster. 

1. Cree un nuevo rol de base de datos y asegúrese de especificar la opción `WITH LOGIN`.

   ```
   CREATE ROLE example WITH LOGIN;
   ```

1. Asocie el rol de base de datos con el ARN del rol de IAM.

   ```
   AWS IAM GRANT example TO 'arn:aws:iam::{{012345678912}}:role/{{example}}'; 
   ```

1. Concesión de permisos de base de datos al rol de base de datos

   En los siguientes ejemplos se utiliza el comando `GRANT` para proporcionar autorización dentro de la base de datos.

   ```
   GRANT USAGE ON SCHEMA myschema TO example;
   GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA myschema TO example;
   ```

Para obtener más información, consulte [PostgreSQL `GRANT`](https://www.postgresql.org/docs/current/sql-grant.html) y [Privilegios de PostgreSQL](https://www.postgresql.org/docs/current/ddl-priv.html) en la documentación de PostgreSQL. 

## Visualización de las asignaciones de roles de IAM a bases de datos
<a name="using-database-and-iam-roles-view-mappings"></a>

Para ver las asignaciones entre los roles de IAM y los roles de base de datos, consulte la tabla del sistema `sys.iam_pg_role_mappings`.

```
SELECT * FROM sys.iam_pg_role_mappings;
```

Ejemplo de código de salida:

```
 iam_oid |                  arn                   | pg_role_oid | pg_role_name | grantor_pg_role_oid | grantor_pg_role_name
---------+----------------------------------------+-------------+--------------+---------------------+----------------------
   {{26398}} | arn:aws:iam::{{012345678912}}:role/{{example}} |       {{26396}} | {{example}}      |               {{15579}} | admin
(1 row)
```

En esta tabla, se muestran todas las asignaciones entre los roles de IAM (identificados por su ARN) y los roles de base de datos de PostgreSQL.

## Revocación de la autorización de base de datos de un rol de IAM
<a name="using-database-and-iam-roles-revoke"></a>

Para revocar la autorización de base de datos, utilice la operación `AWS IAM REVOKE`.

```
AWS IAM REVOKE example FROM 'arn:aws:iam::{{012345678912}}:role/{{example}}';
```

Para obtener más información sobre la revocación de la autorización, consulte [Revocación de autorización mediante IAM y PostgreSQL](authentication-authorization.md#authentication-authorization-revoke).