Amazon RDS Custom의 보안 - Amazon Relational Database Service

Amazon RDS Custom의 보안

RDS Custom의 보안 고려 사항을 숙지하세요.

RDS Custom이 사용자를 대신하여 작업을 안전하게 관리하는 방법

RDS Custom은 다음과 같은 도구와 기법을 사용하여 사용자를 대신하여 안전하게 작업을 실행합니다.

AWSServiceRoleForRDSCustom 서비스 연결 역할

서비스 연결 역할은 서비스에서 사전 정의하며, 사용자를 대신하여 다른 AWS 서비스를 자동으로 호출하는 데 필요한 모든 권한을 포함합니다. RDS  Custom의 경우 AWSServiceRoleForRDSCustom이 최소 권한의 원칙에 따라 정의된 서비스 연결 역할입니다. RDS Custom은 이 역할에 연결된 정책인 AmazonRDSCustomServiceRolePolicy의 권한을 사용하여 대부분의 프로비저닝과 모든 오프 호스트 관리 작업을 수행합니다. 자세한 내용은 AmazonRDSCustomServiceRolePolicy를 참조하세요.

호스트에 작업을 수행할 때 RDS Custom 자동화는 서비스 연결 역할의 보안 인증 정보를 사용하여 AWS Systems Manager로 명령을 실행합니다. Systems Manager 명령 기록 및 AWS CloudTrail을 통해 명령 기록을 감사할 수 있습니다. Systems Manager는 네트워킹 설정을 사용하여 RDS Custom DB 인스턴스에 연결합니다. 자세한 내용은 4단계: RDS Custom for Oracle의 IAM 구성 단원을 참조하십시오.

임시 IAM 보안 인증 정보

리소스를 프로비저닝하거나 삭제할 때 RDS Custom은 호출하는 IAM 보안 주체의 보안 인증 정보에서 파생된 임시 보안 인증 정보를 사용하는 경우가 있습니다. 이러한 IAM 보안 인증 정보는 해당 보안 주체에 연결된 IAM 정책에 의해 제한되며 작업이 완료된 후 만료됩니다. RDS Custom을 사용하는 IAM 보안 주체에 필요한 권한에 대해 알아보려면 5단계: IAM 사용자 또는 역할에 필요한 권한 부여 섹션을 참조하세요.

Amazon EC2 인스턴스 프로파일

EC2 인스턴스 프로파일이란 IAM 역할을 위한 컨테이너로, EC2 인스턴스에 역할 정보를 전달하는 데 사용됩니다. EC2 인스턴스는 RDS Custom DB 인스턴스의 기반이 됩니다. RDS Custom DB 인스턴스를 만들 때 인스턴스 프로필을 제공합니다. RDS Custom은 백업과 같은 호스트 기반 관리 작업을 수행할 때 EC2 인스턴스 프로파일 보안 인증 정보를 사용합니다. 자세한 내용은 수동으로 IAM 역할과 인스턴스 프로파일 생성 단원을 참조하십시오.

SSH 키 페어

RDS Custom은 DB 인스턴스의 기반이 되는 EC2 인스턴스를 만들 때 사용자를 대신하여 SSH 키 페어를 생성합니다. 키는 이름 지정 접두사 do-not-delete-rds-custom-ssh-privatekey-db-를 사용하며, AWS Secrets Manager는 프라이빗 키를 AWS 계정에 보안 암호로 저장합니다. Amazon RDS는 이러한 보안 인증 정보를 저장, 액세스 또는 사용하지 않습니다. 자세한 내용은 Amazon EC2 키 페어 및 Linux 인스턴스를 참조하세요.

SSL 인증서

RDS Custom DB 인스턴스는 관리형 SSL 인증서를 지원하지 않습니다. SSL을 배포하려는 경우 고유 Wallet에서 SSL 인증서를 자체 관리하고 SSL 리스너를 생성하여 클라이언트 데이터베이스 간 연결을 보호하거나 데이터베이스 복제를 수행할 수 있습니다. 자세한 내용은 Oracle Database 설명서에서 전송 계층 보안 인증 구성을 참조하세요.

Amazon S3 버킷 보안으로 혼동된 대리자 문제 방지

Amazon RDS Custom for Oracle 사용자 지정 엔진 버전(CEV) 또는 RDS Custom for SQL Server DB 인스턴스를 생성하면 RDS Custom이 Amazon S3 버킷을 생성합니다. S3 버킷은 CEV 아티팩트, 다시 실행(트랜잭션) 로그, 지원 경계에 대한 구성 항목 및 AWS CloudTrail 로그와 같은 파일을 저장합니다.

혼란스러운 대리인 문제를 방지하기 위해 전역 조건 컨텍스트 키를 사용하여 이러한 S3 버킷을 보다 안전하게 만들 수 있습니다. 자세한 내용은 교차 서비스 혼동된 대리자 문제 방지을 참조하세요.

