

# 암호화를 사용하여 데이터 보호
<a name="Encryption"></a>

데이터베이스 리소스에 대한 암호화를 활성화할 수 있습니다. 또한 DB 인스턴스클러스터에 대한 연결도 암호화가 가능합니다.

**Topics**
+ [Amazon RDS 리소스 암호화](Overview.Encryption.md)
+ [AWS KMS key 관리](Overview.Encryption.Keys.md)
+ [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md)
+ [SSL/TLS 인증서 교체](UsingWithRDS.SSL-certificate-rotation.md)

# Amazon RDS 리소스 암호화
<a name="Overview.Encryption"></a>

Amazon RDS는 Amazon RDS DB 인스턴스를 암호화할 수 있습니다. 유휴 시 암호화된 데이터에는 DB 인스턴스에 대한 기본 스토리지, 해당 로그, 자동 백업, 읽기 전용 복제본 및 스냅샷이 포함됩니다.

Amazon RDS 암호화 DB 인스턴스는 업계 표준인 AES-256 암호화 알고리즘을 사용하여 Amazon RDS DB 인스턴스를 호스팅하는 서버의 데이터를 암호화합니다.

데이터가 암호화된 이후 Amazon RDS 가 성능에 미치는 영향을 최소화한 상태에서 데이터 액세스 및 암호 해독의 인증을 투명하게 처리합니다. 암호화를 사용하도록 데이터베이스 클라이언트 애플리케이션을 수정하지 않아도 됩니다.

**참고**  
암호화/비암호화 DB 인스턴스의 경우에는 AWS 리전 간 복제에서도 원본과 읽기 전용 복제본 사이에 전송되는 데이터가 암호화됩니다.

