EKS 암호화 키 설정 점검

EKS의 기본 암호화와 고객 관리형 KMS 키 요구사항을 구분하세요.

설명

Kubernetes Secret에는 토큰, 비밀번호, 인증서 같은 민감한 값이 저장될 수 있습니다. EKS는 모든 클러스터의 etcd 저장 디스크를 암호화하며, Kubernetes 1.28 이상에서는 모든 API 데이터를 AWS 소유 키로 기본 봉투 암호화합니다. 따라서 encryption_config가 없다는 이유만으로 데이터가 평문으로 저장된다고 볼 수 없습니다.

조직이 키 정책과 수명 주기를 직접 관리해야 한다면 고객 관리형 KMS 키를 구성하세요. 이 설정은 노드와 EBS 볼륨의 암호화와 별개입니다.

잠재적 영향

기본 키만 사용하면 고객 관리형 키를 요구하는 조직의 기준을 충족하지 못할 수 있습니다. 사용 중인 키를 삭제하거나 필요한 권한을 제거하면 클러스터 운영과 데이터 접근이 중단될 수 있습니다. 암호화가 Kubernetes 접근 권한을 대신하지는 않습니다.

해결 방법

  • 클러스터 버전과 실제 암호화 상태, 조직의 키 관리 요구사항을 확인하세요.
  • 고객 관리형 키가 필요하면 같은 리전의 적절한 대칭 KMS 키와 권한을 준비하고 encryption_config에 키 ARN과 resources = ["secrets"]를 지정하세요. Kubernetes 1.28 이상에서는 이 목록과 관계없이 모든 API 데이터가 기본 봉투 암호화됩니다.
  • 기존 클러스터는 지원되는 업데이트 절차와 Terraform 계획을 확인하고, 키의 비활성화·삭제를 통제하세요.

예시

암호화 설정만 보여 주는 발췌입니다. 필요한 클러스터 역할과 VPC·서브넷 설정은 별도로 구성하고, 키 변수에는 실제 사용할 KMS 키 ARN을 입력하세요.

기본 암호화

hcl
resource "aws_eks_cluster" "eks_cluster" {
  name = var.cluster_name
}

Kubernetes 1.28 이상에서는 별도의 고객 관리형 키 없이도 기본 봉투 암호화를 사용합니다.

고객 관리형 키 지정

hcl
resource "aws_eks_cluster" "eks_cluster" {
  name = var.cluster_name

  encryption_config {
    resources = ["secrets"]

    provider {
      key_arn = var.eks_encryption_key_arn
    }
  }
}

조직에서 요구하는 키를 명시합니다. 키 정책과 클러스터 접근 권한도 함께 관리해야 합니다.

참조