

# 규정 준수 프로그램을 위한 RDS Custom for Oracle 자격 증명
<a name="custom-security.cred-rotation"></a>

일부 규정 준수 프로그램에서는 데이터베이스 사용자 자격 증명을 주기적으로(예: 90일마다) 변경해야 합니다. RDS Custom for Oracle은 미리 정의된 일부 데이터베이스 사용자의 자격 증명을 자동으로 교체합니다.

**Topics**
+ [미리 정의된 사용자의 자격 증명 자동 교체](#custom-security.cred-rotation.auto)
+ [사용자 자격 증명 교체에 대한 지침](#custom-security.cred-rotation.guidelines)
+ [사용자 자격 증명을 수동으로 교체](#custom-security.cred-rotation.manual)

## 미리 정의된 사용자의 자격 증명 자동 교체
<a name="custom-security.cred-rotation.auto"></a>

RDS Custom for Oracle DB 인스턴스가 Amazon RDS에서 호스팅되는 경우, 다음과 같은 미리 정의된 Oracle 사용자의 자격 증명이 30일마다 자동으로 교체됩니다. 이전 사용자의 자격 증명은 AWS Secrets Manager에 있습니다.


| 데이터베이스 사용자 | 생성한 사람 | 지원되는 엔진 버전 | 참고 | 
| --- | --- | --- | --- | 
| `SYS` | Oracle | custom-oracle-ee<br />custom-oracle-ee-cdb<br />custom-oracle-se2<br />custom-oracle-se2-cdb |  | 
| `SYSTEM` | Oracle | custom-oracle-ee<br />custom-oracle-ee-cdb<br />custom-oracle-se2<br />custom-oracle-se2-cdb |  | 
| `RDSADMIN` | RDS | custom-oracle-ee<br />custom-oracle-se2 |  | 
| `C##RDSADMIN` | RDS | custom-oracle-ee-cdb<br />custom-oracle-se2-cdb | C\#\# 접두사가 있는 사용자 이름은 CDB에만 존재합니다. CDB에 대한 자세한 내용은 [Amazon RDS Custom for Oracle 아키텍처 개요](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.overview)를 참조하세요. | 
| `RDS_DATAGUARD` | RDS | custom-oracle-ee | 이 사용자는 읽기 전용 복제본, 읽기 전용 복제본의 소스 데이터베이스, Oracle Data Guard를 사용하여 RDS Custom에 물리적으로 마이그레이션된 데이터베이스에만 존재합니다. | 
| `C##RDS_DATAGUARD` | RDS | custom-oracle-ee-cdb | 이 사용자는 읽기 전용 복제본, 읽기 전용 복제본의 소스 데이터베이스, Oracle Data Guard를 사용하여 RDS Custom에 물리적으로 마이그레이션된 데이터베이스에만 존재합니다. C\#\# 접두사가 있는 사용자 이름은 CDB에만 존재합니다. CDB에 대한 자세한 내용은 [Amazon RDS Custom for Oracle 아키텍처 개요](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.overview)를 참조하세요. | 

수동 방식을 통해 대기 데이터베이스로 구성된 RDS Custom for Oracle DB 인스턴스는 자동 자격 증명 교체의 예외입니다. RDS는 `create-db-instance-read-replica` CLI 명령 또는`CreateDBInstanceReadReplica` API를 사용하여 생성한 읽기 전용 복제본의 자격 증명만 교체합니다.

## 사용자 자격 증명 교체에 대한 지침
<a name="custom-security.cred-rotation.guidelines"></a>

규정 준수 프로그램에 따라 자격 증명을 교체하려면 다음 지침을 참고하세요.
+ DB 인스턴스에서 자격 증명을 자동으로 교체할 경우, [미리 정의된 Oracle 사용자](#auto-rotation)에 나열된 사용자의 암호, 암호 파일 또는 암호를 수동으로 변경하거나 삭제하지 마세요. 그렇지 않으면 RDS Custom이 DB 인스턴스를 지원 경계 밖에 배치하여 자동 교체가 일시 중단될 수 있습니다.
+ RDS 마스터 사용자는 미리 정의되어 있지 않으므로 암호를 수동으로 변경하거나, Secrets Manager에서 자동 교체를 설정해야 합니다. 자세한 내용을 알아보려면 [AWS Secrets Manager 보안 암호 교체](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)를 참조하세요.

## 사용자 자격 증명을 수동으로 교체
<a name="custom-security.cred-rotation.manual"></a>

다음과 같은 데이터베이스 범주의 경우 RDS는 [미리 정의된 Oracle 사용자](#auto-rotation)에 나열된 사용자의 자격 증명을 자동으로 교체하지 않습니다.
+ 대기 데이터베이스로 작동하도록 수동으로 구성한 데이터베이스.
+ 온프레미스 데이터베이스.
+ 지원 경계 밖에 있거나 RDS Custom 자동화를 실행할 수 없는 상태의 DB 인스턴스. 이 경우 RDS Custom은 키 교체도 수행하지 않습니다.

데이터베이스가 위의 범주 중 하나에 속할 경우 사용자 자격 증명을 수동으로 교체해야 합니다.

**DB 인스턴스의 사용자 자격 증명을 수동으로 교체하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. **데이터베이스**에서 RDS가 현재 DB 인스턴스 백업 또는 고가용성 구성 같은 작업을 수행하고 있지 않은지 확인합니다.

1. 데이터베이스 세부 정보 페이지에서 **구성**을 선택하고 DB 인스턴스의 리소스 ID를 기록해 둡니다. AWS CLI 명령인 `describe-db-instances`를 사용할 수 있습니다.

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 Secrets Manager 콘솔을 엽니다.

1. 검색 상자에 데이터베이스의 리소스 ID를 입력하고 다음 이름 지정 규칙 중 하나를 사용하여 보안 암호를 검색합니다.

   ```
   do-not-delete-rds-custom-{{resource_id}}-{{uuid}}
   rds-custom!oracle-do-not-delete-{{resource_id}}-{{uuid}}
   ```

   이 암호는 `RDSADMIN`, `SYS`, `SYSTEM`의 암호를 저장합니다. 아래의 샘플 키는 리소스 ID가 `db-ABCDEFG12HIJKLNMNOPQRS3TUVWX`, UUID가 `123456`인 DB 인스턴스에 사용되는 키입니다.

   ```
   do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
   rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
   ```
**중요**  
DB 인스턴스가 읽기 전용 복제본이고 `custom-oracle-ee-cdb` 엔진을 사용할 경우 접미사 `{{db-resource_id}}-{{uuid}}`이 붙은 두 개의 암호가 존재합니다. 하나는 마스터 사용자용이고, 다른 하나는 `RDSADMIN`, `SYS`, `SYSTEM`용입니다. 올바른 암호를 찾으려면 호스트에서 다음 명령을 실행합니다.  

   ```
   cat /opt/aws/rdscustomagent/config/database_metadata.json | python3 -c "import sys,json; print(json.load(sys.stdin)['dbMonitoringUserPassword'])"
   ```
`dbMonitoringUserPassword` 속성은 `RDSADMIN`, `SYS`, `SYSTEM`의 암호를 나타냅니다.

1. DB 인스턴스가 Oracle Data Guard 구성에 있는 경우 다음 이름 지정 규칙 중 하나를 사용하여 보안 암호를 검색합니다.

   ```
   do-not-delete-rds-custom-{{resource_id}}-{{uuid}}-dg
   rds-custom!oracle-do-not-delete-{{resource_id}}-{{uuid}}-dg
   ```

   이 암호는 `RDS_DATAGUARD`의 암호를 저장합니다. 아래의 샘플 키는 DB 리소스 ID가 `db-ABCDEFG12HIJKLNMNOPQRS3TUVWX`, UUID가 **789012**인 DB 인스턴스에 사용되는 키입니다.

   ```
   do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
   rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
   ```

1. [미리 정의된 Oracle 사용자](#auto-rotation)에 나열된 모든 데이터베이스 사용자의 경우 [AWS Secrets Manager 암호 수정](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)의 지침에 따라 암호를 업데이트하세요.

1. 데이터베이스가 독립 실행형 데이터베이스이거나 Oracle Data Guard 구성의 소스 데이터베이스인 경우:

   1. Oracle SQL 클라이언트를 시작하고 `SYS`로 로그인합니다.

   1. [미리 정의된 Oracle](#auto-rotation) 사용자에 나열된 각 데이터베이스 사용자에 대해 다음 형식으로 된 SQL 문을 실행합니다.

      ```
      ALTER USER {{user-name}} IDENTIFIED BY {{pwd-from-secrets-manager}} ACCOUNT UNLOCK;
      ```

      예를 들어 Secrets Manager에 저장된 `RDSADMIN`의 새 암호가 `pwd-123`인 경우 다음 문을 실행합니다.

      ```
      ALTER USER RDSADMIN IDENTIFIED BY pwd-123 ACCOUNT UNLOCK;
      ```

1. Oracle Database 12c 릴리스 1(12.1)을 실행하고 Oracle Data Guard에서 관리하는 DB 인스턴스의 경우, 기본 DB 인스턴스의 암호 파일(`orapw`)을 각 대기 DB 인스턴스에 수동으로 복사하세요.

   Amazon RDS에서 DB 인스턴스를 호스팅하는 경우 암호 파일 위치는 `/rdsdbdata/config/orapw`입니다. Amazon RDS에서 호스팅되지 않는 데이터베이스의 경우 기본 위치는 Linux 및 UNIX는 `$ORACLE_HOME/dbs/orapw$ORACLE_SID`이고, Windows는 `%ORACLE_HOME%\database\PWD%ORACLE_SID%.ora`입니다.