**Topics**
+ [Amazon RDS 리소스 암호화 개요](#Overview.Encryption.Overview)
+ [DB 인스턴스 암호화](#Overview.Encryption.Enabling)
+ [DB 인스턴스에 대해 암호화가 켜져 있는지 확인](#Overview.Encryption.Determining)
+ [Amazon RDS 암호화 가용성](#Overview.Encryption.Availability)
+ [전송 중 암호화](#Overview.Encryption.InTransit)
+ [Amazon RDS 암호화된 DB 인스턴스의 제한](#Overview.Encryption.Limitations)

## Amazon RDS 리소스 암호화 개요
<a name="Overview.Encryption.Overview"></a>

Amazon RDS 암호화된 DB 인스턴스는 기본 스토리지에 대한 무단 액세스로부터 데이터의 보안을 유지해 추가 계층의 데이터 보호를 제공합니다. 클라우드에 배포된 애플리케이션의 데이터 보호를 강화하고 저장된 데이터 암호화를 위한 규정 준수 요구 사항을 만족하기 위해 Amazon RDS 암호화를 사용할 수 있습니다. Amazon RDS 암호화된 DB 인스턴스의 경우 모든 로그, 백업 및 스냅샷이 암호화됩니다. 암호화의 가용성 및 제한에 대한 자세한 내용은 [Amazon RDS 암호화 가용성](#Overview.Encryption.Availability) 및 [Amazon RDS 암호화된 DB 인스턴스의 제한](#Overview.Encryption.Limitations) 섹션을 참조하세요.

Amazon RDS는 AWS Key Management Service 키를 사용하여 이러한 리소스를 암호화합니다. AWS KMS는 안전하고 가용성이 높은 하드웨어와 소프트웨어를 결합하여 클라우드에 맞게 규모가 조정된 키 관리 시스템을 제공합니다. AWS 관리형 키을(를) 사용하거나 고객 관리형 키를 생성할 수 있습니다.

암호화된 DB 인스턴스를 생성할 때 Amazon RDS에 사용할 고객 관리형 키 또는 AWS 관리형 키을(를) 선택하여 DB 인스턴스를 암호화할 수 있습니다. 고객 관리형 키의 키 식별자를 지정하지 않으면 Amazon RDS는 새 DB 인스턴스에 AWS 관리형 키을(를) 사용합니다. Amazon RDS는 AWS 계정에 대해 Amazon RDS용 AWS 관리형 키을(를) 생성합니다. AWS 계정에 각 AWS 리전의 Amazon RDS에 대한 다른 AWS 관리형 키이(가) 있습니다.

Amazon RDS 리소스 암호화 및 복호화에 사용되는 고객 관리형 키를 관리하려면 [AWS Key Management Service(AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/)를 사용합니다.

AWS KMS를 사용하면 고객 관리형 키를 생성하고 이 키의 사용을 제어하는 정책을 정의할 수 있습니다. AWS KMS는 CloudTrail을 지원하므로 KMS 키 사용을 감사하여 고객 관리형 키가 적절하게 사용되고 있는지 확인할 수 있습니다. 고객 관리형 키는 Amazon Aurora를 비롯해 Amazon S3, Amazon EBS, Amazon Redshift 등 지원되는 AWS 서비스에서 사용할 수 있습니다. AWS KMS와 통합되는 서비스 목록은 [AWS 서비스 통합](https://aws.amazon.com/kms/features/#AWS_Service_Integration)을 참조하세요. KMS 키 사용에 대한 몇 가지 고려 사항: 
+ 암호화된 DB 인스턴스를 생성한 후에는 해당 DB 인스턴스에서 사용된 KMS 키를 변경할 수 없습니다. 따라서 암호화된 DB 인스턴스를 생성하기 전에 KMS 키 요구 사항을 결정해야 합니다.

  DB 인스턴스의 암호화 키를 변경해야 하는 경우 인스턴스의 수동 스냅샷을 생성하고 스냅샷을 복사하는 동안 암호화를 활성화합니다. 자세한 내용은 [re:Post 지식 센터 문서](https://repost.aws/knowledge-center/update-encryption-key-rds)를 참조하세요.
+ 암호화된 스냅샷을 복사하는 경우 소스 스냅샷을 암호화하는 데 사용된 것과 다른 KMS 키를 사용하여 대상 스냅샷을 암호화할 수 있습니다.
+ 동일한 AWS 리전에 있는 경우, Amazon RDS 암호화된 인스턴스의 읽기 전용 복제본은 기본 DB 인스턴스와 동일한 KMS 키를 사용하여 암호화되어야 합니다.
+ 기본 DB 인스턴스와 읽기 전용 복제본이 서로 다른 AWS 리전에 있을 경우 해당 AWS 리전의 KMS 키를 사용하여 읽기 전용 복제본을 암호화합니다.
+ 스냅샷을 공유한 AWS 계정의 AWS 관리형 키을(를) 사용하여 암호화된 스냅샷은 공유할 수 없습니다.
+ 또한 Amazon RDS에서는 TDE(Transparent Data Encryption)를 사용하여 Oracle 또는 SQL Server DB 인스턴스 암호화를 지원합니다. TDE를 RDS 저장 데이터 암호화와 함께 사용하면 데이터베이스의 성능에 약간의 영향을 미칠 수 있지만, TDE를 RDS 저장 데이터 암호화와 함께 사용할 수 있습니다. 암호화 방법별로 다른 키를 관리해야 합니다. TDE에 대한 자세한 내용은 [Oracle Transparent Data Encryption](Appendix.Oracle.Options.AdvSecurity.md) 또는 [SQL Server에서 TDE(투명한 데이터 암호화) 지원](Appendix.SQLServer.Options.TDE.md) 단원을 참조하십시오.

**중요**  
Amazon RDS는 KMS 키를 비활성화하면 DB 인스턴스의 KMS 키에 대한 액세스 권한을 잃습니다. KMS 키에 대한 액세스 권한을 잃으면 백업이 활성화된 인스턴스에서 감지 후 2시간이 지났을 때 암호화된 DB 인스턴스가 `inaccessible-encryption-credentials-recoverable` 상태가 됩니다. DB 인스턴스는 7일 동안 이 상태로 유지되며, 이 기간 동안 인스턴스가 중지됩니다. 이 기간 동안 DB 인스턴스에 대한 API 호출은 성공하지 못할 수 있습니다. DB 인스턴스를 복구하려면 KMS 키를 활성화하고 이 DB 인스턴스를 다시 시작하세요. AWS Management Console, AWS CLI 또는 RDS API에서 KMS 키를 활성화합니다. AWS CLI 명령 [start-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/start-db-instance.html) 또는 AWS Management Console을 사용하여 DB 인스턴스를 다시 시작합니다.  
`inaccessible-encryption-credentials-recoverable` 상태는 중지할 수 있는 DB 인스턴스에만 적용됩니다. 읽기 전용 복제본 및 읽기 전용 복제본이 있는 인스턴스와 같이 중지할 수 없는 인스턴스에는 이 복구 가능 상태를 적용할 수 없습니다. 자세한 내용은 [DB 인스턴스 중지 제한 사항](USER_StopInstance.md#USER_StopInstance.Limitations) 섹션을 참조하세요.  
7일 이내에 DB 인스턴스가 복구되지 않으면 터미널 `inaccessible-encryption-credentials` 상태가 됩니다. 이 상태에서는 DB 인스턴스를 더 이상 사용할 수 없으며 백업에서 DB 인스턴스를 복원할 수만 있습니다. 데이터베이스에서 암호화된 데이터가 손실되지 않도록 보호하려면 암호화된 DB 인스턴스에 대해 항상 백업을 활성화하는 것이 좋습니다.  
DB 인스턴스를 생성하는 동안 Amazon RDS는 호출 주체가 KMS 키에 대한 액세스 권한이 있는지 확인하고 DB 인스턴스의 전체 수명 기간 동안 사용하는 KMS 키에서 부여를 생성합니다. MS 키에 대한 호출 주체의 액세스 권한을 취소해도 실행 중인 데이터베이스에는 영향을 미치지 않습니다. 스냅샷을 다른 계정으로 복사하는 등 계정 간 시나리오에서 KMS 키를 사용하는 경우, KMS 키를 다른 계정과 공유해야 합니다. 다른 KMS 키를 지정하지 않고 스냅샷에서 DB 인스턴스를 만들면 새 인스턴스는 소스 계정의 KMS 키를 사용합니다. DB 인스턴스를 생성한 후 키에 대한 액세스 권한을 취소해도 인스턴스에는 영향을 미치지 않습니다. 그러나 키를 비활성화하면 해당 키로 암호화된 모든 DB 인스턴스에 영향을 미칩니다. 이를 방지하려면 스냅샷 복사 작업 중에 다른 키를 지정하세요.  
백업이 비활성화된 DB 인스턴스는 인스턴스 수정 또는 복구 중에 볼륨이 호스트에서 분리될 때까지 계속 사용할 수 있습니다. RDS는 해당하는 경우 인스턴스를 `inaccessible-encryption-credentials-recoverable` 상태 또는 `inaccessible-encryption-credentials` 상태로 이동합니다.

KMS 키에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서의 [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) 섹션 및 [AWS KMS key 관리](Overview.Encryption.Keys.md) 섹션을 참조하세요.

## DB 인스턴스 암호화
<a name="Overview.Encryption.Enabling"></a>

새로운 DB 인스턴스를 암호화하려면 Amazon RDS 콘솔에서 **암호화 활성화(Enable encryption)**를 선택합니다. DB 인스턴스 생성에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 단원을 참조하십시오.

[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 명령을 사용하여 암호화된 DB 인스턴스를 생성할 경우 `--storage-encrypted` 파라미터를 설정합니다. [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API 작업을 사용할 경우 `StorageEncrypted` 파라미터를 true로 설정하십시오.



AWS CLI `create-db-instance` 명령을 사용하여 고객 관리형 키로 암호화된 DB 인스턴스를 생성하는 경우 `--kms-key-id` 파라미터를 KMS 키의 키 식별자로 설정합니다. Amazon RDS API `CreateDBInstance` 작업을 사용하는 경우 `KmsKeyId` 파라미터를 KMS 키의 키 식별자로 설정합니다. 다른 AWS 계정에서 고객 관리형 키를 사용하려면 키 ARN 또는 별칭 ARN을 지정합니다.

## DB 인스턴스에 대해 암호화가 켜져 있는지 확인
<a name="Overview.Encryption.Determining"></a>

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 DB 인스턴스에 대해 저장 데이터 암호화가 켜져 있는지 확인합니다.

### 콘솔
<a name="Overview.Encryption.Determining.CON"></a>

**DB 인스턴스에 대해 저장 데이터 암호화가 켜져 있는지 확인하려면**

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

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. 세부 정보를 보기 위해 확인하려는 DB 인스턴스의 이름을 선택합니다.

1. **구성(Configuration)** 탭을 선택하고 **스토리지(Storage)**에서 **암호화(Encryption)** 값을 확인합니다.

   그러면 **활성화(Enabled)** 또는 **비활성화(Not enabled)** 중 하나가 표시됩니다.  
![\[DB 인스턴스에 대해 저장 데이터 암호화 확인\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/encryption-check-db-instance.png)

### AWS CLI
<a name="Overview.Encryption.Determining.CLI"></a>

AWS CLI를 사용하여 DB 인스턴스에 대해 저장 데이터 암호화가 켜져 있는지 확인하려면 다음 옵션을 사용하여 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 호출합니다.
+ `--db-instance-identifier` – DB 인스턴스의 이름입니다.

다음 예에서는 쿼리를 사용하여 `mydb` DB 인스턴스의 저장 데이터 암호화에 대해 `TRUE` 또는 `FALSE` 중 하나를 반환합니다.

**Example**  

```
1. aws rds describe-db-instances --db-instance-identifier mydb --query "*[].{StorageEncrypted:StorageEncrypted}" --output text
```

### RDS API
<a name="Overview.Encryption.Determining.API"></a>

Amazon RDS API를 사용하여 DB 인스턴스에 대해 저장 데이터 암호화가 켜져 있는지 확인하려면 다음 파라미터를 사용하여 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html)를 호출합니다.
+ `DBInstanceIdentifier` – DB 인스턴스의 이름입니다.

## Amazon RDS 암호화 가용성
<a name="Overview.Encryption.Availability"></a>

Amazon RDS 암호화는 현재 모든 데이터베이스 엔진과 스토리지 유형에 사용할 수 있습니다.

Amazon RDS 암호화는 대부분의 DB 인스턴스 클래스에서 사용 가능합니다. 다음 테이블에는 Amazon RDS 암호화를 *지원하지 않는* DB 인스턴스 클래스가 열거되어 있습니다.


| 인스턴스 유형 | 인스턴스 클래스 | 
| --- | --- | 
| 범용(M1) |  db.m1.small db.m1.medium db.m1.large db.m1.xlarge  | 
| 메모리 최적화(M2) |  db.m2.xlarge db.m2.2xlarge db.m2.4xlarge  | 
| 버스트 가능(T2) |  db.t2.micro  | 

## 전송 중 암호화
<a name="Overview.Encryption.InTransit"></a>

**물리적 계층에서의 암호화**  
AWS 글로벌 네트워크를 통해 AWS 리전으로 이동하는 모든 데이터는 AWS 보안 시설에서 나가기 전에 물리적 계층에서 자동으로 암호화됩니다. AZ 간에 전송되는 모든 트래픽은 암호화됩니다. 이 섹션에 나열된 암호화 계층을 비롯한 추가 암호화 계층은 추가적인 보호 기능을 제공할 수 있습니다.

**Amazon VPC 피어링 및 전송 게이트웨이 교차 리전 피어링에서 제공하는 암호화**  
Amazon VPC 및 Transit Gateway 피어링을 사용하는 모든 리전 간 트래픽은 리전을 종료하면 자동으로 대량 암호화됩니다. AWS 보안 시설에서 나가기 전에 모든 트래픽에 대한 추가 암호화 계층이 물리적 계층에서 자동으로 제공됩니다.

**인스턴스 간 암호화**  
AWS는 모든 유형의 DB 인스턴스 간 보안 프라이빗 연결을 제공합니다. 또한 일부 인스턴스 유형은 기본 Nitro 시스템 하드웨어의 오프로드 기능을 사용하여 인스턴스 간 전송 중 트래픽을 자동으로 암호화합니다. 이 암호화는 256비트 암호화와 함께 관련 데이터로 인증된 암호화(AEAD) 알고리즘을 사용합니다. 네트워크 성능에는 영향을 미치지 않습니다. 인스턴스 간에 이러한 전송 중 트래픽 암호화를 추가로 지원하려면 다음 요구 사항을 충족해야 합니다.  
+ 이러한 인스턴스는 다음 인스턴스 유형을 사용합니다.
  + **범용**: M6i, M6id, M6in, M6idn, M7g
  + **메모리 최적화**: R6i, R6id, R6in, R6idn, R7g, X2idn, X2iedn, X2iezn
+ 인스턴스가 동일한 AWS 리전에 있습니다.
+ 인스턴스가 동일한 VPC 또는 피어링된 VPC에 있으며, 트래픽이 로드 밸런서나 전송 게이트웨이 같은 가상 네트워크 디바이스 또는 서비스를 통과하지 않습니다.

## Amazon RDS 암호화된 DB 인스턴스의 제한
<a name="Overview.Encryption.Limitations"></a>

Amazon RDS 암호화된 DB 인스턴스에는 다음과 같은 제한이 있습니다.
+ Amazon RDS DB 인스턴스의 암호화는 인스턴스를 생성할 때에만 가능하며 DB 인스턴스가 생성된 후에는 불가능합니다.

  다만 암호화되지 않은 스냅샷의 사본을 암호화할 수 있기 때문에 암호화되지 않은 DB 인스턴스에 실질적으로 암호화를 추가할 수 있습니다. 즉, DB 인스턴스의 스냅샷을 만든 다음 해당 스냅샷의 암호화된 사본을 만들 수 있습니다. 그런 다음 암호화된 스냅샷에서 DB 인스턴스를 복구할 수 있고, 원본 DB 인스턴스의 암호화된 사본이 생깁니다. 자세한 내용은 [Amazon RDS용 DB 스냅샷 복사](USER_CopySnapshot.md) 단원을 참조하십시오.
+ 암호화된 DB 인스턴스의 암호화를 비활성화할 수 없습니다.
+ 암호화되지 않은 DB 인스턴스의 암호화된 스냅샷은 생성할 수 없습니다.
+ 암호화된 DB 인스턴스의 스냅샷은 DB 인스턴스와 동일한 KMS 키를 사용하여 암호화해야 합니다.
+ 암호화되지 않은 DB 인스턴스의 암호화된 읽기 전용 복제본이나 암호화된 DB 인스턴스의 암호화되지 않은 읽기 전용 복제본은 보유할 수 없습니다.
+ 암호화된 읽기 전용 복제본이 소스 DB 인스턴스와 동일한 AWS 리전에 있는 경우 해당 인스턴스와 동일한 KMS 키를 사용하여 암호화해야 합니다.
+ 암호화되지 않은 백업 또는 스냅샷을 암호화된 DB 인스턴스로 복원할 수 없습니다.
+ 암호화된 스냅샷을 한 AWS 리전에서 다른 리전으로 복사하려면 대상 AWS 리전에 KMS 키를 지정해야 합니다. 이는 KMS 키가 생성된 AWS 리전에만 해당하기 때문입니다.

  소스 스냅샷은 복사 프로세스 전체에서 암호화를 유지합니다. Amazon RDS는 봉투 암호화를 사용하여 복사 프로세스 중에 데이터를 보호합니다. 봉투 암호화에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*에서 [봉투 암호화](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)를 참조하세요.
+ 암호화된 DB 인스턴스의 암호화를 해제할 수 없습니다. 하지만 암호화된 DB 인스턴스에서 데이터를 내보내고 암호화되지 않은 DB 인스턴스로 해당 데이터를 가져올 수 있습니다.

# AWS KMS key 관리
<a name="Overview.Encryption.Keys"></a>

 Amazon RDS 는 [AWS Key Management Service(AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/)와 자동으로 통합하여 키 관리를 수행합니다. Amazon RDS 는 봉투 암호화를 사용합니다. 봉투 암호화에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*에서 [봉투 암호화](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)를 참조하세요.

두 가지 유형의 AWS KMS 키를 사용하여 DB 인스턴스 를 암호화할 수 있습니다.
+ KMS 키를 완전히 제어하기 위해서는 *고객 관리형 키*를 생성해야 합니다. 고객 관리형 키에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 참조하세요.
+  *AWS 관리형 키* 은(는) AWS KMS와 통합된 AWS 서비스가 고객의 계정에서 고객 대신 생성, 관리 및 사용하는 KMS 키입니다. 기본적으로 RDS AWS 관리형 키(`aws/rds`)는 암호화에 사용됩니다. RDS AWS 관리형 키는 관리, 교체 또는 삭제할 수 없습니다. AWS 관리형 키에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [AWS 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)를 참조하십시오.

Amazon RDS 암호화된 DB 인스턴스 에 사용되는 KMS 키를 관리하려면 [AWS KMS 콘솔](https://console.aws.amazon.com/kms), AWS CLI 또는 AWS KMS API에서 [AWS Key Management Service(AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/)를 사용합니다. AWS 관리형 또는 고객 관리형 키로 수행한 모든 작업의 감사 로그를 보려면 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)을 사용합니다. 키 교체에 대한 자세한 내용은 [AWS KMS 키 교체](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)를 참조하세요.

## 고객 관리형 키의 사용 권한 부여
<a name="Overview.Encryption.Keys.Authorizing"></a>

RDS 가 암호화 작업에 고객 관리형 키를 사용하는 경우 RDS 리소스를 만들거나 변경하는 사용자를 대신해 작업합니다.

고객 관리형 키를 사용하여 RDS 리소스를 만들려면 고객 관리형 키에서 다음 작업을 직접적으로 호출할 수 있는 권한이 사용자에게 있어야 합니다.
+  `kms:CreateGrant` 
+  `kms:DescribeKey` 

키 정책에서 허용하는 경우 키 정책 또는 IAM 정책에서 이러한 필수 권한을 지정할 수 있습니다.

**중요**  
Amazon RDS와 같은 관리형 서비스에서 AWS KMS 키 정책의 모든 리소스(\$1)에 대해 명시적 거부 문을 사용하는 경우 리소스 소유 계정을 허용하는 조건을 지정해야 합니다. 거부 규칙에 IAM 사용자에 대한 예외가 포함되어 있더라도 이 조건이 없다면 작업이 실패할 수 있습니다.

**작은 정보**  
최소 권한의 원칙을 따르려면 `kms:CreateGrant`에 대한 전체 액세스 권한을 허용하지 마세요. 대신에 [kms:ViaService 조건 키](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)를 사용하여 AWS 서비스에서 사용자를 대신하여 권한이 부여되는 경우에만 사용자가 KMS 키에 대한 권한을 부여할 수 있도록 허용합니다.

다양한 방법으로 IAM 정책을 더 엄격하게 설정할 수 있습니다. 예를 들어 RDS 에서 생성된 요청에 대해서만 고객 관리형 키를 사용할 수 있도록 허용하고 싶다면 `rds.<region>.amazonaws.com` 값과 함께 [kms:ViaService 조건 키](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)를 사용합니다. 또한 암호화 작업에 대한 고객 관리형 키 사용 조건으로 [Amazon RDS 암호화 컨텍스트](#Overview.Encryption.Keys.encryptioncontext)의 키 또는 값을 사용할 수도 있습니다.

자세한 내용을 알아보려면 **AWS Key Management Service 개발자 안내서의 [다른 계정의 사용자가 KMS 키를 사용하도록 허용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html) 및 [AWS KMS의 키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies)을 참조하세요.

## Amazon RDS 암호화 컨텍스트
<a name="Overview.Encryption.Keys.encryptioncontext"></a>

RDS 가 사용자의 KMS 키를 사용하거나 Amazon EBS가 RDS 를 대신하여 KMS 키를 사용하는 경우, 서비스가 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)를 지정합니다. 암호화 컨텍스트는 AWS KMS가 데이터 무결성을 보장하기 위해 사용하는 [추가 인증 데이터](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad)(AAD)입니다. 암호화 작업에 대해 암호화 컨텍스트가 지정되면 서비스가 암호화 해제 작업에 대해 동일한 암호화 컨텍스트를 지정해야 합니다. 그렇지 않으면 암호화 해제가 실패합니다. 암호화 컨텍스트는 [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) 로그에도 기록되어, 해당 KMS 키가 사용된 이유를 이해하는 데 도움을 줍니다. CloudTrail 로그에 CMK 사용을 설명하는 여러 항목이 포함될 수 있지만, 각 로그 항목의 암호화 컨텍스트는 특히 해당 KMS 키를 사용한 이유를 파악하는 데 도움이 될 수 있습니다.

최소한, 다음 JSON 형식 예에서 보듯이 Amazon RDS 는 항상 암호화 컨텍스트에 DB 인스턴스 ID를 사용합니다.

```
{ "aws:rds:db-id": "db-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }
```

이 암호화 컨텍스트는 KMS 키가 사용된 DB 인스턴스 를 식별하는 데 도움이 될 수 있습니다.

KMS 키가 특정 DB 인스턴스 와 특정 Amazon EBS 볼륨에 사용되는 경우, 다음 JSON 형식 예에서 보듯이 암호화 컨텍스트에 DB 인스턴스 ID와 Amazon EBS 볼륨 ID가 모두 사용됩니다.

```
{
  "aws:rds:db-id": "db-BRG7VYS3SVIFQW7234EJQOM5RQ",
  "aws:ebs:id": "vol-ad8c6542"
}
```

# SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화
<a name="UsingWithRDS.SSL"></a>

애플리케이션에서 보안 소켓 계층(SSL) 또는 전송 계층 보안(TLS)을 사용하여 Db2, MariaDB, Microsoft SQL Server, MySQL, Oracle 또는 PostgreSQL을 실행하는 데이터베이스에 대한 연결을 암호화할 수 있습니다.

SSL/TLS 연결은 클라이언트와 DB 인스턴스 또는 클러스터 사이에 전송되는 데이터를 암호화하여 하나의 보안 계층을 제공합니다. 필요에 따라 SSL/TLS 연결에서는 데이터베이스에 설치된 서버 인증서를 검증하여 서버 ID 확인을 수행할 수 있습니다. 서버 ID 확인을 요구하려면 다음의 일반적인 절차를 따르세요.

1. 데이터베이스의 **DB 서버 인증서**에 서명하는 **인증 기관(CA)**을 선택합니다. 인증 기관에 관한 자세한 내용은 [인증 기관](#UsingWithRDS.SSL.RegionCertificateAuthorities) 섹션을 참조하세요.

1. 데이터베이스에 연결할 때 사용할 인증서 번들을 다운로드합니다. 인증서 번들을 다운로드하려면  [AWS 리전별 인증서 번들](#UsingWithRDS.SSL.CertificatesAllRegions)  섹션을 참조하세요.
**참고**  
모든 인증서는 SSL/TLS 연결을 통한 다운로드에만 사용 가능합니다.

1. SSL/TLS 연결을 구현하는 DB 엔진 프로세스를 사용하여 데이터베이스에 연결합니다. 각 DB 엔진에는 SSL/TLS를 구현하기 위한 고유한 프로세스가 있습니다. 데이터베이스에서 SSL/TLS를 구현하는 방법을 알아보려면 DB 엔진에 해당하는 아래 링크로 이동하세요.
   +  [Amazon RDS for Db2 DB 인스턴스에 SSL/TLS 사용](Db2.Concepts.SSL.md) 
   +  [Amazon RDS의 MariaDB DB 인스턴스에 대한 SSL/TLS 지원](MariaDB.Concepts.SSLSupport.md) 
   +  [Microsoft SQL Server DB 인스턴스와 함께 SSL 사용](SQLServer.Concepts.General.SSL.Using.md) 
   +  [Amazon RDS의 MySQL DB 인스턴스에 대한 SSL/TLS 지원](MySQL.Concepts.SSLSupport.md) 
   +  [RDS for Oracle DB 인스턴스에 SSL 사용](Oracle.Concepts.SSL.md) 
   +  [PostgreSQL DB 인스턴스와 함께 SSL 사용](PostgreSQL.Concepts.General.SSL.md) 

## 인증 기관
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities"></a>

**인증 기관(CA)**은 인증서 체인의 맨 위에 있는 루트 CA를 식별하는 인증서입니다. CA는 각 DB 인스턴스에 설치된 **DB 서버 인증서**에 서명합니다. DB 서버 인증서는 DB 인스턴스를 신뢰할 수 있는 서버로 식별합니다.

![\[인증 기관 개요\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/certificate-authority-overview.png)


Amazon RDS는 데이터베이스의 DB 서버 인증서에 서명할 수 있는 다음 CA를 제공합니다.


****  

| 인증 기관(CA) | 설명 | 일반 이름(CN) | 
| --- | --- | --- | 
|  rds-ca-rsa2048-g1  |  대부분의 AWS 리전에서 RSA 2048 프라이빗 키 알고리즘과 SHA256 서명 알고리즘을 갖춘 인증 기관을 사용합니다. AWS GovCloud (US) Regions에서 이 CA는 RSA 2048 프라이빗 키 알고리즘과 SHA384 서명 알고리즘을 갖춘 인증 기관을 사용합니다. 이 CA는 자동 서버 인증서 교체를 지원합니다.  | Amazon RDS region-identifier Root CA RSA2048 G1 | 
|  rds-ca-rsa4096-g1  |  RSA 4096 프라이빗 키 알고리즘과 SHA384 서명 알고리즘을 갖춘 인증 기관을 사용합니다. 이 CA는 자동 서버 인증서 교체를 지원합니다.  | Amazon RDS region-identifier Root CA RSA4096 G1 | 
|  rds-ca-ecc384-g1  |  ECC 384 프라이빗 키 알고리즘과 SHA384 서명 알고리즘을 갖춘 인증 기관을 사용합니다. 이 CA는 자동 서버 인증서 교체를 지원합니다.  | Amazon RDS region-identifier Root CA ECC384 G1 | 

**참고**  
AWS CLI를 사용하는 경우 [describe-certificates](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-certificates.html)를 사용하여 위에 나열된 인증 기관의 유효성을 확인할 수 있습니다.

이러한 CA 인증서는 지역 및 글로벌 인증서 번들에 포함되어 있습니다. rds-ca-rsa2048-g1, rds-ca-rsa4096-g1, rds-ca-ecc384-g1 CA를 데이터베이스에 사용하면 RDS가 데이터베이스에서 DB 서버 인증서를 관리합니다. RDS는 DB 서버 인증서가 만료되기 전에 자동으로 교체합니다.

### 데이터베이스의 CA 설정
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.Selection"></a>

다음 작업을 수행할 때 데이터베이스의 CA를 설정할 수 있습니다.
+ DB 인스턴스 또는 다중 AZ DB 인스턴스 생성 - DB 인스턴스 또는 클러스터를 생성할 때 CA를 설정할 수 있습니다. 지침은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 또는 [Amazon RDS용 다중 AZ DB 클러스터 생성](create-multi-az-db-cluster.md) 섹션을 참조하세요.
+ DB 인스턴스 또는 다중 AZ DB 클러스터 수정 - DB 인스턴스 또는 클러스터를 수정하여 해당 CA를 설정할 수 있습니다. 지침은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 또는 [Amazon RDS용 다중 AZ DB 클러스터 수정](modify-multi-az-db-cluster.md) 섹션을 참조하세요.

**참고**  
 기본 CA는 rds-ca-rsa2048-g1로 설정되어 있습니다. [modify-certificates](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-certificates.html) 명령을 사용하여 AWS 계정에 기본 CA를 재정의할 수 있습니다.

사용 가능한 CA는 DB 엔진 및 DB 엔진 버전에 따라 다릅니다. AWS Management Console을 사용하는 경우 다음 이미지에 표시된 것처럼 **인증 기관** 설정을 사용하여 CA를 선택할 수 있습니다.

![\[인증 기관 옵션\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/certificate-authority.png)


콘솔에는 DB 엔진 및 DB 엔진 버전에 사용할 수 있는 CA만 표시됩니다. AWS CLI를 사용하는 경우 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 또는 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 사용하여 DB 인스턴스의 CA를 설정할 수 있습니다. [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) 또는 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 명령을 사용하여 다중 AZ DB 클러스터의 CA를 설정할 수 있습니다.

AWS CLI를 사용하는 경우 [describe-certificate](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-certificates.html) 명령을 사용하여 계정에 사용할 수 있는 CA를 확인할 수 있습니다. 이 명령은 출력의 `ValidTill`에 각 CA의 만료 날짜도 표시합니다. [describe-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 사용하여 특정 DB 엔진 및 DB 엔진 버전에 사용할 수 있는 CA를 찾을 수 있습니다.

다음 예제는 기본 RDS for PostgreSQL DB 엔진 버전에 사용할 수 있는 CA를 보여 줍니다.

```
aws rds describe-db-engine-versions --default-only --engine postgres
```

다음과 같은 출력이 표시됩니다. 사용 가능한 CA는 `SupportedCACertificateIdentifiers`에 나열되어 있습니다. 출력은 `SupportsCertificateRotationWithoutRestart`에서 DB 엔진 버전이 다시 시작하지 않고 인증서를 교체하는 기능을 지원하는지 여부도 표시합니다.

```
{
    "DBEngineVersions": [
        {
            "Engine": "postgres",
            "MajorEngineVersion": "13",
            "EngineVersion": "13.4",
            "DBParameterGroupFamily": "postgres13",
            "DBEngineDescription": "PostgreSQL",
            "DBEngineVersionDescription": "PostgreSQL 13.4-R1",
            "ValidUpgradeTarget": [],
            "SupportsLogExportsToCloudwatchLogs": false,
            "SupportsReadReplica": true,
            "SupportedFeatureNames": [
                "Lambda"
            ],
            "Status": "available",
            "SupportsParallelQuery": false,
            "SupportsGlobalDatabases": false,
            "SupportsBabelfish": false,
            "SupportsCertificateRotationWithoutRestart": true,
            "SupportedCACertificateIdentifiers": [
                "rds-ca-rsa2048-g1",
                "rds-ca-ecc384-g1",
                "rds-ca-rsa4096-g1"
            ]
        }
    ]
}
```

### DB 서버 인증서 유효 기간
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.DBServerCert"></a>

DB 서버 인증서의 유효 기간은 DB 엔진 및 DB 엔진 버전에 따라 다릅니다. DB 엔진 버전에서 재시작 없이 인증서를 교체하는 기능을 지원하는 경우 DB 서버 인증서의 유효 기간은 1년입니다. 그렇지 않으면 유효 기간은 3년입니다.

DB 서버 인증서 교체에 대한 자세한 내용은 [자동 서버 인증서 교체](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-server-cert-rotation) 섹션을 참조하세요.

### DB 인스턴스의 CA 보기
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.Viewing"></a>

콘솔의 **연결 및 보안** 탭에서 다음 이미지와 같이 데이터베이스의 CA에 대한 세부 정보를 볼 수 있습니다.

![\[인증 기관 세부 정보\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/certificate-authority-details.png)


AWS CLI를 사용 중인 경우 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 사용하여 DB 인스턴스의 CA에 대한 세부 정보를 확인할 수 있습니다. [describe-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 명령을 사용하여 다중 AZ DB 클러스터의 CA에 대한 세부 정보를 볼 수 있습니다.

## Amazon RDS 용 인증서 번들 다운로드
<a name="UsingWithRDS.SSL.CertificatesDownload"></a>

SSL 또는 TLS로 데이터베이스에 연결하는 경우 데이터베이스 인스턴스에 Amazon RDS의 신뢰 인증서가 필요합니다. 다음 표에서 적절한 링크를 선택하여 데이터베이스를 호스팅하는 AWS 리전에 해당하는 번들을 다운로드하세요.

### AWS 리전별 인증서 번들
<a name="UsingWithRDS.SSL.CertificatesAllRegions"></a>

모든 AWS 리전 리전과 GovCloud(US) 리전의 인증서 번들에는 다음과 같은 루트 CA 인증서가 포함되어 있습니다.
+  `rds-ca-rsa2048-g1` 
+  `rds-ca-rsa4096-g1` 
+  `rds-ca-ecc384-g1` 

다음 리전에서는 `rds-ca-rsa4096-g1` 및 `rds-ca-ecc384-g1` 인증서를 사용할 수 없습니다.
+ 아시아 태평양(뭄바이)
+ 아시아 태평양(멜버른)
+ 캐나다 서부(캘거리)
+ 유럽(취리히)
+ 유럽(스페인)
+ 이스라엘(텔아비브)

애플리케이션 트러스트 스토어에는 루트 CA 인증서만 등록하면 됩니다. RDS가 DB 서버 인증서를 자동으로 교체할 때 연결 문제가 발생할 수 있으므로 중간 CA 인증서를 트러스트 스토어에 등록하지 마세요.

**참고**  
Amazon RDS Proxy 에서는 AWS Certificate Manager(ACM)의 인증서를 사용합니다. RDS 프록시를 사용하는 경우 Amazon RDS 인증서를 다운로드하거나 RDS 프록시 연결을 사용하는 애플리케이션을 업데이트할 필요가 없습니다. 자세한 내용은 섹션을 참조하세요[RDS Proxy에서 TLS/SSL 사용](rds-proxy.howitworks.md#rds-proxy-security.tls)

AWS 리전에 대한 인증서 번들을 다운로드하려면 다음 표에서 해당 데이터베이스를 호스팅하는 AWS 리전에 대한 링크를 선택하세요.


|  **AWS 리전**  |  **인증서 번들(PEM)**  |  **인증서 번들(PKCS7)**  | 
| --- | --- | --- | 
| 모든 상업용 AWS 리전 |  [global-bundle.pem](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem)  |  [global-bundle.p7b](https://truststore.pki.rds.amazonaws.com/global/global-bundle.p7b)  | 
| 미국 동부(버지니아 북부) |  [us-east-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/us-east-1/us-east-1-bundle.pem)  |  [us-east-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/us-east-1/us-east-1-bundle.p7b)  | 
| 미국 동부(오하이오) |  [us-east-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/us-east-2/us-east-2-bundle.pem)  |  [us-east-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/us-east-2/us-east-2-bundle.p7b)  | 
| 미국 서부(캘리포니아 북부) |  [us-west-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/us-west-1/us-west-1-bundle.pem)  |  [us-west-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/us-west-1/us-west-1-bundle.p7b)  | 
| 미국 서부(오리건) |  [us-west-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/us-west-2/us-west-2-bundle.pem)  |  [us-west-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/us-west-2/us-west-2-bundle.p7b)  | 
| Africa (Cape Town) |  [af-south-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/af-south-1/af-south-1-bundle.pem)  |  [af-south-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/af-south-1/af-south-1-bundle.p7b)  | 
| Asia Pacific (Hong Kong) |  [ap-east-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-east-1/ap-east-1-bundle.pem)  |  [ap-east-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-east-1/ap-east-1-bundle.p7b)  | 
| 아시아 태평양(하이데라바드) |  [ap-south-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-south-2/ap-south-2-bundle.pem)  |  [ap-south-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-south-2/ap-south-2-bundle.p7b)  | 
| 아시아 태평양(자카르타) |  [ap-southeast-3-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-3/ap-southeast-3-bundle.pem)  |  [ap-southeast-3-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-3/ap-southeast-3-bundle.p7b)  | 
| 아시아 태평양(말레이시아) |  [ap-southeast-5-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-5/ap-southeast-5-bundle.pem)  |  [ap-southeast-5-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-5/ap-southeast-5-bundle.p7b)  | 
| 아시아 태평양(멜버른) |  [ap-southeast-4-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-4/ap-southeast-4-bundle.pem)  |  [ap-southeast-4-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-4/ap-southeast-4-bundle.p7b)  | 
| 아시아 태평양(뭄바이) |  [ap-south-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-south-1/ap-south-1-bundle.pem)  |  [ap-south-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-south-1/ap-south-1-bundle.p7b)  | 
| Asia Pacific (Osaka) |  [ap-northeast-3-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-northeast-3/ap-northeast-3-bundle.pem)  |  [ap-northeast-3-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-northeast-3/ap-northeast-3-bundle.p7b)  | 
| 아시아 태평양(태국) |  [ap-southeast-7-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-7/ap-southeast-7-bundle.pem)  |  [ap-southeast-7-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-7/ap-southeast-7-bundle.p7b)  | 
| 아시아 태평양(도쿄) |  [ap-northeast-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-northeast-1/ap-northeast-1-bundle.pem)  |  [ap-northeast-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-northeast-1/ap-northeast-1-bundle.p7b)  | 
| Asia Pacific (Seoul) |  [ap-northeast-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-northeast-2/ap-northeast-2-bundle.pem)  |  [ap-northeast-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-northeast-2/ap-northeast-2-bundle.p7b)  | 
| 아시아 태평양(싱가포르) |  [ap-southeast-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-1/ap-southeast-1-bundle.pem)  |  [ap-southeast-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-1/ap-southeast-1-bundle.p7b)  | 
| 아시아 태평양(시드니) |  [ap-southeast-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-2/ap-southeast-2-bundle.pem)  |  [ap-southeast-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-2/ap-southeast-2-bundle.p7b)  | 
| Canada (Central) |  [ca-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ca-central-1/ca-central-1-bundle.pem)  |  [ca-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ca-central-1/ca-central-1-bundle.p7b)  | 
| 캐나다 서부(캘거리) |  [ca-west-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ca-west-1/ca-west-1-bundle.pem)  |  [ca-west-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ca-west-1/ca-west-1-bundle.p7b)  | 
| 유럽(프랑크푸르트) |  [eu-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-central-1/eu-central-1-bundle.pem)  |  [eu-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-central-1/eu-central-1-bundle.p7b)  | 
| 유럽(아일랜드) |  [eu-west-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-west-1/eu-west-1-bundle.pem)  |  [eu-west-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-west-1/eu-west-1-bundle.p7b)  | 
| Europe (London) |  [eu-west-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-west-2/eu-west-2-bundle.pem)  |  [eu-west-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-west-2/eu-west-2-bundle.p7b)  | 
| Europe (Milan) |  [eu-south-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-south-1/eu-south-1-bundle.pem)  |  [eu-south-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-south-1/eu-south-1-bundle.p7b)  | 
| Europe (Paris) |  [eu-west-3-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-west-3/eu-west-3-bundle.pem)  |  [eu-west-3-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-west-3/eu-west-3-bundle.p7b)  | 
| 유럽(스페인) |  [eu-south-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-south-2/eu-south-2-bundle.pem)  |  [eu-south-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-south-2/eu-south-2-bundle.p7b)  | 
| 유럽(스톡홀름) |  [eu-north-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-north-1/eu-north-1-bundle.pem)  |  [eu-north-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-north-1/eu-north-1-bundle.p7b)  | 
| 유럽(취리히) |  [eu-central-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-central-2/eu-central-2-bundle.pem)  |  [eu-central-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-central-2/eu-central-2-bundle.p7b)  | 
| 이스라엘(텔아비브) |  [il-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/il-central-1/il-central-1-bundle.pem)  |  [il-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/il-central-1/il-central-1-bundle.p7b)  | 
| 멕시코(중부) |  [mx-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/mx-central-1/mx-central-1-bundle.pem)  |  [mx-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/mx-central-1/mx-central-1-bundle.p7b)  | 
| Middle East (Bahrain) |  [me-south-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/me-south-1/me-south-1-bundle.pem)  |  [me-south-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/me-south-1/me-south-1-bundle.p7b)  | 
| 중동(UAE) |  [me-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/me-central-1/me-central-1-bundle.pem)  |  [me-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/me-central-1/me-central-1-bundle.p7b)  | 
| 남아메리카(상파울루) |  [sa-east-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/sa-east-1/sa-east-1-bundle.pem)  |  [sa-east-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/sa-east-1/sa-east-1-bundle.p7b)  | 
| 모든 AWS GovCloud (US) Region |  [global-bundle.pem](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/global/global-bundle.pem)  |  [global-bundle.p7b](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/global/global-bundle.p7b)  | 
| AWS GovCloud(미국 동부) |  [us-gov-east-1-bundle.pem](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/us-gov-east-1/us-gov-east-1-bundle.pem)  |  [us-gov-east-1-bundle.p7b](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/us-gov-east-1/us-gov-east-1-bundle.p7b)  | 
| AWS GovCloud(미국 서부) |  [us-gov-west-1-bundle.pem](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/us-gov-west-1/us-gov-west-1-bundle.pem)  |  [us-gov-west-1-bundle.p7b](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/us-gov-west-1/us-gov-west-1-bundle.p7b)  | 

### CA 인증서의 내용 보기
<a name="UsingWithRDS.SSL.CertificatesDownload.viewing"></a>

CA 인증서 번들의 내용을 확인하려면 다음 명령을 사용합니다.

```
keytool -printcert -v -file global-bundle.pem
```

# SSL/TLS 인증서 교체
<a name="UsingWithRDS.SSL-certificate-rotation"></a>

Amazon RDS 인증 기관 인증서 rds-ca-2019는 2024년 8월에 만료됩니다. RDS DB 인스턴스 또는 다중 AZ DB 클러스터에 연결하기 위해 인증서 확인과 함께 보안 소켓 계층(SSL) 또는 Transport Layer Security(TLS)를 사용하거나 사용할 계획이라면 새 CA 인증서인 rds-ca-rsa2048-g1, rds-ca-rsa4096-g1 또는 rds-ca-ecc384-g1 중 하나를 사용하는 것을 고려하세요. 현재 인증서 확인과 함께 SSL/TLS를 사용하지 않는 경우에도 CA 인증서가 만료되었을 수 있으며, 인증서 확인과 함께 SSL/TLS를 사용하여 RDS 데이터베이스에 연결하려는 경우 새 CA 인증서로 업데이트해야 합니다.

Amazon RDS는 AWS 보안 모범 사례로 새 CA 인증서를 제공합니다. 새 인증서 및 지원되는 AWS 리전에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 섹션을 참조하세요.

데이터베이스의 CA 인증서를 업데이트하려면 다음 방법을 사용하세요.
+  [DB 인스턴스또는 클러스터를 수정하여 CA 인증서 업데이트](#UsingWithRDS.SSL-certificate-rotation-updating) 
+  [유지 관리를 적용하여 CA 인증서 업데이트](#UsingWithRDS.SSL-certificate-rotation-maintenance-update) 

DB 인스턴스 또는 다중 AZ DB 클러스터에서 새로운 CA 인증서를 사용하도록 업데이트하기 전에 RDS 데이터베이스에 연결하는 클라이언트 또는 애플리케이션을 업데이트해야 합니다.

## 인증서 교체 고려 사항
<a name="UsingWithRDS.SSL-certificate-rotation-considerations"></a>

인증서를 교체하기 전에 다음 상황을 고려하세요.
+ Amazon RDS Proxy 에서는 AWS Certificate Manager(ACM)의 인증서를 사용합니다. RDS 프록시를 사용하는 경우 SSL/TLS 인증서를 교체할 때 RDS 프록시 연결을 사용하는 애플리케이션을 업데이트할 필요가 없습니다. 자세한 내용은 섹션을 참조하세요[RDS Proxy에서 TLS/SSL 사용](rds-proxy.howitworks.md#rds-proxy-security.tls)
+ 2020년 7월 28일 이전에 생성되었거나 rds-ca-2019 인증서로 업데이트된 DB 인스턴스 또는 다중 AZ DB 클러스터가 있는 Go 버전 1.15 애플리케이션을 사용하는 경우 인증서를 다시 업데이트해야 합니다. 엔진에 따라 rds-ca-rsa2048-g1, rds-ca-rsa4096-g1, rds-ca-ecc384-g1 로 인증서를 업데이트하세요.

  새 CA 인증서 식별자를 사용하여 DB 인스턴스의 경우 `modify-db-instance` 명령 또는 다중 AZ DB 클러스터의 경우 `modify-db-cluster` 명령을 사용합니다. `describe-db-engine-versions` 명령을 사용하여 특정 DB 엔진 및 DB 엔진 버전에 사용할 수 있는 CA를 찾을 수 있습니다.

  2020년 7월 28일 이후에 데이터베이스를 생성하거나 인증서를 업데이트한 경우에는 아무 조치도 필요하지 않습니다. 자세한 내용은 [Go GitHub 문제 \$139568](https://github.com/golang/go/issues/39568)를 참조하세요.

## DB 인스턴스또는 클러스터를 수정하여 CA 인증서 업데이트
<a name="UsingWithRDS.SSL-certificate-rotation-updating"></a>

다음 예제에서는 *rds-ca-2019*에서 *rds-ca-rsa2048-g1*로 CA 인증서를 업데이트합니다. 다른 인증서를 선택할 수 있습니다. 자세한 내용은 [인증 기관](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities) 섹션을 참조하세요.

애플리케이션 트러스트 스토어를 업데이트하여 CA 인증서 업데이트와 관련된 가동 중단 시간을 줄이세요. CA 인증서 교체와 관련된 다시 시작에 대한 자세한 내용은 [자동 서버 인증서 교체](#UsingWithRDS.SSL-certificate-rotation-server-cert-rotation) 섹션을 참조하세요.

**DB 인스턴스또는 클러스터를 수정하여 CA 인증서를 업데이트하는 방법**

1. [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md)에 설명된 대로 새 SSL/TLS 인증서를 다운로드합니다.

1. 새 SSL/TLS 인증서를 사용하도록 애플리케이션을 업데이트합니다.

   새 SSL/TLS 인증서를 위해 애플리케이션을 업데이트하는 방법은 애플리케이션에 따라 다릅니다. 애플리케이션 개발자와 함께 애플리케이션의 SSL/TLS 인증서를 업데이트하십시오.

   SSL/TLS 연결을 확인하고 각 DB 엔진의 애플리케이션을 업데이트하는 방법에 대한 자세한 내용은 다음 주제를 참조하십시오.
   +  [새 SSL/TLS 인증서를 사용해 MariaDB 인스턴스에 연결할 애플리케이션 업데이트](ssl-certificate-rotation-mariadb.md) 
   +  [새 SSL/TLS 인증서를 사용해 Microsoft SQL Server DB 인스턴스에 연결할 애플리케이션을 업데이트](ssl-certificate-rotation-sqlserver.md) 
   +  [새 SSL/TLS 인증서를 사용해 MySQL DB 인스턴스에 연결할 애플리케이션 업데이트](ssl-certificate-rotation-mysql.md) 
   +  [새 SSL/TLS 인증서를 사용해 Oracle DB에 연결할 애플리케이션을 업데이트](ssl-certificate-rotation-oracle.md) 
   +  [새 SSL/TLS 인증서를 사용해 PostgreSQL DB 인스턴스에 연결할 애플리케이션 업데이트](ssl-certificate-rotation-postgresql.md) 

   Linux 운영 체제의 트러스트 스토어를 업데이트하는 샘플 스크립트는 [트러스트 스토어로 인증서를 가져오기 위한 샘플 스크립트](#UsingWithRDS.SSL-certificate-rotation-sample-script) 섹션을 참조하세요.
**참고**  
인증서 번들에는 이전 및 신규 CA의 인증서가 들어 있으므로 애플리케이션을 안전하게 업그레이드하고 전환 기간에 연결성을 유지할 수 있습니다. AWS Database Migration Service를 사용하여 데이터베이스를 DB 인스턴스 또는 클러스터 로 마이그레이션하는 경우, 연결이 끊기지 않고 마이그레이션이 진행되도록 인증서 번들을 사용하는 것이 좋습니다.

1. DB 인스턴스 또는 다중 AZ DB 클러스터를 수정하여 CA를 **rds-ca-2019**에서 **ca-rsa2048-g1**로 변경합니다. CA 인증서를 업데이트하기 위해 데이터베이스를 다시 시작해야 하는지 확인하려면 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 사용하여 `SupportsCertificateRotationWithoutRestart` 플래그를 확인합니다.
**중요**  
인증서 만료 후 연결 문제가 발생하는 경우 콘솔에서 **즉시 적용**을 지정하거나 `--apply-immediately`를 통해 AWS CLI 옵션을 지정하여 즉시 적용 옵션을 사용합니다. 기본적으로 이 작업은 다음 유지 관리 기간 중에 실행되도록 예약되어 있습니다.  
RDS for Oracle DB 인스턴스의 경우 연결 오류를 방지하려면 Oracle DB를 다시 시작하는 것이 좋습니다.  
AlwaysOn 또는 미러링 옵션이 활성화된 RDS for SQL Server 다중 AZ 인스턴스의 경우 인증서 교체 후 인스턴스를 재부팅하면 장애 조치가 수행될 수 있습니다.  
기본 RDS CA와 다른 인스턴스 CA에 재정의를 설정하려면 [modify-certificates](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-certificates.html) CLI 명령을 사용합니다.

AWS Management Console 또는 AWS CLI를 사용하여 DB 인스턴스** 또는 다중 AZ DB 클러스터**의 CA 인증서를 rds-ca-2019에서 **rds-ca-rsa2048-g1**로 변경할 수 있습니다.

------
#### [ Console ]

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

1. 탐색 창에서 **데이터베이스**를 선택한 다음 수정하려는 DB 인스턴스 또는 다중 AZ DB 클러스터를 선택합니다.

1. **수정**을 선택합니다.  
![\[DB 인스턴스 또는 다중 AZ DB 클러스터 수정\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-modify.png)

1. **연결** 섹션에서 **rds-ca-rsa2048-g1**을 선택합니다.  
![\[CA 인증서 선택\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-ca-rsa2048-g1.png)

1. [**Continue**]를 수정 사항을 요약한 내용을 확인합니다.

1. 변경 사항을 즉시 적용하려면 **즉시 적용**을 선택합니다.

1. 확인 페이지에서 변경 내용을 검토합니다. 내용이 정확할 경우 **DB 인스턴스 수정** 또는 **클러스터 수정**을 선택하여 변경 사항을 저장합니다.
**중요**  
이 작업을 예약하는 경우 클라이언트 측 트러스트 스토어를 미리 업데이트했는지 확인하십시오.

   또는 **뒤로**를 선택하여 변경 내용을 편집하거나 **취소**를 선택하여 변경 내용을 취소합니다.

------
#### [ AWS CLI ]

AWS CLI를 사용하여 DB 인스턴스 또는 다중 AZ DB 클러스터의 CA를 **rds-ca-2019**에서 **rds-ca-rsa2048-g1**로 변경하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 또는 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 명령을 직접 호출합니다. DB 인스턴스 또는 클러스터 식별자 및 `--ca-certificate-identifier` 옵션을 지정합니다.

`--apply-immediately` 파라미터를 사용하여 업데이트를 즉시 적용합니다. 기본적으로 이 작업은 다음 유지 관리 기간 중에 실행되도록 예약되어 있습니다.

**중요**  
이 작업을 예약하는 경우 클라이언트 측 트러스트 스토어를 미리 업데이트했는지 확인하십시오.

**Example**  
 **DB 인스턴스**   
다음 예시에서는 CA 인증서를 `rds-ca-rsa2048-g1`로 설정하여 `mydbinstance`를 수정합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
인스턴스 재부팅이 필요한 경우 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 명령을 사용하여 `--no-certificate-rotation-restart` 옵션을 지정할 수 있습니다.

**Example**  
 **다중 AZ DB 클러스터**   
다음 예시에서는 CA 인증서를 `rds-ca-rsa2048-g1`로 설정하여 `mydbcluster`를 수정합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
Windows의 경우:  

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --ca-certificate-identifier rds-ca-rsa2048-g1
```

------

## 유지 관리를 적용하여 CA 인증서 업데이트
<a name="UsingWithRDS.SSL-certificate-rotation-maintenance-update"></a>

유지 관리를 적용하여 CA 인증서를 업데이트하려면 다음 단계를 수행합니다.

------
#### [ Console ]

**유지 관리를 적용하여 CA 인증서를 업데이트하는 방법**

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

1. 탐색 창에서 **인증서 업데이트**를 선택합니다.  
![\[인증서 교체 탐색 창 옵션\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-certupdate.png)

   **인증서 업데이트가 필요한 데이터베이스** 페이지가 표시됩니다.  
![\[데이터베이스의 CA 인증서 업데이트\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-update-multiple.png)
**참고**  
이 페이지에는 현재 AWS 리전의 DB 인스턴스 및 클러스터만 표시됩니다. 둘 이상의 AWS 리전에 데이터베이스가 있는 경우 각 AWS 리전에서 이 페이지를 확인하여 이전 SSL/TLS 인증서가 있는 모든 DB 인스턴스를 확인합니다.

1. 업데이트할 DB 인스턴스 또는 다중 AZ DB 클러스터를 선택합니다.

   **일정**을 선택하여 다음 유지 관리 기간에 따른 인증서 교체를 예약할 수 있습니다. **지금 적용**을 선택하여 즉시 교체를 적용합니다.
**중요**  
인증서 만료 후 연결 문제가 발생하면 **지금 적용** 옵션을 사용합니다.

1. 

   1. **일정**을 선택하면 CA 인증서 교체를 확인하라는 메시지가 표시됩니다. 이 메시지에는 예약된 업데이트 기간도 표시됩니다.  
![\[인증서 교체 확인\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-confirm-schedule.png)

   1. **지금 적용**을 선택하면 CA 인증서 교체를 확인하라는 메시지가 표시됩니다.  
![\[인증서 교체 확인\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-confirm-now.png)
**중요**  
데이터베이스에서 CA 인증서 교체를 예약하기 전에 SSL/TLS 및 서버 인증서를 사용하여 연결하는 모든 클라이언트 애플리케이션을 업데이트합니다. 이러한 업데이트는 DB 엔진에만 적용됩니다. 이러한 클라이언트 애플리케이션을 업데이트한 후 CA 인증서 교체를 확인할 수 있습니다.

   계속하려면 확인란을 선택한 다음 **확인**선택합니다.

1. 업데이트할 각 DB 인스턴스 및 클러스터에 대해 3단계와 4단계를 반복합니다.

------

## 자동 서버 인증서 교체
<a name="UsingWithRDS.SSL-certificate-rotation-server-cert-rotation"></a>

루트 CA에서 자동 서버 인증서 교체를 지원하는 경우 RDS는 DB 서버 인증서의 교체를 자동으로 처리합니다. RDS는 자동 교체에 동일한 루트 CA를 사용하므로 사용자가 새 CA 번들을 다운로드할 필요가 없습니다. [인증 기관](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities) 섹션을 참조하세요.

DB 서버 인증서의 교체 및 유효 기간은 다음의 DB 엔진에 따라 다릅니다.
+ DB 엔진이 재시작 없는 교체를 지원하는 경우 RDS는 사용자가 별도의 조치를 취하지 않아도 DB 서버 인증서를 자동으로 교체합니다. RDS는 사용자가 선호하는 유지 관리 기간 내에 DB 서버 인증서의 유효 기간이 반쯤 남은 시점에서 DB 서버 인증서 교체를 시도합니다. 새 DB 서버 인증서는 12개월 동안 유효합니다.
+ DB 엔진이 재시작 없이 교체를 지원하지 않는 경우, Amazon RDS는 Describe-pending-maintenance-actions API를 통해 인증서의 수명 주기 또는 만료 최소 3개월 전에 `server-certificate-rotation` 보류 중인 유지 관리 작업을 표시합니다. apply-pending-maintenance-action API를 사용하여 교체를 적용할 수 있습니다. 새 DB 서버 인증서는 36개월 동안 유효합니다.

[ describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 사용하고 `SupportsCertificateRotationWithoutRestart` 플래그를 검사하여 DB 엔진 버전이 재시작 없이 인증서를 교체하는 기능을 지원하는지 파악합니다. 자세한 내용은 섹션을 참조하세요[데이터베이스의 CA 설정](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities.Selection) 

## 트러스트 스토어로 인증서를 가져오기 위한 샘플 스크립트
<a name="UsingWithRDS.SSL-certificate-rotation-sample-script"></a>

다음은 인증서 번들을 트러스트 스토어로 가져오는 샘플 셸 스크립트입니다.

각 샘플 셸 스크립트는 Java Devopment Kit(JDK)의 일부인 keytool을 사용합니다. Docker 설치에 대한 자세한 내용은 [Docker 설치 안내서](https://docs.oracle.com/en/java/javase/17/install/overview-jdk-installation.html)를 참조하세요.

------
#### [ Linux ]

다음은 Linux 운영 체제에서 트러스트 스토어로 인증서 번들을 가져오는 샘플 셸 스크립트입니다.

```
mydir=tmp/certs
if [ ! -e "${mydir}" ]
then
mkdir -p "${mydir}"
fi truststore=${mydir}/rds-truststore.jks storepassword=changeit

curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem"> ${mydir}/global-bundle.pem
awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n+1 ".pem"}' < ${mydir}/global-bundle.pem

for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
  echo "Importing $alias"
  keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
  rm $CERT
done

rm ${mydir}/global-bundle.pem

echo "Trust store content is: "

keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias 
do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
   echo " Certificate ${alias} expires in '$expiry'" 
done
```

------
#### [ macOS ]

다음은 macOS에서 트러스트 스토어로 인증서 번들을 가져오는 샘플 셸 스크립트입니다.

```
mydir=tmp/certs
if [ ! -e "${mydir}" ]
then
mkdir -p "${mydir}"
fi truststore=${mydir}/rds-truststore.jks storepassword=changeit

curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem"> ${mydir}/global-bundle.pem
split -p "-----BEGIN CERTIFICATE-----" ${mydir}/global-bundle.pem rds-ca-

for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
  echo "Importing $alias"
  keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
  rm $CERT
done

rm ${mydir}/global-bundle.pem

echo "Trust store content is: "

keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias 
do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
   echo " Certificate ${alias} expires in '$expiry'" 
done
```

------