이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
기존 클러스터에서 {aws} KMS를 사용하여 Kubernetes 보안 암호 암호화
비밀 암호화
-
대칭
-
데이터 암호화 및 해독 가능
-
클러스터와 같은 AWS 리전에 생성됨
-
KMS 키가 다른 계정에서 생성된 경우 IAM 보안 주체는 KMS 키에 액세스할 수 있어야 합니다.
자세한 내용은 AWS 키 관리 서비스 개발자 가이드에서 다른 계정의 IAM 주체가 KMS 키를 사용하도록 허용하기를 참조하세요.
주의
비밀 암호화를 사용 설정한 후에는 사용 중지할 수 없습니다. 이 작업은 되돌릴 수 없습니다.
- eksctl
-
다음 두 가지 방법으로 암호화를 활성화할 수 있습니다.
-
단일 명령으로 클러스터에 암호화를 추가합니다.
비밀을 자동으로 다시 암호화하려면 다음 명령을 실행합니다.
eksctl utils enable-secrets-encryption \ --cluster my-cluster \ --key-arn arn:aws:kms:region-code:account:key/key
비밀을 자동으로 다시 암호화하는 것을 옵트아웃하려면 다음 명령을 실행합니다.
eksctl utils enable-secrets-encryption --cluster my-cluster \ --key-arn arn:aws:kms:region-code:account:key/key \ --encrypt-existing-secrets=false
-
kms-cluster.yaml
파일을 사용하여 클러스터에 암호화를 추가합니다.apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code secretsEncryption: keyARN: arn:aws:kms:region-code:account:key/key
비밀을 자동으로 다시 암호화하려면 다음 명령을 실행합니다.
eksctl utils enable-secrets-encryption -f kms-cluster.yaml
비밀을 자동으로 다시 암호화하는 것을 옵트아웃하려면 다음 명령을 실행합니다.
eksctl utils enable-secrets-encryption -f kms-cluster.yaml --encrypt-existing-secrets=false
-
- AWS Management Console
-
-
Amazon EKS 콘솔
을 엽니다. -
KMS 암호화를 추가하려는 클러스터를 선택합니다.
-
개요 탭을 선택합니다(기본적으로 선택되어 있음).
-
아래로 스크롤하여 비밀 암호화 섹션으로 이동하고 활성화를 선택합니다.
-
드롭다운 목록에서 키를 선택하고 활성화 버튼을 선택합니다. 나열된 키가 없으면 먼저 키를 생성해야 합니다. 자세한 내용은 키 생성을 참조하세요.
-
확인 버튼을 선택하고 선택한 키를 사용합니다.
-
- AWS CLI
-
-
다음 AWS CLI 명령을 사용하여 비밀 암호화
구성을 클러스터와 연결합니다. 예제 값
을 사용자의 값으로 바꿉니다.aws eks associate-encryption-config \ --cluster-name my-cluster \ --encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"arn:aws:kms:region-code:account:key/key"}}]'
예제 출력은 다음과 같습니다.
{ "update": { "id": "3141b835-8103-423a-8e68-12c2521ffa4d", "status": "InProgress", "type": "AssociateEncryptionConfig", "params": [ { "type": "EncryptionConfig", "value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code:account:key/key\"}}]" } ], "createdAt": 1613754188.734, "errors": [] } }
-
다음 명령을 사용하여 암호화 업데이트의 상태를 모니터링할 수 있습니다. 이전 출력에서 반환된 특정
cluster name
및update ID
를 사용합니다.Successful
상태가 표시되면 업데이트가 완료됩니다.aws eks describe-update \ --region region-code \ --name my-cluster \ --update-id 3141b835-8103-423a-8e68-12c2521ffa4d
예제 출력은 다음과 같습니다.
{ "update": { "id": "3141b835-8103-423a-8e68-12c2521ffa4d", "status": "Successful", "type": "AssociateEncryptionConfig", "params": [ { "type": "EncryptionConfig", "value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code:account:key/key\"}}]" } ], "createdAt": 1613754188.734>, "errors": [] } }
-
클러스터에서 암호화가 활성화되었는지 확인하려면
describe-cluster
명령를 실행합니다. 응답에는EncryptionConfig
문자열이 포함됩니다.aws eks describe-cluster --region region-code --name my-cluster
-
클러스터에서 암호화를 사용 설정한 후에는 기존 비밀을 모두 새 키로 암호화해야 합니다.
참고
eksctl
을 사용하면 비밀을 자동으로 다시 암호화하는 것을 옵트아웃하는 경우에만 다음 명령을 실행해야 합니다.
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - kms-encryption-timestamp="time value"
주의
참고
기본적으로 create-key
명령은 AWS KMS 작업 및 리소스에 대한 액세스 권한을 계정 루트 관리자에게 부여하는 키 정책으로 대칭 암호화 KMS 키를 생성합니다. 권한을 축소하려면 create-cluster
API를 호출할 보안 주체의 정책에서 kms:DescribeKey
및 kms:CreateGrant
작업이 허용되는지 확인합니다.
KMS 봉투 암호화를 사용하는 클러스터의 경우 kms:CreateGrant
권한이 필요합니다. 조건 kms:GrantIsForAWSResource
는 CreateCluster 작업에 대해 지원되지 않으며, CreateCluster를 수행하는 사용자에 대한 kms:CreateGrant
권한을 제어하기 위해 KMS 정책을 사용해서는 안 됩니다.