SCRAM for PostgreSQL 암호 암호화 사용 - Amazon Aurora

SCRAM for PostgreSQL 암호 암호화 사용

Salted Challenge Response Authentication Mechanism(SCRAM)은 암호를 암호화하는 데 사용하는 PostgreSQL의 기본 메시지 다이제스트(MD5) 알고리즘을 대체합니다. SCRAM 인증 메커니즘은 MD5보다 더 안전한 것으로 간주됩니다. 이러한 2가지 암호 보호 방법에 대한 자세한 내용은 PostgreSQL 설명서의 암호 인증을 참조하세요.

MD5가 아닌 SCRAM을 Aurora PostgreSQL DB 클러스터의 암호 암호화 체계로 사용하는 것이 좋습니다. Aurora PostgreSQL 14 릴리스부터 SCRAM은 버전 10, 11, 12, 13, 14를 비롯하여 사용 가능한 모든 Aurora PostgreSQL 버전에서 지원됩니다. 이는 암호 인증 및 암호화에 scram-sha-256 알고리즘을 사용하는 암호화 챌린지-응답 메커니즘입니다.

SCRAM을 지원하려면 클라이언트 애플리케이션의 라이브러리를 업데이트해야 할 수 있습니다. 예를 들어, 42.2.0 이전의 JDBC 버전은 SCRAM을 지원하지 않습니다. 자세한 내용은 PostgreSQL JDBC 드라이버 설명서의 PostgreSQL JDBC 드라이버를 참조하세요. 기타 PostgreSQL 드라이버 및 SCRAM 지원 목록은 PostgreSQL 설명서의 드라이버 목록을 참조하세요.

참고

Aurora PostgreSQL 버전 14 이상에서는 기본적으로 새 DB 클러스터에 대한 암호 암호화를 위해 scram-sha-256을 지원합니다. 즉, 기본 DB 클러스터 파라미터 그룹(default.aurora-postgresql14)의 password_encryption 값은 scram-sha-256으로 설정됩니다.

SCRAM이 필요하도록 Aurora PostgreSQL DB 클러스터 설정

Aurora PostgreSQL 14.3 이상 버전의 경우 Aurora PostgreSQL DB 클러스터가 scram-sha-256 알고리즘을 사용하는 암호만 수락하도록 요구할 수 있습니다.

중요

PostgreSQL 데이터베이스를 사용하는 기존 RDS 프록시의 경우, SCRAM만 사용하도록 데이터베이스 인증을 수정하면 최대 60초 동안 프록시를 사용할 수 없게 됩니다. 문제를 방지하려면 다음 중 하나를 수행합니다.

  • 데이터베이스에서 SCRAMMD5 인증이 모두 허용되는지 확인합니다.

  • SCRAM 인증만 사용하려면 새 프록시를 생성하고, 애플리케이션 트래픽을 새 프록시로 마이그레이션한 다음 이전에 데이터베이스와 연결된 프록시를 삭제합니다.

시스템을 변경하기 전에 다음과 같이 전체 프로세스를 이해해야 합니다.

  • 모든 데이터베이스 사용자에 대한 전체 역할 및 암호 암호화에 대한 정보를 가져옵니다.

  • 암호 암호화를 제어하는 파라미터에 대해 Aurora PostgreSQL DB 클러스터 의 파라미터 설정을 다시 확인합니다.

  • Aurora PostgreSQL DB 클러스터 에서 기본 파라미터 그룹을 사용한다면 필요한 경우 파라미터를 수정할 수 있도록 사용자 지정 DB 클러스터 파라미터 그룹 을 생성하고, 이를 Aurora PostgreSQL DB 클러스터 에 적용해야 합니다. Aurora PostgreSQL DB 클러스터 에서 사용자 지정 파라미터 그룹을 사용하는 경우 필요에 따라 과정 후반부에서 필요한 파라미터를 수정할 수 있습니다.

  • password_encryption 파라미터를 scram-sha-256으로 변경합니다.

  • 모든 데이터베이스 사용자에게 암호를 업데이트해야 함을 알립니다. postgres 계정에도 동일한 작업을 수행합니다. 새 암호는 scram-sha-256 알고리즘을 통해 암호화되어 저장됩니다.

  • 모든 암호가 암호화 유형으로 암호화되었는지 확인합니다.

  • 모든 암호가 scram-sha-256을 사용하는 경우 rds.accepted_password_auth_method 파라미터를 md5+scram에서 scram-sha-256으로 변경할 수 있습니다.

주의

