SSL/TLS를 사용해 DB 인스턴스 또는 클러스터로의 연결 암호화
SSL/TLS를 사용해 DB 인스턴스 또는 클러스터로의 연결 암호화
애플리케이션에서 Secure Socket Layer(SSL) 또는 Transport Layer Security(TLS)를 사용해 Db2, MariaDB, Microsoft SQL Server, MySQL, Oracle, PostgreSQL을 실행하는 데이터베이스로의 연결을 암호화할 수 있어요.
출처: 문서
본문
애플리케이션에서 Secure Socket Layer(SSL) 또는 Transport Layer Security(TLS)를 사용해 Db2, MariaDB, Microsoft SQL Server, MySQL, Oracle, PostgreSQL을 실행하는 데이터베이스로의 연결을 암호화할 수 있어요.
SSL/TLS 연결은 클라이언트와 DB 인스턴스 또는 클러스터 사이를 오가는 데이터를 암호화해 보안 계층을 제공해요. 선택적으로 SSL/TLS 연결은 데이터베이스에 설치된 서버 인증서를 검증해 서버 ID 확인(server identity verification)을 수행할 수 있어요. 서버 ID 확인을 요구하려면 일반적으로 다음 과정을 따르면 돼요.
- 데이터베이스의 DB 서버 인증서에 서명하는 인증 기관(CA)을 선택해요. 인증 기관에 대한 자세한 내용은 "인증 기관(Certificate authorities)" 섹션을 참고하세요.
- 데이터베이스에 연결할 때 사용할 인증서 번들(certificate bundle)을 다운로드해요. 인증서 번들을 다운로드하려면 "AWS 리전별 인증서 번들" 섹션을 참고하세요.
참고
모든 인증서는 SSL/TLS 연결을 통해서만 다운로드할 수 있어요.
- DB 엔진의 SSL/TLS 연결 구현 프로세스에 따라 데이터베이스에 연결해요. 각 DB 엔진에는 고유한 SSL/TLS 구현 프로세스가 있어요. 데이터베이스에서 SSL/TLS를 구현하는 방법을 배우려면 DB 엔진에 해당하는 링크를 따라가세요.
- Amazon RDS for Db2 DB 인스턴스에서 SSL/TLS 사용
- Amazon RDS에서 MariaDB DB 인스턴스의 SSL/TLS 지원
- Microsoft SQL Server DB 인스턴스에서 SSL 사용
- Amazon RDS에서 MySQL DB 인스턴스의 SSL/TLS 지원
- RDS for Oracle DB 인스턴스에서 SSL 사용
- PostgreSQL DB 인스턴스에서 SSL 사용
인증 기관 (Certificate authorities)
인증 기관(CA)은 인증서 체인의 맨 위에 있는 루트 CA를 식별하는 인증서예요. CA는 각 DB 인스턴스에 설치된 DB 서버 인증서에 서명해요. DB 서버 인증서는 DB 인스턴스를 신뢰할 수 있는 서버로 식별해요.
Amazon RDS는 데이터베이스의 DB 서버 인증서에 서명하기 위해 다음 CA를 제공해요.
| 인증 기관(CA) | 설명 | CN(Common name) |
|---|---|---|
| rds-ca-rsa2048-g1 | 대부분의 AWS 리전에서 RSA 2048 개인 키 알고리즘과 SHA256 서명 알고리즘을 사용하는 CA를 사용해요. AWS GovCloud (US) 리전에서는 RSA 2048 개인 키 알고리즘과 SHA384 서명 알고리즘을 사용하는 CA를 사용해요. 이 CA는 자동 서버 인증서 회전을 지원해요. | Amazon RDS region-identifier Root CA RSA2048 G1 |
| rds-ca-rsa4096-g1 | RSA 4096 개인 키 알고리즘과 SHA384 서명 알고리즘을 사용하는 CA를 사용해요. 이 CA는 자동 서버 인증서 회전을 지원해요. | Amazon RDS region-identifier Root CA RSA4096 G1 |
| rds-ca-ecc384-g1 | ECC 384 개인 키 알고리즘과 SHA384 서명 알고리즘을 사용하는 CA를 사용해요. 이 CA는 자동 서버 인증서 회전을 지원해요. | Amazon RDS region-identifier Root CA ECC384 G1 |
참고
AWS CLI를 사용한다면 describe-certificates 명령으로 위에 나열된 인증 기관의 유효성을 확인할 수 있어요.
이 CA 인증서들은 리전 및 글로벌 인증서 번들에 포함돼요. 데이터베이스에서 rds-ca-rsa2048-g1, rds-ca-rsa4096-g1 또는 rds-ca-ecc384-g1 CA를 사용하면 RDS가 데이터베이스의 DB 서버 인증서를 관리해요. RDS는 DB 서버 인증서가 만료되기 전에 자동으로 회전해요.
데이터베이스의 CA 설정
다음 작업을 수행할 때 데이터베이스의 CA를 설정할 수 있어요.
- DB 인스턴스 또는 Multi-AZ DB 클러스터 생성 – DB 인스턴스 또는 클러스터를 생성할 때 CA를 설정할 수 있어요. 지침은 "Amazon RDS DB 인스턴스 생성" 또는 "Amazon RDS용 Multi-AZ DB 클러스터 생성" 문서를 참고하세요.
- DB 인스턴스 또는 Multi-AZ DB 클러스터 수정 – DB 인스턴스 또는 클러스터를 수정해 CA를 설정할 수 있어요. 지침은 "Amazon RDS DB 인스턴스 수정" 또는 "Amazon RDS용 Multi-AZ DB 클러스터 수정" 문서를 참고하세요.
참고
기본 CA는 rds-ca-rsa2048-g1로 설정돼 있어요. modify-certificates 명령을 사용해 AWS 계정의 기본 CA를 재정의할 수 있어요.
사용 가능한 CA는 DB 엔진과 DB 엔진 버전에 따라 달라져요. AWS Management Console을 사용하면 다음 이미지에 표시된 대로 Certificate authority(인증 기관) 설정을 사용해 CA를 선택할 수 있어요.
콘솔은 해당 DB 엔진과 DB 엔진 버전에서 사용 가능한 CA만 표시해요. AWS CLI를 사용한다면 create-db-instance 또는 modify-db-instance 명령으로 DB 인스턴스의 CA를 설정할 수 있어요. create-db-cluster 또는 modify-db-cluster 명령으로 Multi-AZ DB 클러스터의 CA를 설정할 수 있어요.
AWS CLI를 사용한다면 describe-certificates 명령으로 계정에서 사용 가능한 CA를 확인할 수 있어요. 이 명령은 각 CA의 만료일도 출력의 ValidTill에 표시해요. 특정 DB 엔진과 DB 엔진 버전에서 사용 가능한 CA는 describe-db-engine-versions 명령으로 찾을 수 있어요.
다음 예시는 기본 RDS for PostgreSQL DB 엔진 버전에서 사용 가능한 CA를 보여줘요.
aws rds describe-db-engine-versions --default-only --engine postgres
출력은 다음과 유사해요. 사용 가능한 CA는 SupportedCACertificateIdentifiers에 나열돼요. 출력은 또한 DB 엔진 버전이 재시작 없이 인증서 회전을 지원하는지 SupportsCertificateRotationWithoutRestart에 표시해요.
{
"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 서버 인증서 유효 기간
DB 서버 인증서의 유효 기간은 DB 엔진과 DB 엔진 버전에 따라 달라져요. DB 엔진 버전이 재시작 없이 인증서 회전을 지원하면 DB 서버 인증서의 유효 기간은 1년이에요. 그렇지 않으면 유효 기간은 3년이에요.
DB 서버 인증서 회전에 대한 자세한 내용은 "자동 서버 인증서 회전" 문서를 참고하세요.
DB 인스턴스의 CA 보기
콘솔의 Connectivity & security(연결 및 보안) 탭을 보면 데이터베이스의 CA에 대한 세부 정보를 볼 수 있어요. 다음 이미지와 같아요.
AWS CLI를 사용한다면 describe-db-instances 명령으로 DB 인스턴스의 CA에 대한 세부 정보를 볼 수 있어요. Multi-AZ DB 클러스터의 CA에 대한 세부 정보는 describe-db-clusters 명령으로 볼 수 있어요.
Amazon RDS용 인증서 번들 다운로드
SSL 또는 TLS로 데이터베이스에 연결할 때 DB 인스턴스는 Amazon RDS의 신뢰 인증서(trust certificate)를 요구해요. 데이터베이스를 호스팅하는 AWS 리전에 해당하는 번들을 다운로드하려면 다음 표에서 적절한 링크를 선택해요.
AWS 리전별 인증서 번들
모든 AWS 리전 및 GovCloud (US) 리전의 인증서 번들에는 다음 루트 CA 인증서가 포함돼요.
rds-ca-rsa2048-g1rds-ca-rsa4096-g1rds-ca-ecc384-g1
rds-ca-rsa4096-g1과 rds-ca-ecc384-g1 인증서는 다음 리전에서는 사용할 수 없어요.
- 아시아 태평양(뭄바이)
- 아시아 태평양(멜버른)
- 캐나다 서부(캘거리)
- 유럽(취리히)
- 유럽(스페인)
- 이스라엘(텔아비브)
애플리케이션 신뢰 저장소에는 루트 CA 인증서만 등록하면 돼요. 중간 CA 인증서를 신뢰 저장소에 등록하지 마세요. RDS가 DB 서버 인증서를 자동으로 회전할 때 연결 문제가 발생할 수 있기 때문이에요.
참고
Amazon RDS Proxy는 AWS Certificate Manager(ACM)의 인증서를 사용해요. RDS Proxy를 사용한다면 Amazon RDS 인증서를 다운로드하거나 RDS Proxy 연결을 사용하는 애플리케이션을 업데이트할 필요가 없어요. 자세한 내용은 "RDS Proxy와 TLS/SSL 사용" 문서를 참고하세요.
AWS 리전의 인증서 번들을 다운로드하려면 다음 표에서 데이터베이스를 호스팅하는 AWS 리전 링크를 선택해요.
| AWS 리전 | 인증서 번들 (PEM) | 인증서 번들 (PKCS7) |
|---|---|---|
| 상용 AWS 리전 (모든) | global-bundle.pem | global-bundle.p7b |
| 미국 동부(버지니아 북부) | us-east-1-bundle.pem | us-east-1-bundle.p7b |
| 미국 동부(오하이오) | us-east-2-bundle.pem | us-east-2-bundle.p7b |
| 미국 서부(캘리포니아 북부) | us-west-1-bundle.pem | us-west-1-bundle.p7b |
| 미국 서부(오레곤) | us-west-2-bundle.pem | us-west-2-bundle.p7b |
| 아프리카(케이프타운) | af-south-1-bundle.pem | af-south-1-bundle.p7b |
| 아시아 태평양(홍콩) | ap-east-1-bundle.pem | ap-east-1-bundle.p7b |
| 아시아 태평양(하이데라바드) | ap-south-2-bundle.pem | ap-south-2-bundle.p7b |
| 아시아 태평양(자카르타) | ap-southeast-3-bundle.pem | ap-southeast-3-bundle.p7b |
| 아시아 태평양(말레이시아) | ap-southeast-5-bundle.pem | ap-southeast-5-bundle.p7b |
| 아시아 태평양(멜버른) | ap-southeast-4-bundle.pem | ap-southeast-4-bundle.p7b |
| 아시아 태평양(뭄바이) | ap-south-1-bundle.pem | ap-south-1-bundle.p7b |
| 아시아 태평양(오사카) | ap-northeast-3-bundle.pem | ap-northeast-3-bundle.p7b |
| 아시아 태평양(태국) | ap-southeast-7-bundle.pem | ap-southeast-7-bundle.p7b |
| 아시아 태평양(도쿄) | ap-northeast-1-bundle.pem | ap-northeast-1-bundle.p7b |
| 아시아 태평양(서울) | ap-northeast-2-bundle.pem | ap-northeast-2-bundle.p7b |
| 아시아 태평양(싱가포르) | ap-southeast-1-bundle.pem | ap-southeast-1-bundle.p7b |
| 아시아 태평양(시드니) | ap-southeast-2-bundle.pem | ap-southeast-2-bundle.p7b |
| 캐나다(중부) | ca-central-1-bundle.pem | ca-central-1-bundle.p7b |
| 캐나다 서부(캘거리) | ca-west-1-bundle.pem | ca-west-1-bundle.p7b |
| 유럽(프랑크푸르트) | eu-central-1-bundle.pem | eu-central-1-bundle.p7b |
| 유럽(아일랜드) | eu-west-1-bundle.pem | eu-west-1-bundle.p7b |
| 유럽(런던) | eu-west-2-bundle.pem | eu-west-2-bundle.p7b |
| 유럽(밀라노) | eu-south-1-bundle.pem | eu-south-1-bundle.p7b |
| 유럽(파리) | eu-west-3-bundle.pem | eu-west-3-bundle.p7b |
| 유럽(스페인) | eu-south-2-bundle.pem | eu-south-2-bundle.p7b |
| 유럽(스톡홀름) | eu-north-1-bundle.pem | eu-north-1-bundle.p7b |
| 유럽(취리히) | eu-central-2-bundle.pem | eu-central-2-bundle.p7b |
| 이스라엘(텔아비브) | il-central-1-bundle.pem | il-central-1-bundle.p7b |
| 멕시코(중부) | mx-central-1-bundle.pem | mx-central-1-bundle.p7b |
| 중동(바레인) | me-south-1-bundle.pem | me-south-1-bundle.p7b |
| 중동(UAE) | me-central-1-bundle.pem | me-central-1-bundle.p7b |
| 남아메리카(상파울루) | sa-east-1-bundle.pem | sa-east-1-bundle.p7b |
| AWS GovCloud (US) 리전 (모든) | (GovCloud 전용 번들) | (GovCloud 전용 번들) |