다음 RDS Custom for Oracle 예는 S3 버킷 정책에서 aws:SourceArnaws:SourceAccount 전역 조건 컨텍스트 키의 사용을 보여줍니다. RDS Custom for Oracle의 경우 CEV 및 DB 인스턴스에 대한 Amazon 리소스 이름(ARN)을 포함해야 합니다. RDS Custom for SQL Server의 경우 DB 인스턴스 ARN을 포함해야 합니다.

... { "Sid": "AWSRDSCustomForOracleInstancesObjectLevelAccess", "Effect": "Allow", "Principal": { "Service": "custom.rds.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": "arn:aws:s3:::do-not-delete-rds-custom-123456789012-us-east-2-c8a6f7/RDSCustomForOracle/Instances/*", "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:rds:us-east-2:123456789012:db:*", "arn:aws:rds:us-east-2:123456789012:cev:*/*" ] }, "StringEquals": { "aws:SourceAccount": "123456789012" } } }, ...

규정 준수 프로그램을 위한 RDS Custom for Oracle 자격 증명

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

미리 정의된 사용자의 자격 증명 자동 교체

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

미리 정의된 Oracle 사용자
데이터베이스 사용자생성한 사람지원되는 엔진 버전참고

SYS

Oracle

custom-oracle-ee

custom-oracle-ee-cdb

custom-oracle-se2

custom-oracle-se2-cdb

SYSTEM

Oracle

custom-oracle-ee

custom-oracle-ee-cdb

custom-oracle-se2

custom-oracle-se2-cdb

RDSADMIN

RDS

custom-oracle-ee

custom-oracle-se2

C##RDSADMIN

RDS

custom-oracle-ee-cdb

custom-oracle-se2-cdb

C## 접두사가 있는 사용자 이름은 CDB에만 존재합니다. CDB에 대한 자세한 내용은 Amazon RDS Custom for Oracle 아키텍처 개요를 참조하세요.

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 아키텍처 개요를 참조하세요.

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

사용자 자격 증명 교체에 대한 지침

규정 준수 프로그램에 따라 자격 증명을 교체하려면 다음 지침을 참고하세요.

  • DB 인스턴스에서 자격 증명을 자동으로 교체할 경우, 미리 정의된 Oracle 사용자에 나열된 사용자의 암호, 암호 파일 또는 암호를 수동으로 변경하거나 삭제하지 마세요. 그렇지 않으면 RDS Custom이 DB 인스턴스를 지원 경계 밖에 배치하여 자동 교체가 일시 중단될 수 있습니다.

  • RDS 마스터 사용자는 미리 정의되어 있지 않으므로 암호를 수동으로 변경하거나, Secrets Manager에서 자동 교체를 설정해야 합니다. 자세한 내용을 알아보려면 AWS Secrets Manager 보안 암호 교체를 참조하세요.

사용자 자격 증명을 수동으로 교체

다음과 같은 데이터베이스 범주의 경우 RDS는 미리 정의된 Oracle 사용자에 나열된 사용자의 자격 증명을 자동으로 교체하지 않습니다.

  • 대기 데이터베이스로 작동하도록 수동으로 구성한 데이터베이스.

  • 온프레미스 데이터베이스.

  • 지원 경계 밖에 있거나 RDS Custom 자동화를 실행할 수 없는 상태의 DB 인스턴스. 이 경우 RDS Custom은 키 교체도 수행하지 않습니다.

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

DB 인스턴스의 사용자 자격 증명을 수동으로 교체하려면
  1. https://console.aws.amazon.com/rds/에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

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

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

  4. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  5. 검색 상자에 DB 리소스 ID를 입력하고 다음과 같은 형식으로 된 암호를 찾습니다.

    do-not-delete-rds-custom-db-resource-id-numeric-string

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

    do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
    중요

    DB 인스턴스가 읽기 전용 복제본이고 custom-oracle-ee-cdb 엔진을 사용할 경우 접미사 db-resource-id-numeric-string이 붙은 두 개의 암호가 존재합니다. 하나는 마스터 사용자용이고, 다른 하나는 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의 암호를 나타냅니다.

  6. DB 인스턴스가 Oracle Data Guard 구성에 있을 경우, 다음 형식으로 된 암호를 찾으세요.

    do-not-delete-rds-custom-db-resource-id-numeric-string-dg

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

    do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
  7. 미리 정의된 Oracle 사용자에 나열된 모든 데이터베이스 사용자의 경우 AWS Secrets Manager 암호 수정의 지침에 따라 암호를 업데이트하세요.

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

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

    2. 미리 정의된 Oracle 사용자에 나열된 각 데이터베이스 사용자에 대해 다음 형식으로 된 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;
  9. 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입니다.