AWS KMS 키 관리
AWS KMS 키 관리
Amazon RDS는 키 관리를 위해 AWS Key Management Service(AWS KMS)와 자동으로 통합돼요. Amazon RDS는 봉투 암호화(envelope encryption)를 사용해요. 봉투 암호화에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드의 "Envelope encryption" 문서를 참고하세요.
출처: 문서
본문
Amazon RDS는 키 관리를 위해 AWS Key Management Service(AWS KMS)와 자동으로 통합돼요. Amazon RDS는 봉투 암호화(envelope encryption)를 사용해요. 봉투 암호화에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드의 "Envelope encryption" 문서를 참고하세요.
DB 인스턴스를 암호화하는 데 두 가지 유형의 AWS KMS 키를 사용할 수 있어요.
- KMS 키에 대한 완전한 제어를 원한다면 고객 관리형 키(customer managed key)를 생성해야 해요. 고객 관리형 키에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드의 "Customer managed keys" 문서를 참고하세요.
- AWS 관리형 키(AWS managed keys)는 AWS KMS와 통합된 AWS 서비스가 사용자를 대신해 생성, 관리, 사용하는 계정의 KMS 키예요. 기본적으로 RDS AWS 관리형 키(
aws/rds)가 암호화에 사용돼요. RDS AWS 관리형 키는 관리, 회전, 삭제할 수 없어요. AWS 관리형 키에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드의 "AWS managed keys" 문서를 참고하세요.
Amazon RDS 암호화 DB 인스턴스에 사용되는 KMS 키를 관리하려면 AWS KMS 콘솔, AWS CLI 또는 AWS KMS API에서 AWS Key Management Service(AWS KMS)를 사용해요. AWS 관리형 키 또는 고객 관리형 키로 수행된 모든 작업의 감사 로그를 보려면 AWS CloudTrail을 사용해요. 키 회전에 대한 자세한 내용은 "AWS KMS 키 회전" 문서를 참고하세요.
고객 관리형 키 사용 권한 부여
RDS가 암호화 작업에서 고객 관리형 키를 사용할 때, RDS 리소스를 생성하거나 변경하는 사용자를 대신해 작동해요.
고객 관리형 키를 사용해 RDS 리소스를 생성하려면 사용자가 고객 관리형 키에 대해 다음 작업을 호출할 권한이 있어야 해요.
kms:CreateGrantkms:DescribeKey
이 필수 권한을 키 정책(key policy)에 지정하거나, 키 정책이 허용한다면 IAM 정책에 지정할 수 있어요.
중요
Amazon RDS 같은 관리형 서비스에서 AWS KMS 키 정책에 모든 리소스(*)에 대한 명시적 거부(explicit deny) 문을 사용할 때는 리소스를 소유한 계정을 허용하도록 조건을 지정해야 해요. 이 조건이 없으면 거부 규칙에 IAM 사용자에 대한 예외가 포함되어 있어도 작업이 실패할 수 있어요.
팁
최소 권한 원칙을 따르려면 kms:CreateGrant에 대한 전체 접근을 허용하지 마세요. 대신 kms:ViaService 조건 키를 사용해, grant가 사용자를 대신해 AWS 서비스에 의해 생성될 때만 사용자가 KMS 키에 grant를 생성할 수 있도록 허용해요.
IAM 정책을 다양한 방식으로 더 엄격하게 만들 수 있어요. 예를 들어 고객 관리형 키가 RDS에서 시작된 요청에만 사용되도록 허용하려면 kms:ViaService 조건 키를 rds. + .amazonaws.com 값과 함께 사용해요. 또한 Amazon RDS 암호화 컨텍스트의 키나 값을 고객 관리형 키를 암호화에 사용하기 위한 조건으로 사용할 수 있어요.
자세한 내용은 AWS Key Management Service 개발자 가이드의 "다른 계정의 사용자가 KMS 키를 사용하도록 허용" 및 AWS KMS의 "키 정책(Key policies)" 문서를 참고하세요.
Amazon RDS 암호화 컨텍스트
RDS가 KMS 키를 사용하거나, Amazon EBS가 RDS를 대신해 KMS 키를 사용할 때, 서비스는 암호화 컨텍스트(encryption context)를 지정해요. 암호화 컨텍스트는 AWS KMS가 데이터 무결성을 보장하는 데 사용하는 추가 인증 데이터(AAD)예요. 암호화 작업에 대해 암호화 컨텍스트가 지정되면 서비스는 복호화 작업에도 동일한 암호화 컨텍스트를 지정해야 해요. 그렇지 않으면 복호화가 실패해요. 암호화 컨텍스트는 특정 KMS 키가 사용된 이유를 이해하는 데 도움이 되도록 AWS CloudTrail 로그에도 기록돼요. CloudTrail 로그에는 KMS 키 사용을 설명하는 많은 항목이 포함될 수 있지만, 각 로그 항목의 암호화 컨텍스트는 해당 특정 사용의 이유를 파악하는 데 도움이 될 수 있어요.
최소한 Amazon RDS는 항상 암호화 컨텍스트에 DB 인스턴스 ID를 사용해요. 다음은 JSON 형식의 예시예요.
{ "aws:rds:db-id": "db-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }
이 암호화 컨텍스트는 KMS 키가 사용된 DB 인스턴스를 식별하는 데 도움이 될 수 있어요.
KMS 키가 특정 DB 인스턴스와 특정 Amazon EBS 볼륨에 사용될 때는 암호화 컨텍스트에 DB 인스턴스 ID와 Amazon EBS 볼륨 ID가 모두 사용돼요. 다음은 JSON 형식의 예시예요.
{
"aws:rds:db-id": "db-BRG7VYS3SVIFQW7234EJQOM5RQ",
"aws:ebs:id": "vol-ad8c6542"
}