Amazon Aurora
Aurora 사용 설명서

Amazon Aurora PostgreSQL를 사용한 보안

Amazon Aurora PostgreSQL 보안은 다음과 같이 세 가지 수준에서 관리됩니다.

  • Aurora DB 클러스터 및 DB 인스턴스에서 Amazon RDS 관리 작업을 수행할 수 있는 사용자를 제어하려면 AWS Identity and Access Management(IAM)을 사용합니다. IAM 자격 증명을 사용하여 AWS에 연결할 때는 Amazon RDS 관리 작업에 필요한 권한을 부여할 수 있는 IAM 정책이 IAM 계정에 반드시 필요합니다. 자세한 내용은 Amazon Aurora의 Identity and Access Management(IAM) 단원을 참조하십시오.

    IAM 계정을 사용해 Amazon RDS 콘솔에 액세스하려면 먼저 IAM 계정으로 AWS Management 콘솔에 로그인한 다음 Amazon RDS에서 https://console.aws.amazon.com/rds 콘솔로 이동합니다.

  • Aurora DB 클러스터는 Amazon Virtual Private Cloud(VPC)에서 생성해야 합니다. Aurora DB 클러스터에서 DB 인스턴스의 엔드포인트 및 포트에 연결할 수 있는 디바이스 또는 Amazon EC2 인스턴스를 제어하려면 VPC 보안 그룹을 사용합니다. 이 엔드포인트와 포트는 Secure Sockets Layer(SSL) 방식으로 연결할 수 있습니다. 그 밖에도 기업의 방화벽 규칙을 통해 기업에서 이용하는 디바이스의 DB 인스턴스 연결 여부를 제어하는 것도 가능합니다. VPC에 대한 자세한 내용은 Amazon Virtual Private Cloud VPC 및 Amazon Aurora 단원을 참조하십시오.

    Aurora PostgreSQL은 기본 VPC일 때만 db.r4 및 db.t3 인스턴스 클래스를 지원합니다. 기본 VPC 테넌시일 때는 VPC가 공유 하드웨어에서 실행됩니다. 하지만 전용 VPC 테넌시일 때는 VPC가 전용 하드웨어 인스턴스에서 실행됩니다. 인스턴스 클래스에 대한 자세한 내용은 DB 인스턴스 클래스 선택 단원을 참조하십시오. 기본 및 전용 VPC 테넌시에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서에서 전용 인스턴스 단원을 참조하십시오.

  • Amazon Aurora DB 클러스터 로그인 및 사용 권한을 인증하려면 독립형 PostgreSQL 인스턴스와 동일한 접근 방식을 사용하십시오.

    CREATE ROLE, ALTER ROLE, GRANT, REVOKE 등의 명령은 온프레미스 데이터베이스에서 작동하는 것과 마찬가지로 작동하며, 데이터베이스 스키마 테이블을 직접 수정할 때도 동일합니다. 자세한 내용은 PostgreSQL 설명서에서 Client Authentication을 참조하십시오.

    참고

    SCRAM(Salted Challenge Response Authentication Mechanism)은 Aurora PostgreSQL에서 지원되지 않습니다.

Amazon Aurora PostgreSQL DB 인스턴스를 생성할 때 마스터 사용자는 다음과 같은 기본 권한을 갖습니다.

  • LOGIN

  • NOSUPERUSER

  • INHERIT

  • CREATEDB

  • CREATEROLE

  • NOREPLICATION

  • VALID UNTIL 'infinity'

DB 클러스터를 생성할 때는 각 DB 클러스터의 관리 서비스를 위해 rdsadmin 사용자가 만들어집니다. rdsadmin 계정에 대한 암호를 삭제하거나 이름 바꾸기를 하거나 변경하려고 시도하면 또는 권한을 변경하려고 시도하면 오류가 발생합니다.

암호 관리 제한

데이터베이스 사용자 암호를 관리할 수 있는 사람을 특정 역할로 제한할 수 있습니다. 이렇게 하면 클라이언트 측의 암호 관리를 더 잘 제어할 수 있습니다.

정적 파라미터 rds.restrict_password_commands로 제한된 암호 관리를 활성화하고 rds_password라는 역할을 사용합니다. rds.restrict_password_commands 파라미터를 1로 설정하면, rds_password 역할의 멤버인 사용자만 특정 SQL 명령을 실행할 수 있습니다. 제한된 SQL 명령은 데이터베이스 사용자 암호와 암호 만료 시간을 수정하는 명령입니다.

제한된 암호 관리를 사용하려면 DB 클러스터는 PostgreSQL 10.6 이상용 Amazon Aurora를 실행해야 합니다. rds.restrict_password_commands 파라미터는 정적이므로 이 파라미터를 변경하려면 데이터베이스를 다시 시작해야 합니다.

데이터베이스에 제한된 암호 관리가 활성화되어 있을 때 제한된 SQL 명령을 실행하려고 하면 ERROR: must be a member of rds_password to alter passwords 오류가 표시됩니다.

다음은 제한된 암호 관리가 활성화되어 있을 때 제한되는 몇 가지 SQL 명령 예입니다.

postgres=> CREATE ROLE myrole WITH PASSWORD 'mypassword'; postgres=> CREATE ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2020-01-01'; postgres=> ALTER ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2020-01-01'; postgres=> ALTER ROLE myrole WITH PASSWORD 'mypassword'; postgres=> ALTER ROLE myrole VALID UNTIL '2020-01-01'; postgres=> ALTER ROLE myrole RENAME TO myrole2;

RENAME TO가 포함된 일부 ALTER ROLE 명령도 제한될 수 있습니다. 이러한 명령이 제한될 수 있는 이유는 MD5 암호가 있는 PostgreSQL 역할 이름을 바꾸면 암호가 지워지기 때문입니다.

rds_superuser 역할에는 기본적으로 rds_password 역할의 멤버십이 있으므로 변경할 수 없습니다. GRANT SQL 명령을 사용하여 다른 역할에 rds_password 역할의 멤버십을 제공할 수 있습니다. 암호 관리에만 사용하는 몇 가지 역할에만 rds_password 멤버십을 제공하는 것이 좋습니다. 이러한 역할에는 다른 역할을 수정할 CREATEROLE 속성이 필요합니다.

만료 및 클라이언트 측에 필요한 복잡성 등의 암호 요구 사항을 확인해야 합니다. 자체 클라이언트 측 유틸리티를 사용하여 암호 관련 변경을 제한하는 것이 좋습니다. 이 유틸리티에는 rds_password의 멤버이며 CREATEROLE 역할 속성이 있는 역할이 있어야 합니다.

이 페이지에서: