GKE on AWS는 AWS 키 관리 서비스(KMS)를 사용하여 EBS 볼륨을 암호화합니다. GKE on AWS 1.7 이상은 고객 관리 고객 마스터 키(CMK)로 볼륨 암호화를 지원합니다. GKE on AWS 1.6.x 이하 버전은 AWS 관리 고객 마스터 키만 지원합니다.
이 주제에서는 볼륨을 암호화하도록 고객 관리 CMK를 설정하는 방법을 설명합니다. 고객 관리 CMK를 설정하지 않으면 GKE on AWS는 기본적으로 AWS 관리 CMK를 사용합니다.
개요
GKE on AWS 구성요소는 고객 관리 CMK의 암호화된 볼륨을 지원합니다.
- 배스천 호스트 루트 볼륨
- 관리형 서비스 루트 볼륨
- 관리형 서비스 etcd 데이터 볼륨
- 사용자 클러스터 제어 영역 루트 볼륨
- 사용자 클러스터 제어 영역 etcd 데이터 볼륨
- 사용자 클러스터 노드 루트 볼륨
관리형 서비스, 클러스터, 노드 풀 구성에서 키를 지정합니다.
기본 요건
GKE on AWS 루트 볼륨의 고객 관리 CMK를 사용하려면 다음이 필요합니다.
- AWS KMS 키 정책을 만들거나 사용할 수 있는 권한입니다. 자세한 내용은 AWS KMS에서 키 정책 사용을 참조하세요.
키 정책 만들기
AWS KMS 키에는 GKE on AWS가 고객 관리 CMK로 암호화된 볼륨을 만들고 읽을 수 있는 키 정책이 있어야 합니다. 정책 예시는 다음 섹션에 나와 있습니다. 정책을 만들려면 다음 단계를 수행하세요.
anthos-aws
디렉터리에서terraform
을 사용하여 관리 서비스 ID를 가져옵니다.cd anthos-aws terraform output cluster_id
출력에 관리 서비스 ID가 포함됩니다. 다음 예시에서 ID는gke-12345abc
입니다.terraform output cluster_id
gke-12345abc다음 내용으로 AWS KMS 키 정책을 만듭니다.
{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_NUMBER:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow creating encrypted EBS volumes for EC2 use", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::ACCOUNT_NUMBER:role/gke-CLUSTER_ID-management", "arn:aws:iam::ACCOUNT_NUMBER:user/AWS_USER", "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "ACCOUNT_NUMBER", "kms:ViaService": "ec2.AWS_REGION.amazonaws.com" } } }, { "Sid": "Allow attaching encrypted EBS volumes for EC2 Use", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-management", "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-controlplane", "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "ACCOUNT_NUMBER", "kms:ViaService": "ec2.AWS_REGION.amazonaws.com" } } } ] }
다음을 바꿉니다.
ACCOUNT_NUMBER
: AWS 계정 번호입니다(예:1234567890
).CLUSTER_ID
: GKE on AWS 관리 클러스터 ID입니다(예:gke-12345678
).AWS_USER
: AWS 사용자 이름입니다.AWS_REGION
: GKE on AWS 클러스터가 실행되는 AWS 리전입니다(예:us-east1
).
고객 관리 CMK를 사용하도록 리소스 구성
이 섹션에서는 GKE on AWS 구성요소의 고객 관리 CMK를 구성하는 방법을 설명합니다. 기존 구성요소를 업그레이드하기 전에 기존 클러스터와 함께 CMK 사용을 참조하세요.
배스천 호스트 및 관리 서비스
관리형 서비스를 설정하기 전에 anthos-gke.yaml
에서 배스천 호스트 루트 볼륨, 관리형 서비스 루트 볼륨, 관리형 서비스 etcd 데이터 볼륨의 고객 관리 CMK를 구성합니다. 자세한 내용은 기존 인프라 통합 및 AWSManagementService 참조를 확인하세요.
사용자 클러스터 제어 영역 볼륨
AWSCluster 정의에서 사용자 클러스터 제어 영역과 etcd 데이터 볼륨의 고객 관리 CMK를 구성합니다. 자세한 내용은 커스텀 사용자 클러스터 만들기를 참조하세요.
사용자 클러스터 노드 루트 볼륨
AWSNodePool 정의의 사용자 클러스터 노드 루트 볼륨에 고객 관리 CMK를 구성합니다. 자세한 내용은 커스텀 사용자 클러스터 만들기를 참조하세요.
기존 클러스터와 함께 CMK 사용
다음과 같은 기존 구성요소에 고객 관리 CMK 구성을 추가할 수 있습니다.
- 배스천 호스트 루트 볼륨
- 관리형 서비스 루트 볼륨
- 사용자 클러스터 제어 영역 루트 볼륨
- 사용자 클러스터 노드 루트 볼륨
GKE on AWS는 업그레이드 또는 구성 변경 후 이 볼륨을 다시 생성합니다. 기존 구성요소에 고객 관리 CMK 구성을 추가하려면 GKE on AWS 업그레이드의 안내를 따르세요. 리소스 구성을 수정할 때 다음 필드를 수정합니다.
리소스 | 필드 |
---|---|
AWSManagementService | spec.rootVolume and spec.bastionHost.rootVolume |
AWSCluster | spec.controlPlane.rootVolume |
AWSNodePool | spec.rootVolume |
업그레이드를 완료하면 GKE on AWS가 고객 관리 CMK 볼륨이 연결된 새 리소스를 만듭니다.