

# Referencia de enlaces para Extensiones de lenguaje de confianza para PostgreSQL
<a name="PostgreSQL_trusted_language_extension-hooks-reference"></a>

Extensiones de lenguaje de confianza para PostgreSQL admite los enlaces de PostgreSQL. Un *enlace* es un mecanismo interno de devolución de llamada disponible para los desarrolladores para ampliar la funcionalidad principal de PostgreSQL. Mediante el uso de enlaces, los desarrolladores pueden implementar sus propias funciones o procedimientos para utilizarlos durante diversas operaciones de bases de datos, modificando así el comportamiento de PostgreSQL de alguna manera. Por ejemplo, puede utilizar un enlace `passcheck` para personalizar la forma en que PostgreSQL gestiona las contraseñas proporcionadas al crear o cambiar las contraseñas de los usuarios (roles).

Consulte la siguiente documentación para obtener información sobre el enlace de passcheck disponible para sus extensiones TLE. Para obtener más información sobre los enlaces disponibles, incluido el enlace de autenticación del cliente, consulte [Trusted Language Extensions hooks](https://github.com/aws/pg_tle/blob/main/docs/04_hooks.md).

## Enlace de comprobación de contraseñas (passcheck)
<a name="passcheck_hook"></a>

El enlace `passcheck` se utiliza para personalizar el comportamiento de PostgreSQL durante el proceso de comprobación de contraseñas para los siguientes comandos SQL y el metacomando `psql`.
+ `CREATE ROLE username ...PASSWORD`: para obtener más información, consulte [CREATE ROLE](https://www.postgresql.org/docs/current/sql-createrole.html) en la documentación de PostgreSQL.
+ `ALTER ROLE username...PASSWORD`: para obtener más información, consulte [ALTER ROLE](https://www.postgresql.org/docs/current/sql-alterrole.html) en la documentación de PostgreSQL.
+ `\password username`: este metacomando `psql` interactivo cambia de forma segura la contraseña del usuario especificado mediante un hash de la contraseña antes de utilizar la sintaxis `ALTER ROLE ... PASSWORD` de forma transparente. El metacomando es un contenedor seguro para el comando `ALTER ROLE ... PASSWORD`, por lo que el enlace se aplica al comportamiento del metacomando `psql`.

Para ver un ejemplo, consulta [Lista de códigos del enlace password\$1check](PostgreSQL_trusted_language_extension.overview.tles-and-hooks.md#PostgreSQL_trusted_language_extension-example-hook_code_listing).

**Contents**
+ [Prototipo de función](#passcheck_hook-prototype)
+ [Argumentos](#passcheck_hook-arguments)
+ [Configuración](#passcheck_hook-configuration)
+ [Notas de uso](#passcheck_hook-usage)

### Prototipo de función
<a name="passcheck_hook-prototype"></a>

```
passcheck_hook(username text, password text, password_type pgtle.password_types, valid_until timestamptz, valid_null boolean)
```

### Argumentos
<a name="passcheck_hook-arguments"></a>

La función de enlace `passcheck` acepta los argumentos siguientes:
+ `username`: el nombre (como texto) del rol (nombre de usuario) que establece una contraseña.
+ `password`: la contraseña en texto sin formato o con hash. La contraseña introducida debe coincidir con el tipo especificado en `password_type`.
+ `password_type`: especifique el formato `pgtle.password_type` de la contraseña. Este formato puede ser uno de los siguientes:
  + `PASSWORD_TYPE_PLAINTEXT`: una contraseña sin formato.
  + `PASSWORD_TYPE_MD5`: una contraseña que se ha cifrado con hash mediante el algoritmo MD5 (resumen de mensaje 5).
  + `PASSWORD_TYPE_SCRAM_SHA_256`: una contraseña que se ha cifrado con hash mediante el algoritmo SCRAM-SHA-256.
+ `valid_until`: especifica el momento en que la contraseña deja de ser válida. Este argumento es opcional. Si utiliza este argumento, especifique la hora como valor `timestamptz`.
+ `valid_null`: si este valor booleano está establecido en `true`, la opción `valid_until` se establece en `NULL`.

### Configuración
<a name="passcheck_hook-configuration"></a>

La función `pgtle.enable_password_check` controla si el enlace de passcheck está activo. El enlace de passcheck tiene tres ajustes posibles.
+ `off`: desactiva el enlace de comprobación de contraseñas `passcheck`. Este es el valor predeterminado.
+ `on`: activa el enlace de comprobación de contraseñas `passcode` para cotejarlas con la tabla.
+ `require`: requiere que se defina un enlace de comprobación de contraseñas.

### Notas de uso
<a name="passcheck_hook-usage"></a>

Para activar o desactivar el enlace `passcheck`, debe modificar el grupo de parámetros de base de datos personalizado de su instancia de base de datos de RDS para PostgreSQL. 

Para Linux, macOS o Unix:

```
aws rds modify-db-parameter-group \
    --region aws-region \
    --db-parameter-group-name your-custom-parameter-group \
    --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"
```

Para Windows:

```
aws rds modify-db-parameter-group ^
    --region aws-region ^
    --db-parameter-group-name your-custom-parameter-group ^
    --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"
```