명령줄에서 IAM 인증을 사용해 DB 인스턴스에 연결: AWS CLI 및 psql 클라이언트

명령줄에서 IAM 인증을 사용해 DB 인스턴스에 연결: AWS CLI 및 psql 클라이언트

AWS CLI와 psql 명령줄 도구를 사용해 명령줄에서 Amazon RDS for PostgreSQL DB 인스턴스에 연결할 수 있어요. IAM 인증 토큰을 생성하고 psql로 SSL 연결하는 과정을 함께 볼게요.

출처: 문서

본문

AWS CLI와 psql 명령줄 도구를 사용해 명령줄에서 Amazon RDS for PostgreSQL DB 인스턴스에 연결할 수 있어요.

사전 요구 사항

IAM 인증을 사용해 DB 인스턴스에 연결하기 위한 사전 요구 사항은 다음과 같아요.

  • IAM 데이터베이스 인증 활성화 및 비활성화
  • IAM 데이터베이스 접근을 위한 IAM 정책 생성 및 사용
  • IAM 인증을 사용한 데이터베이스 계정 생성

참고

IAM 인증으로 pgAdmin을 사용해 데이터베이스에 연결하는 방법은 "Using IAM authentication to connect with pgAdmin Amazon Aurora PostgreSQL or Amazon RDS for PostgreSQL" 블로그 게시물을 참고하세요.

주제 (Topics)

  • IAM 인증 토큰 생성
  • Amazon RDS PostgreSQL 인스턴스에 연결

IAM 인증 토큰 생성

인증 토큰은 수백 자로 구성돼서 명령줄에서 다루기 어려울 수 있어요. 이 문제를 해결하는 한 가지 방법은 토큰을 환경 변수에 저장한 다음 연결할 때 그 변수를 사용하는 거예요. 다음 예시는 AWS CLI에서 generate-db-auth-token 명령으로 서명된 인증 토큰을 가져와 PGPASSWORD 환경 변수에 저장하는 방법을 보여줘요.

export RDSHOST="rdspostgres.123456789012.us-west-2.rds.amazonaws.com"
export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"

예시에서 generate-db-auth-token 명령의 매개변수는 다음과 같아요.

  • --hostname – 접근하려는 DB 인스턴스의 호스트 이름이에요.
  • --port – DB 인스턴스에 연결하는 데 사용되는 포트 번호예요.
  • --region – DB 인스턴스가 실행 중인 AWS 리전이에요.
  • --username – 접근하려는 데이터베이스 계정이에요.

생성된 토큰의 처음 몇 자자는 다음과 같아요.

rdspostgres.123456789012.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...

참고

인증 토큰을 생성하기 위해 DB 인스턴스 엔드포인트 대신 사용자 지정 Route 53 DNS 레코드를 사용할 수 없어요.

Amazon RDS PostgreSQL 인스턴스에 연결

psql로 연결하는 일반적인 형식은 다음과 같아요.

psql "host=hostName port=portNumber sslmode=verify-full sslrootcert=full_path_to_ssl_certificate dbname=DBName user=userName password=authToken"

매개변수는 다음과 같아요.

  • host – 접근하려는 DB 인스턴스의 호스트 이름이에요.
  • port – DB 인스턴스에 연결하는 데 사용되는 포트 번호예요.
  • sslmode – 사용할 SSL 모드예요. sslmode=verify-full을 사용하면 SSL 연결이 SSL 인증서의 엔드포인트와 DB 인스턴스 엔드포인트를 대조해 확인해요.
  • sslrootcert – 공개 키가 포함된 SSL 인증서 파일의 전체 경로예요. 자세한 내용은 "PostgreSQL DB 인스턴스에서 SSL 사용" 문서를 참고하세요. SSL 인증서를 다운로드하려면 "SSL/TLS를 사용해 DB 인스턴스 또는 클러스터로의 연결 암호화" 문서를 참고하세요.
  • dbname – 접근하려는 데이터베이스예요.
  • user – 접근하려는 데이터베이스 계정이에요.
  • password – 서명된 IAM 인증 토큰이에요.

참고

인증 토큰을 생성하기 위해 DB 인스턴스 엔드포인트 대신 사용자 지정 Route 53 DNS 레코드를 사용할 수 없어요.

다음 예시는 psql로 연결하는 방법을 보여줘요. 예시에서 psql은 호스트에 대해 환경 변수 RDSHOST를, 생성된 토큰에 대해 환경 변수 PGPASSWORD를 사용해요. 또한 /sample_dir/은 공개 키가 포함된 SSL 인증서 파일의 전체 경로예요.

export RDSHOST="rdspostgres.123456789012.us-west-2.rds.amazonaws.com"
export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"

psql "host=$RDSHOST port=5432 sslmode=verify-full sslrootcert=/sample_dir/global-bundle.pem dbname=DBName user=jane_doe password=$PGPASSWORD"

프록시를 통해 DB 인스턴스에 연결하려면 "IAM 인증을 사용한 데이터베이스 연결" 문서를 참고하세요.

더 알아보기 (Learn more)