

# Kerberos 인증을 사용하여 PostgreSQL 연결
<a name="postgresql-kerberos-connecting"></a>

pgAdmin 인터페이스 또는 psql과 같은 명령줄 인터페이스를 사용하여 Kerberos 인증으로 PostgreSQL에 연결할 수 있습니다. 연결에 대한 자세한 내용은 [PostgreSQL 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결](USER_ConnectToPostgreSQLInstance.md) 섹션을 참조하세요. 연결에 필요한 엔드포인트, 포트 번호 및 기타 세부 정보를 얻는 방법에 대한 자세한 내용은 [PostgreSQL DB 인스턴스에 연결](CHAP_GettingStarted.CreatingConnecting.PostgreSQL.md#CHAP_GettingStarted.Connecting.PostgreSQL) 단원을 참조하십시오.

**참고**  
PostgreSQL의 GSSAPI 인증 및 암호화는 Kerberos 라이브러리 `libkrb5.so`에 의해 구현됩니다. `postgres_fdw` 및 `dblink`와 같은 기능은 Kerberos 인증 또는 암호화를 사용한 아웃바운드 연결에도 동일한 라이브러리를 사용합니다.

## pgAdmin
<a name="collapsible-section-pgAdmin"></a>

pgAdmin을 사용하여 Kerberos 인증으로 PostgreSQL에 연결하려면 다음 단계를 수행하십시오.

1. 클라이언트 컴퓨터에서 pgAdmin 애플리케이션을 실행합니다.

1. [**Dashboard**] 탭에서 [**Add New Server**]를 선택합니다.

1. **생성 - 서버** 대화 상자에서 pgAdmin의 서버를 식별하기 위해 **일반** 탭에 이름을 입력합니다.

1. **연결** 탭에서 RDS for PostgreSQL 데이터베이스에 있는 다음 정보를 입력합니다.
   + **호스트**의 경우 에 대한 엔드포인트를 입력합니다. RDS for PostgreSQL DB 인스턴스  엔드포인트는 다음과 유사하게 표시됩니다.

     ```
     {{RDS-DB-instance}}.{{111122223333}}.{{aws-region}}.rds.amazonaws.com
     ```

     Windows 클라이언트에서 온-프레미스 Microsoft Active Directory에 연결하려면 호스트 엔드포인트의 `rds.amazonaws.com` 대신 AWS Managed Active Directory의 도메인 이름을 사용합니다. 예를 들어 AWS Managed Active Directory의 도메인 이름이 `corp.example.com`일 경우 그런 다음**호스트**에서는 엔드포인트가 다음과 같이 지정됩니다.

     ```
     {{RDS-DB-instance}}.{{111122223333}}.{{aws-region}}.corp.example.com
     ```
   + **포트**에 할당된 포트를 입력합니다.
   + **Maintenance database(유지 관리 데이터베이스)**에 클라이언트가 연결될 초기 데이터베이스의 이름을 입력합니다.
   + **Username(사용자 이름)**에 [7단계: Kerberos 보안 주체를 위한 PostgreSQL 사용자 생성](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins)의 Kerberos 인증을 위해 입력했던 사용자 이름을 입력합니다.

1. **저장**을 선택합니다.

## psql
<a name="collapsible-section-psql"></a>

psql을 사용하여 Kerberos 인증으로 PostgreSQL에 연결하려면 다음 단계를 수행하십시오.

1. 명령 프롬프트에서 다음 명령을 실행합니다.

   ```
   kinit {{username}}                
   ```

   {{`username`}}을 사용자 이름으로 대체합니다. 프롬프트에서 Microsoft Active Directory에 저장된 사용자 암호를 입력합니다.

1. PostgreSQL DB 인스턴스가 공개적으로 액세스 가능한 VPC를 사용하는 경우 DB 인스턴스 엔드포인트의 IP 주소를 EC2 클라이언트의 `/etc/hosts` 파일에 넣습니다. 예를 들어 다음 명령은 IP 주소를 얻은 다음 `/etc/hosts` 파일에 넣습니다.

   ```
   % dig +short {{PostgreSQL-endpoint}}.{{AWS-Region}}.rds.amazonaws.com  
   ;; Truncated, retrying in TCP mode.
   ec2-34-210-197-118.{{AWS-Region}}.compute.amazonaws.com.
   34.210.197.118 
   
   % echo " 34.210.197.118  {{PostgreSQL-endpoint}}.{{AWS-Region}}.rds.amazonaws.com" >> /etc/hosts
   ```

   Windows 클라이언트에서 온프레미스 Microsoft Active Directory를 사용하는 경우 특수 엔드포인트를 사용하여 연결해야 합니다. 호스트 엔드포인트에서 Amazon 도메인 `rds.amazonaws.com`을 사용하는 대신 AWS Managed Active Directory의 도메인 이름을 사용합니다.

   예를 들어 AWS Managed Active Directory의 도메인 이름이 `corp.example.com`일 경우 엔드포인트에 `{{PostgreSQL-endpoint}}.{{AWS-Region}}.corp.example.com` 형식을 사용하고 `/etc/hosts` 파일에 넣습니다.

   ```
   % echo " 34.210.197.118  {{PostgreSQL-endpoint}}.{{AWS-Region}}.corp.example.com" >> /etc/hosts
   ```

1. 다음 psql 명령을 사용하여 Active Directory와 통합된 PostgreSQL DB 인스턴스에 로그인합니다. 

   ```
   psql -U {{username}}@{{CORP.EXAMPLE.COM}} -p 5432 -h {{PostgreSQL-endpoint}}.{{AWS-Region}}.rds.amazonaws.com postgres
   ```

   온프레미스 Active Directory를 사용하여 Windows 클러스터에서 PostgreSQL DB 클러스터에 로그인하려면 이전 단계의 도메인 이름(`corp.example.com`)과 함께 다음 psql 명령을 사용합니다.

   ```
   psql -U {{username}}@{{CORP.EXAMPLE.COM}} -p 5432 -h {{PostgreSQL-endpoint}}.{{AWS-Region}}.corp.example.com postgres
   ```