설명
EKS는 모든 클러스터의 etcd 저장 디스크를 암호화합니다. Kubernetes 1.28 이상에서는 모든 Kubernetes API 데이터를 AWS 소유 키로 기본 봉투 암호화합니다. 따라서 EncryptionConfig가 없다는 이유만으로 클러스터 데이터가 평문으로 저장된다고 볼 수 없습니다.
고객이 키 정책과 수명 주기를 관리해야 한다면 고객 관리형 KMS 키를 구성하세요. 이 설정은 노드나 EBS 볼륨의 데이터를 암호화하는 설정과 별개입니다.
잠재적 영향
고객 관리형 키가 필요한 환경에서는 기본 키만 사용하면 조직의 키 통제 요구사항을 충족하지 못할 수 있습니다. 반대로 사용 중인 키를 삭제하거나 필요한 권한을 제거하면 클러스터 운영과 데이터 접근이 중단될 수 있습니다. 암호화가 Kubernetes 접근 권한을 대신하지는 않습니다.
해결 방법
클러스터 버전과 실제 암호화 상태를 확인하세요. 고객 관리형 키가 필요하면 같은 리전의 적절한 대칭 KMS 키와 권한을 준비하고 EncryptionConfig의 Provider.KeyArn과 Resources: [secrets]를 지정하세요. Kubernetes 1.28 이상에서는 이 리소스 목록과 관계없이 모든 API 데이터가 봉투 암호화됩니다. 기존 클러스터는 지원되는 변경 절차와 변경 세트를 확인하고 키의 비활성화·삭제를 통제하세요.
예시
현재 지원되는 Kubernetes 버전과 클러스터 역할, 보안 그룹, 서로 다른 가용 영역의 서브넷을 입력합니다. 첫 예시도 Kubernetes 1.28 이상에서는 기본 봉투 암호화를 사용합니다. 두 번째는 조직에서 요구하는 고객 관리형 키를 지정하는 예시입니다.
AWS 소유 키 사용
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
KubernetesVersion:
Type: String
ClusterRoleArn:
Type: String
ClusterSecurityGroups:
Type: List<AWS::EC2::SecurityGroup::Id>
ClusterSubnets:
Type: List<AWS::EC2::Subnet::Id>
Resources:
MyEKSClusterA:
Type: AWS::EKS::Cluster
Properties:
Name: dev
Version: !Ref KubernetesVersion
RoleArn: !Ref ClusterRoleArn
ResourcesVpcConfig:
SecurityGroupIds: !Ref ClusterSecurityGroups
SubnetIds: !Ref ClusterSubnets
고객 관리형 키 지정
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
EncryptionKeyArn:
Type: String
KubernetesVersion:
Type: String
ClusterRoleArn:
Type: String
ClusterSecurityGroups:
Type: List<AWS::EC2::SecurityGroup::Id>
ClusterSubnets:
Type: List<AWS::EC2::Subnet::Id>
Resources:
MyEKSClusterA:
Type: AWS::EKS::Cluster
Properties:
Name: dev
Version: !Ref KubernetesVersion
RoleArn: !Ref ClusterRoleArn
ResourcesVpcConfig:
SecurityGroupIds: !Ref ClusterSecurityGroups
SubnetIds: !Ref ClusterSubnets
EncryptionConfig:
- Provider:
KeyArn: !Ref EncryptionKeyArn
Resources:
- secrets