

# PostgreSQL용 신뢰할 수 있는 언어 확장에 대한 후크 참조
<a name="PostgreSQL_trusted_language_extension-hooks-reference"></a>

PostgreSQL용 신뢰할 수 있는 언어 확장은 PostgreSQL 후크를 지원합니다. *후크*는 PostgreSQL의 핵심 기능을 확장하기 위해 개발자가 사용할 수 있는 내부 콜백 메커니즘입니다. 개발자는 후크를 사용하여 다양한 데이터베이스 작업 중에 사용할 자체 함수 또는 프로시저를 구현하여 PostgreSQL의 동작을 일정 방식으로 수정할 수 있습니다. 예를 들어 `passcheck` 후크를 사용하면 사용자(역할)의 암호를 생성하거나 변경할 때 제공된 암호를 PostgreSQL이 처리하는 방법을 사용자 지정할 수 있습니다.

TLE 확장에 사용할 수 있는 암호 확인 후크에 대해 알아보려면 다음 설명서를 참조하세요. 클라이언트 인증 후크를 포함하여 사용 가능한 후크에 대한 자세한 내용은 [Trusted Language Extensions hooks](https://github.com/aws/pg_tle/blob/main/docs/04_hooks.md)를 참조하세요.

## 암호-확인 후크(passcheck)
<a name="passcheck_hook"></a>

`passcheck` 후크는 다음 SQL 명령 및 `psql` 메타 명령에 대한 암호 확인 프로세스 도중 PostgreSQL 동작을 사용자 지정하는 데 사용됩니다.
+ `CREATE ROLE username ...PASSWORD` - 자세한 내용은 PostgreSQL 설명서의 [CREATE ROLE](https://www.postgresql.org/docs/current/sql-createrole.html)을 참조하세요.
+ `ALTER ROLE username...PASSWORD` - 자세한 내용은 PostgreSQL 설명서의 [ALTER ROLE](https://www.postgresql.org/docs/current/sql-alterrole.html)을 참조하세요.
+ `\password username` - 이 대화형 `psql` 메타 명령은 `ALTER ROLE ... PASSWORD` 구문을 투명하게 사용하기 전에 암호를 해시하여 지정된 사용자의 암호를 안전하게 변경합니다. 메타 명령은 `ALTER ROLE ... PASSWORD` 명령의 보안 래퍼이므로 후크는 `psql` 메타 명령의 동작에 적용됩니다.

문제 해결 예는 [암호 확인 후크 코드 목록](PostgreSQL_trusted_language_extension.overview.tles-and-hooks.md#PostgreSQL_trusted_language_extension-example-hook_code_listing)을(를) 참조하세요.

**Contents**
+ [함수 프로토타입](#passcheck_hook-prototype)
+ [인수](#passcheck_hook-arguments)
+ [구성](#passcheck_hook-configuration)
+ [사용 노트](#passcheck_hook-usage)

### 함수 프로토타입
<a name="passcheck_hook-prototype"></a>

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

### 인수
<a name="passcheck_hook-arguments"></a>

`passcheck` 후크 함수는 다음 인수를 사용합니다.
+ `username` - 암호를 설정하는 역할(사용자 이름)의 이름(텍스트)입니다.
+ `password` - 일반 텍스트 또는 해시된 암호입니다. 입력한 암호는 `password_type`에서 지정한 유형과 일치해야 합니다.
+ `password_type` - 암호의 `pgtle.password_type` 형식을 지정합니다. 이 형식은 다음 옵션 중 하나일 수 있습니다.
  + `PASSWORD_TYPE_PLAINTEXT` - 일반 텍스트 암호입니다.
  + `PASSWORD_TYPE_MD5` - MD5(message digest 5) 알고리즘을 사용하여 해시된 암호입니다.
  + `PASSWORD_TYPE_SCRAM_SHA_256` - SCRAM-SHA-256 알고리즘을 사용하여 해시된 암호입니다.
+ `valid_until` - 암호가 무효가 되는 시간을 지정합니다. 이 인수는 선택 사항입니다. 이 인수를 사용하는 경우 시간을 `timestamptz` 값으로 지정하세요.
+ `valid_null` - 이 부울이 `true`로 설정된 경우 `valid_until` 옵션은 `NULL`로 설정됩니다.

### 구성
<a name="passcheck_hook-configuration"></a>

함수 `pgtle.enable_password_check`는 암호 확인 후크가 활성 상태인지 여부를 제어합니다. 암호 확인 후크에서 세 가지 설정이 가능합니다.
+ `off` - `passcheck` 암호 확인 후크를 해제합니다. 이것이 기본값입니다.
+ `on` - 테이블과 비교해 암호를 검사할 수 있도록 `passcode` 암호 확인 후크를 켭니다.
+ `require` - 암호 확인 후크를 정의해야 합니다.

### 사용 노트
<a name="passcheck_hook-usage"></a>

`passcheck` 후크를 켜거나 해제하려면 RDS for PostgreSQL DB 인스턴스에 대한 사용자 지정 DB 파라미터 그룹을 수정해야 합니다.

대상 LinuxmacOS, 또는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"
```

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"
```