PostgreSQL 데이터베이스에 대한 사용자 액세스 제어 - Amazon Relational Database Service

PostgreSQL 데이터베이스에 대한 사용자 액세스 제어

PostgreSQL의 새 데이터베이스는 항상 모든 데이터베이스 사용자와 역할이 객체를 만들 수 있도록 허용하는 데이터베이스 public 스키마의 기본 권한 집합으로 생성됩니다. 이러한 권한을 통해 데이터베이스 사용자는 데이터베이스에 연결하고, 가령 연결된 동안 임시 테이블을 만들 수 있습니다.

RDS for PostgreSQL DB 인스턴스 에 생성한 데이터베이스 인스턴스에 액세스할 수 있는 사용자 권한을 보다 효과적으로 제어하려면 이러한 기본 public 권한을 회수하는 것이 좋습니다. 이렇게 하고 나서 다음 절차에 표시된 것처럼 데이터베이스 사용자에게 보다 세분화된 구체적인 권한을 부여하면 됩니다.

새 데이터베이스 인스턴스에 대한 역할 및 권한을 설정하는 방법

새로 생성한 RDS for PostgreSQL DB 인스턴스에 데이터베이스를 설정하여 여러 연구자가 사용할 수 있도록 하고, 이들 모두 데이터베이스에 대한 읽기-쓰기 액세스 권한이 필요하다고 가정합니다.

  1. 다음과 같이 psql 또는 pgAdmin을 사용하여 RDS for PostgreSQL DB 인스턴스에 연결합니다.

    psql --host=your-db-instance.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password

    메시지가 표시되면 암호를 입력합니다. psql 클라이언트는 기본 관리 연결 데이터베이스인 postgres=>를 연결하고 프롬프트로 표시합니다.

  2. 데이터베이스 사용자가 public 스키마에서 객체를 생성하지 못하도록 하려면 다음을 수행합니다.

    postgres=> REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE
  3. 다음으로 새 데이터베이스 인스턴스를 생성합니다.

    postgres=> CREATE DATABASE lab_db; CREATE DATABASE
  4. 새 데이터베이스의 PUBLIC 스키마에서 모든 권한을 회수합니다.

    postgres=> REVOKE ALL ON DATABASE lab_db FROM public; REVOKE
  5. 데이터베이스 사용자를 위한 역할을 생성합니다.

    postgres=> CREATE ROLE lab_tech; CREATE ROLE
  6. 이 역할이 있는 데이터베이스 사용자에게 데이터베이스 연결 기능을 제공합니다.

    postgres=> GRANT CONNECT ON DATABASE lab_db TO lab_tech; GRANT
  7. lab_tech 역할이 있는 모든 사용자에게 이 데이터베이스에 대한 모든 권한을 부여합니다.

    postgres=> GRANT ALL PRIVILEGES ON DATABASE lab_db TO lab_tech; GRANT
  8. 다음과 같이 데이터베이스 사용자를 생성합니다.

    postgres=> CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me'; CREATE ROLE postgres=> CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me'; CREATE ROLE
  9. 다음과 같이 두 사용자에게 lab_tech 역할과 관련된 권한을 부여합니다.

    postgres=> GRANT lab_tech TO lab_user1; GRANT ROLE postgres=> GRANT lab_tech TO lab_user2; GRANT ROLE

이 시점에서 lab_user1lab_user2lab_db 데이터베이스에 연결할 수 있습니다. 이 예제에서는 여러 데이터베이스 인스턴스와 다양한 스키마 생성, 제한된 권한 부여를 포함할 수 있는 엔터프라이즈 사용에 대한 모범 사례를 따르지 않습니다. 전체 정보 및 추가 시나리오를 알아보려면 PostgreSQL 사용자 및 역할 관리를 참조하세요.

PostgreSQL 데이터베이스의 권한에 대한 자세한 내용은 PostgreSQL 설명서에서 GRANT 명령을 참조하세요.