rds.accepted_password_auth_method를 scram-sha-256으로만 변경하면 md5로 암호화된 암호가 있는 사용자(역할)는 연결할 수 없습니다.

Aurora PostgreSQL DB 클러스터에서 SCRAM을 사용하도록 준비

Aurora PostgreSQL DB 클러스터 를 변경하기에 모든 기존 데이터베이스 사용자 계정을 확인해야 합니다. 또한 암호에 사용되는 암호화 유형도 확인하세요. rds_tools 확장을 사용하여 이러한 작업을 수행할 수 있습니다. 이 확장은 Aurora PostgreSQL 13.1 릴리스 이상에서 지원됩니다.

데이터베이스 사용자(역할) 및 암호 암호화 방법 목록을 가져오려면
  1. 다음과 같이 psql을 사용하여 Aurora PostgreSQL DB 클러스터의 프라이머리 인스턴스 에 연결합니다.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. rds_tools 확장을 설치합니다.

    postgres=> CREATE EXTENSION rds_tools; CREATE EXTENSION
  3. 역할 및 암호화 목록을 가져옵니다.

    postgres=> SELECT * FROM rds_tools.role_password_encryption_type();

    출력은 다음과 비슷합니다.

    rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | md5 user_465 | md5 postgres | md5 (8 rows)

사용자 지정 DB 클러스터 파라미터 그룹 생성

참고

Aurora PostgreSQL DB 클러스터 에서 이미 사용자 지정 파라미터 그룹을 사용하는 경우 새로 만들 필요가 없습니다.

Aurora 파라미터 그룹에 대한 개요는 Amazon Aurora에서 DB 클러스터 파라미터 그룹 생성 섹션을 참조하세요.

암호에 사용되는 암호 암호화 유형은 하나의 파라미터 password_encryption으로 설정됩니다. Aurora PostgreSQL DB 클러스터 에서 허용하는 암호화는 다른 파라미터인 rds.accepted_password_auth_method로 설정됩니다. 이러한 값 중 하나를 기본값에서 변경하려면 사용자 지정 DB 클러스터 파라미터 그룹 을 생성하여 클러스터 에 적용해야 합니다.

AWS Management Console 또는 RDS API를 사용하여 사용자 지정 DB 클러스터 파라미터 그룹 을 생성할 수도 있습니다. 자세한 내용은 Amazon Aurora에서 DB 클러스터 파라미터 그룹 생성 단원을 참조하세요.

DB 파라미터 그룹을 DB 인스턴스에 연결합니다.

사용자 지정 DB 클러스터 파라미터 그룹을 생성하려면
  1. create-db-cluster-parameter-group CLI 명령을 사용하여 클러스터에 대한 사용자 지정 파라미터 그룹을 생성합니다. 이 예에서는 aurora-postgresql13을 사용자 지정 파라미터 그룹의 소스로 사용할 수 있습니다.

    대상 LinuxmacOS, 또는Unix:

    aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --db-parameter-group-family aurora-postgresql13 --description 'Custom DB cluster parameter group for SCRAM'

    Windows의 경우:

    aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --db-parameter-group-family aurora-postgresql13 --description "Custom DB cluster parameter group for SCRAM"

    다음으로 사용자 지정 파라미터 그룹을 클러스터와 연결합니다.

  2. modify-db-cluster CLI 명령을 사용하여 다음과 같이 사용자 지정 파라미터 그룹을 Aurora PostgreSQL DB 클러스터에 적용합니다.

    대상 LinuxmacOS, 또는Unix:

    aws rds modify-db-cluster --db-cluster-identifier 'your-instance-name' \ --db-cluster-parameter-group-name "docs-lab-scram-passwords

    Windows의 경우:

    aws rds modify-db-cluster --db-cluster-identifier "your-instance-name" ^ --db-cluster-parameter-group-name "docs-lab-scram-passwords

    사용자 지정 DB 클러스터 파라미터 그룹이 포함된 Aurora PostgreSQL DB 클러스터 를 다시 동기화하려면 클러스터의 프라이머리 및 기타 모든 인스턴스를 재부팅합니다.

SCRAM을 사용하도록 암호 암호화 구성

Aurora PostgreSQL DB 클러스터 에서 사용하는 암호 암호화 메커니즘은 DB 클러스터 파라미터 그룹password_encryption 파라미터로 설정되어 있습니다. 허용되는 값은 설정하지 않거나 md5 또는 scram-sha-256입니다. 기본값은 다음과 같이 Aurora PostgreSQL 버전에 따라 달라집니다.

  • Aurora PostgreSQL 14 – 기본값은 scram-sha-256입니다.

  • Aurora PostgreSQL 13 – 기본값은 md5입니다.

사용자 지정 DB 클러스터 파라미터 그룹Aurora PostgreSQL DB 클러스터 에 연결되어 있으면 암호 암호화 파라미터 값을 변경할 수 있습니다.

RDS 콘솔에 Aurora PostgreSQL의 password_encryption 파라미터에 대한 기본값이 표시됩니다.
암호의 암호화 설정을 scram-sha-256으로 변경하려면
  • 다음과 같이 암호의 암호화 값을 scram-sha-256으로 변경합니다. 파라미터가 동적이기 때문에 변경 사항을 즉시 적용할 수 있으므로 변경 사항을 적용하려고 재시작하지 않아도 됩니다.

    대상 LinuxmacOS, 또는Unix:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name \ 'docs-lab-scram-passwords' --parameters 'ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate'

    Windows의 경우:

    aws rds modify-db-parameter-group --db-parameter-group-name ^ "docs-lab-scram-passwords" --parameters "ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate"

사용자 역할의 암호를 SCRAM으로 마이그레이션

다음에 설명된 대로 사용자 역할에 대한 암호를 SCRAM으로 마이그레이션할 수 있습니다.

MD5에서 SCRAM으로 데이터베이스 사용자(역할) 암호를 마이그레이션하려면
  1. 다음과 같이 관리자 사용자로 로그인(기본 사용자 이름 postgres)합니다.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. 다음 명령을 사용하여 RDS for PostgreSQL DB 인스턴스의 password_encryption 파라미터 설정을 확인합니다.

    postgres=> SHOW password_encryption; password_encryption --------------------- md5 (1 row)
  3. 이 파라미터의 값을 scram-sha-256으로 변경합니다. 이 파라미터는 동적 파라미터이므로 변경 후에 인스턴스를 재부팅할 필요가 없습니다. 다음과 같이 scram-sha-256으로 설정되어 있는지 값을 다시 확인합니다.

    postgres=> SHOW password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
  4. 모든 데이터베이스 사용자에게 암호 변경을 알립니다. 계정 postgres(rds_superuser 권한을 지닌 데이터베이스 사용자)의 자체 암호도 변경해야 합니다.

    labdb=> ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me'; ALTER ROLE
  5. Aurora PostgreSQL DB 클러스터에 모든 데이터베이스에 대해 프로세스를 반복합니다.

SCRAM이 필요하도록 파라미터 변경

과정의 마지막 단계입니다. 다음 절차에서 변경한 후에도 암호에 md5 암호화를 계속 사용하는 모든 사용자 계정(역할)은 Aurora PostgreSQL DB 클러스터에 로그인할 수 없습니다.

rds.accepted_password_auth_method는 로그인하는 동안 Aurora PostgreSQL DB 클러스터가 사용자 암호에 대해 허용하는 암호화 방법을 지정합니다. 기본값은 md5+scram이므로, 두 방법 중 하나를 사용할 수 있습니다. 다음 이미지에서는 이 파라미터에 대한 기본 설정을 찾을 수 있습니다.

RDS 콘솔에서 rds.accepted_password_auth_method 파라미터에 대한 기본 값과 허용된 값을 표시합니다.

이 파라미터에 허용되는 값은 md5+scram 또는 scram입니다. 이 파라미터 값을 scram으로 변경하여 필수로 설정합니다.

암호에 SCRAM 인증을 요구하도록 파라미터 값을 변경하려면
  1. Aurora PostgreSQL DB 클러스터 의 모든 데이터베이스에 대한 전체 데이터베이스 사용자 암호가 암호 암호화에 scram-sha-256을 사용하는지 확인합니다. 이렇게 하려면 다음과 같이 역할(사용자) 및 암호화 유형에 대해 rds_tools를 쿼리합니다.

    postgres=> SELECT * FROM rds_tools.role_password_encryption_type(); rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | scram-sha-256 user_465 | scram-sha-256 postgres | scram-sha-256 ( rows)
  2. Aurora PostgreSQL DB 클러스터의 모든 DB 인스턴스에서 쿼리를 반복합니다.

    모든 암호가 scram-sha-256을 사용하는 경우 그대로 진행하면 됩니다.

  3. 다음과 같이 허용된 암호 인증의 값을 scram-sha-256으로 변경합니다.

    대상 LinuxmacOS, 또는Unix:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'

    Windows의 경우:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"