AWS 및 클라우드 지식/AWS RDS, Aurora 및 관련 지식

RDS, Aurora Cluster 내 Certificate authority (CA) 개념 및 알아두어야 할 사항

`O` 2023. 9. 5. 02:12
728x90
반응형

이 페이지에서는 TLS/SSL 접속시에 필요한 RDS 및 Aurora Cluster 내 Certificate authority (CA) 
에 대한 개념 및 이를 사용 시, 알아두어야 할 사항에 대해서 다룬다.


해당 글은 아래의 공식 Document 를 참고한다.
 
[1] https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html

 

 

RDS, Aurora Cluster 내 TLS / SSL 에 대한 지원 

 

기본적으로 RDS, Aurora Cluster Service 는 사용자들에게 보안접속을 제공하며

이를 위해서 client 에서 DB 에 접속 시, 보안 소켓 계층(SSL) 또는 전송 계층 보안(TLS) 이용 있도록 해준다.

 

이를 위해서 RDS Aurora Cluster 자체적인 Certificate authorities (CA) 라는 인증서를 이용하여 client 에서 위의 SSL 혹은 TLS 를 통한 보안접속을 시도 시, client 가 접속을 시도하는 방법은 신뢰 할 수 있는 방법임을 각 인스턴스에 존재하는 DB server certificate 에 인식시켜준다. 

 

 

RDS, Aurora Cluster 내 CA 사용시 알아 두어야 할 사항.

 

일반적으로 현재 사용자들이 기본적으로 사용하는 rds-ca-2019 까지는 4년주기로 교체를 해야했다.

즉, 2019 버전은 글을 쓰는 현재 시점 기준으로 이제 곧 지원이 만료되는 CA 다. 

 

이럴때는 사용자가 CA 를 교체 해 주어야 하며 이에 대해서는 [1] 에 교체방법이 기재되어 있다.

또한, 인스턴스 이외에 client 에서도 pem 파일 형식으로 CA 를 사용하는지 여부에 따라

크게 두가지 경우를 인지하면 좋다.

 

- 사용자들이 TLS / SSL 을 통하여 DB 에 접속하는 경우

 

이 경우에는 client 에서도 pem 파일을 교체 해 주어야 하며 이 또한 [1] 에서 다운 받아서 사용하면 된다.

물론, 현재 테스트를 해보면 client 에서 2019 버전을 이용하여 신규 버전인 rds-ca-rsa2048-g1 으로 CA 가 구성되는

인스턴스에 접속이 가능함을 아래와 같이 확인 할 수 있다.

 

-- PostgreSQL 기준 테스트

$ psql -h ssl-test.csssomh1rwkc.ap-northeast-2.rds.amazonaws.com sslrootcert=./rds-ca-2019-us-west-2.pem -U postgres -W

Password:
psql (14.2, server 13.7)
Type "help" for help

 

그러나, 나중에 다른 보안기관 등으로 부터 보안인증을 받을 시, 이러한 조합은 보안취약으로 분류될 수 있기에

기능적으로는 위의 구성이 가능해도 가능한 client 에서도 이를 교체 해 주는 것을 권장한다.

 

 

- 사용자들이 TLS / SSL  통하여 DB 접속하지 않는 경우

 

이 경우에는 RDS, Aurora Cluster 인스턴스에 있는 CA 만 교체 해 주면 된다.

 

 

마지막으로 CA 교체는 각 DB engine 별, 버전 별로 재기동필요 여부가 다르다. 

이에 대한 확인이 필요할 시에는 AWS CLI 에서 아래의 명령어를 수행하면 현재 지원되는 모든 DB engine, 버전에서

재기동 필요 유무를 확인할 수 있다.

 

aws rds describe-db-engine-versions --query 'DBEngineVersions[*].[join(`-`,[join(`:`,[to_string(Engine),EngineVersion,to_string(SupportedEngineModes[*])]),to_string(SupportsCertificateRotationWithoutRestart)])]' --output text
반응형