

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Aurora PostgreSQL 호환에서 애플리케이션 사용자 및 역할을 생성
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible"></a>

*Abhishek Verma, Amazon Web Services*

## 요약
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-summary"></a>

Amazon Aurora PostgreSQL 호환 에디션으로 마이그레이션하는 경우, 소스 데이터베이스에 있는 데이터베이스 사용자 및 역할을 Aurora PostgreSQL 호환 데이터베이스에서 생성해야 합니다. 다음과 같이 두 가지 접근 방식을 사용하여 Aurora PostgreSQL 호환에서 사용자 및 역할을 생성할 수 있습니다.
+ 대상에서도 소스 데이터베이스와 비슷한 사용자 및 역할을 사용하세요. 이 접근 방식에서는 소스 데이터베이스에서 사용자 및 역할에 대한 데이터 정의 언어(DDL)를 추출합니다. 그런 다음 변환하여 대상 Aurora PostgreSQL 호환 데이터베이스에 적용됩니다. 예를 들어, [SQL을 사용하여 Oracle에서 PostgreSQL로 사용자, 역할 및 권한 부여를 매핑](https://aws.amazon.com/blogs/database/use-sql-to-map-users-roles-and-grants-from-oracle-to-postgresql) 블로그 게시물은 Oracle 소스 데이터베이스 엔진에서 추출하는 방법을 다룹니다.
+ 개발, 관리 및 데이터베이스에서 기타 관련 작업을 수행할 때 일반적으로 사용되는 표준화된 사용자 및 역할을 사용하세요. 여기에는 각 사용자가 수행하는 읽기 전용, 읽기/쓰기, 개발, 관리 및 배포 작업이 포함됩니다.

이 패턴에는 표준화된 사용자 및 역할 접근 방식에 필요한 Aurora PostgreSQL 호환 사용자 및 역할 생성에 필요한 권한 부여가 포함되어 있습니다. 사용자 및 역할 생성 단계는 데이터베이스 사용자에게 최소 권한을 부여하는 보안 정책에 따라 조정됩니다. 다음 표에는 데이터베이스의 사용자, 해당 역할 및 세부 정보가 나열되어 있습니다.


| 
| 
| Users | 역할 | 용도 | 
| --- |--- |--- |
| `APP_read` | `APP_RO` | 스키마 `APP`에 대한 읽기 전용 액세스에 사용 | 
| `APP_WRITE` | `APP_RW` | 스키마 `APP`의 쓰기 및 읽기 작업에 사용 | 
| `APP_dev_user` | `APP_DEV` | 스키마 `APP`에 대한 읽기 전용 액세스 권한이 있으며, 스키마 `APP_DEV`의 개발 목적으로 사용 | 
| `Admin_User` | `rds_superuser` | 데이터베이스에서 관리자 작업을 수행하는 데 사용 | 
| `APP` | `APP_DEP` | `APP` 스키마에서 개체를 만들고 `APP` 스키마에 개체를 배포하는 데 사용 | 

## 사전 조건 및 제한 사항
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-prereqs"></a>

**사전 조건 **
+ 활성 Amazon Web Services(AWS) 계정
+ PostgreSQL 데이터베이스, Amazon Aurora PostgreSQL 호환 에디션 데이터베이스 또는 PostgreSQL 데이터베이스용 Amazon Relational Database Service(RDS)

**제품 버전**
+ 모든 PostgreSQL 버전

## 아키텍처
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-architecture"></a>

**소스 기술 스택  **
+ 모든 데이터베이스

**대상 기술 스택  **
+ Amazon Aurora PostgreSQL 호환

**대상 아키텍처**

다음 다이어그램은 Aurora PostgreSQL 호환 데이터베이스의 사용자 역할과 스키마 아키텍처를 보여줍니다.

![\[Aurora PostgreSQL 호환 데이터베이스의 사용자 역할 및 스키마 아키텍처.\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/80105a81-e3d1-4258-b3c1-77f3a5e78592/images/b95cb9bc-8bf7-47d1-92e7-66cfb37d7ce7.png)


                                                                                                                                    

**자동화 및 규모 조정**

이 패턴에는 소스 또는 대상 데이터베이스의 기존 사용자에게 영향을 주지 않고 여러 번 실행할 수 있는 사용자, 역할 및 스키마 생성 스크립트가 포함됩니다.

## 도구
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-tools"></a>

**서비스**
+ [Amazon Aurora PostgreSQL 호환 버전](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)은 PostgreSQL 배포를 설정, 운영 및 확장할 수 있고 ACID를 준수하는 완전 관리형 관계형 데이터베이스 엔진입니다.

**기타 서비스**
+ [psql](https://www.postgresql.org/docs/current/app-psql.html)은 모든 PostgreSQL 데이터베이스 설치 시 함께 설치되는 터미널 기반 프런트 엔드 도구입니다. SQL, PL-PGSQL 및 운영 체제 명령을 실행하기 위한 명령줄 인터페이스를 갖추고 있습니다.
+ [pgAdmin](https://www.pgadmin.org/)은 PostgreSQL을 위한 오픈 소스 관리 도구입니다. 데이터베이스 객체를 생성, 유지 관리 및 사용하는 데 도움이 되는 그래픽 인터페이스를 제공합니다.

## 에픽
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-epics"></a>

### 사용자 및 역할 생성
<a name="create-the-users-and-roles"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 배포 사용자를 생성합니다. | 배포 사용자 `APP`은 배포 중에 데이터베이스 개체를 만들고 수정하는 데 사용됩니다. 스키마 `APP`에 배포 사용자 역할 `APP_DEP`을 생성하기 위해 다음 스크립트를 사용할 수 있습니다. 액세스 권한을 검증하여 이 사용자에게 필수 스키마 `APP`에서 객체를 생성할 수 있는 권한만 있는지 확인하세요.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 읽기 전용 사용자를 생성합니다. | 읽기 전용 사용자 `APP_read`는 스키마 `APP`에서 읽기 전용 작업을 수행하는 데 사용됩니다. 다음 스크립트를 사용하여 읽기 전용 사용자를 생성합니다. 이 사용자에게 스키마 `APP`의 개체를 읽을 수 있는 권한만 있는지 확인하고 스키마 `APP`에서 만든 새 개체에 대해 읽기 권한을 자동으로 부여할 수 있도록 액세스 권한을 검증하세요.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 읽기/쓰기 사용자를 생성합니다. | 읽기/쓰기 사용자 `APP_WRITE`는 스키마 `APP`에서 읽기 및 쓰기 작업을 수행하는 데 사용됩니다. 다음 스크립트를 사용하여 읽기/쓰기 사용자를 생성하고 `APP_RW` 역할을 부여합니다. 이 사용자에게 스키마 `APP`의 객체에 대한 읽기 및 쓰기 권한만 있는지 확인하고, 스키마 `APP`에서 만든 새 객체에 대해 읽기 및 쓰기 권한을 자동으로 부여할 수 있도록 액세스 권한을 검증하세요.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) |  | 
| 관리자 사용자를 생성합니다. | 관리자 사용자 `Admin_User`는 데이터베이스에서 관리자 작업을 수행하는 데 사용됩니다. 이러한 작업의 예로는 `CREATE ROLE` 및 `CREATE DATABASE`이 있습니다. `Admin_User`는 내장된 역할 `rds_superuser`를 사용하여 데이터베이스에서 관리자 작업을 수행합니다. 다음 스크립트를 사용하여 데이터베이스에서 관리자 사용자 `Admin_User`의 권한을 생성하고 테스트할 수 있습니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 개발 사용자를 생성합니다. | 개발 사용자 `APP_dev_user`는 로컬 스키마 `APP_DEV`에 객체를 생성하고 스키마 `APP`에서 읽기 권한을 가질 수 있습니다. 다음 스크립트를 사용하여 데이터베이스에서 사용자 `APP_dev_user`의 권한을 생성하고 테스트할 수 있습니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 

## 관련 리소스
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-resources"></a>

**PostgreSQL 설명서**
+ [역할 생성](https://www.postgresql.org/docs/9.1/sql-createrole.html)
+ [사용자 생성](https://www.postgresql.org/docs/8.0/sql-createuser.html)
+ [미리 정의된 역할](https://www.postgresql.org/docs/14/predefined-roles.html)

 

## 추가 정보
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-additional"></a>

**PostgreSQL 14 개선 사항**

PostgreSQL 14는 일반적으로 필요하고 권한이 있는 특정 기능 및 정보에 대한 액세스를 제공하는 사전 정의된 역할 세트를 제공합니다. 관리자(`CREATE ROLE` 권한이 있는 역할 포함)는 해당 환경에서 이러한 역할 또는 기타 역할을 사용자에게 부여하여 지정된 기능과 정보에 대한 액세스 권한을 부여할 수 있습니다.

관리자는 `GRANT` 명령을 사용하여 사용자에게 이러한 역할에 대한 액세스 권한을 부여할 수 있습니다. 예를 들어 다음 명령을 실행하여 `Admin_User`에게 `pg_signal_backend` 역할을 부여할 수 있습니다.

```
GRANT pg_signal_backend TO Admin_User;
```

`pg_signal_backend` 역할은 관리자가 신뢰할 수 있는, 수퍼유저가 아닌 역할을 활성화하여 다른 백엔드에 신호를 보낼 수 있도록 하기 위한 것입니다. 자세한 내용은 [PostgreSQL 14 개선 사항](https://www.postgresql.org/docs/14/predefined-roles.html)을 참조하세요.

**액세스 미세 조정**

경우에 따라 사용자에게 더 세분화된 액세스를 제공해야 할 수 있습니다(예: 테이블 기반 액세스 또는 열 기반 액세스). 이러한 경우 추가 역할을 생성하여 사용자에게 해당 권한을 부여할 수 있습니다. 자세한 내용은 [PostgreSQL 권한 부여](https://www.postgresql.org/docs/8.4/sql-grant.html)를 참조하세요.