

# 데이터베이스 역할 및 IAM 인증 사용
<a name="using-database-and-iam-roles"></a>

Aurora DSQL은 IAM 역할과 IAM 사용자를 사용한 인증을 둘 다 지원합니다. 두 방법 중 하나를 사용하여 Aurora DSQL 데이터베이스를 인증하고 액세스할 수 있습니다.

## IAM 역할
<a name="dsql-iam-roles"></a>

IAM 역할은 특정 권한이 있지만 특정 사용자와 연결되지 않은 AWS 계정 내의 ID입니다. IAM 역할을 사용하면 임시 보안 자격 증명이 제공됩니다. 다음과 같은 여러 가지 방법으로 IAM 역할을 일시적으로 수임할 수 있습니다.
+ AWS Management Console에서 역할 전환
+ AWS CLI 또는 AWS API 작업 직접 호출
+ 사용자 지정 URL 사용

역할을 수임한 후 역할의 임시 자격 증명을 사용하여 Aurora DSQL에 액세스할 수 있습니다. 역할 사용 방법에 대한 자세한 정보는 *IAM 사용 설명서*의 [IAM 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)을 참조하세요.

## IAM 사용자
<a name="dsql-iam-users"></a>

IAM 사용자는 특정 권한을 가졌으며 한 명의 개인 또는 하나의 애플리케이션과 연결된 AWS 계정 내 ID입니다. IAM 사용자에게는 Aurora DSQL에 액세스하는 데 사용할 수 있는 암호 및 액세스 키와 같은 장기 자격 증명이 있습니다.

**참고**  
IAM 인증으로 SQL 명령을 실행하려면 아래 예시에서 IAM 역할 ARN 또는 IAM 사용자 ARN을 사용할 수 있습니다.

## 클러스터에 연결할 데이터베이스 역할 권한 부여
<a name="using-database-and-iam-roles-custom-database-roles"></a>

IAM 역할을 생성하고 IAM 정책 작업 `dsql:DbConnect`를 사용하여 연결 권한을 부여합니다.

IAM 정책은 클러스터 리소스에 액세스할 수 있는 권한도 부여해야 합니다. 와일드카드(`*`)를 사용하거나 [Amazon Aurora DSQL에서 IAM 조건 키 사용](using-iam-condition-keys.md#using-iam-condition-keys-create-cluster)의 지침을 따릅니다.

## 데이터베이스 역할이 데이터베이스에서 SQL을 사용하도록 권한 부여
<a name="using-database-and-iam-roles-custom-database-roles-sql"></a>

클러스터에 연결할 권한이 있는 IAM 역할을 사용해야 합니다.

1. SQL 유틸리티를 사용하여 Aurora DSQL 클러스터에 연결합니다.

   IAM 작업 `dsql:DbConnectAdmin`이 클러스터에 연결할 수 있도록 권한이 부여된 IAM ID와 함께 `admin` 데이터베이스 역할을 사용합니다.

1. `WITH LOGIN` 옵션을 지정하여 새 데이터베이스 역할을 생성합니다.

   ```
   CREATE ROLE example WITH LOGIN;
   ```

1. 데이터베이스 역할을 IAM 역할 ARN과 연결합니다.

   ```
   AWS IAM GRANT example TO 'arn:aws:iam::012345678912:role/example'; 
   ```

1. 데이터베이스 역할에 데이터베이스 수준 권한 부여

   다음 예시에서는 `GRANT` 명령을 사용하여 데이터베이스 내에서 권한 부여를 제공합니다.

   ```
   GRANT USAGE ON SCHEMA myschema TO example;
   GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA myschema TO example;
   ```

자세한 내용은 PostgreSQL 설명서에서 [PostgreSQL `GRANT`](https://www.postgresql.org/docs/current/sql-grant.html) 및 [PostgreSQL Privileges](https://www.postgresql.org/docs/current/ddl-priv.html)를 참조하세요.

## IAM 역할과 데이터베이스 역할의 매핑 보기
<a name="using-database-and-iam-roles-view-mappings"></a>

IAM 역할과 데이터베이스 역할 간의 매핑을 보려면 `sys.iam_pg_role_mappings` 시스템 테이블을 쿼리합니다.

```
SELECT * FROM sys.iam_pg_role_mappings;
```

출력 예시:

```
 iam_oid |                  arn                   | pg_role_oid | pg_role_name | grantor_pg_role_oid | grantor_pg_role_name
---------+----------------------------------------+-------------+--------------+---------------------+----------------------
   26398 | arn:aws:iam::012345678912:role/example |       26396 | example      |               15579 | admin
(1 row)
```

이 표에는 IAM 역할(ARN으로 식별됨)과 PostgreSQL 데이터베이스 역할 간의 모든 매핑이 나와 있습니다.

## IAM 역할에서 데이터베이스 권한 부여 취소
<a name="using-database-and-iam-roles-revoke"></a>

데이터베이스 권한 부여를 취소하려면 `AWS IAM REVOKE` 작업을 사용합니다.

```
AWS IAM REVOKE example FROM 'arn:aws:iam::012345678912:role/example';
```

권한 부여 취소에 대한 자세한 내용은 [IAM 및 PostgreSQL을 사용하여 권한 부여 취소](authentication-authorization.md#authentication-authorization-revoke) 섹션을 참조하세요.