이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
기존 클러스터에서 AWS KMS를 사용하여 Kubernetes 비밀 암호화
비밀 암호화를 사용 설정하는 경우 Kubernetes 비밀은 선택한 AWS KMS key 키를 사용하여 암호화됩니다. KMS 키는 다음 조건을 충족해야 합니다.
자세한 내용은 AWS Key Management Service 개발자 안내서의 다른 계정의 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
-
- AWS CLI
-
-
다음 AWS CLI 명령을 사용하여 비밀 암호화(secrets encryption) 구성을 클러스터와 연결합니다. example values
을 사용자의 값으로 교체합니다.
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
"
기존 클러스터에 대해 비밀 암호화를 사용 설정하고 사용하는 KMS 키가 삭제된 경우에는 클러스터 복구 경로가 없습니다. KMS 키를 삭제하면 클러스터가 영구적으로 성능 저하 상태가 됩니다. 자세한 내용은 AWS KMS 키를 참조하세요.
기본적으로 create-key
명령은 AWS KMS 작업 및 리소스에 대한 액세스 권한을 계정 루트 관리자에게 부여하는 키 정책으로 대칭 암호화 KMS 키를 생성합니다. 권한을 축소하려면 create-cluster
API를 호출할 보안 주체의 정책에서 kms:DescribeKey
및 kms:CreateGrant
작업이 허용되는지 확인합니다.
KMS 봉투 암호화를 사용하는 클러스터의 경우 kms:CreateGrant
권한이 필요합니다. 조건 kms:GrantIsForAWSResource
는 CreateCluster 작업에 대해 지원되지 않으며, CreateCluster를 수행하는 사용자에 대한 kms:CreateGrant
권한을 제어하기 위해 KMS 정책을 사용해서는 안 됩니다.