기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터 암호화 및 보안 암호 관리
저장 시 암호화
Kubernetes에는 EBS, EFS EFS및 FSx for Lustre라는 세 가지 AWS 네이티브 스토리지 옵션이 있습니다. 세 가지 모두 서비스 관리형 키 또는 고객 마스터 키(CMK)를 사용하여 저장 시 암호화를 제공합니다. EBS의 경우 트리 내 스토리지 드라이버 또는 EBS CSI 드라이버mountOptions
에 tls
파라미터를 추가하여 전송 암호화를 추가할 수 있습니다.
apiVersion: v1 kind: PersistentVolume metadata: name: efs-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: efs-sc mountOptions: - tls csi: driver: efs.csi.aws.com volumeHandle: <file_system_id>
FSx CSI 드라이버
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: fsx-sc provisioner: fsx.csi.aws.com parameters: subnetId: subnet-056da83524edbe641 securityGroupIds: sg-086f61ea73388fb6b deploymentType: PERSISTENT_1 kmsKeyId: <kms_arn>
중요
2020년 5월 28일부터 EKS Fargate 포드의 임시 볼륨에 기록된 모든 데이터는 기본적으로 업계 표준 AES-256 암호화 알고리즘을 사용하여 암호화됩니다. 암호화 및 복호화는 서비스에서 원활하게 처리되므로 애플리케이션을 수정할 필요가 없습니다.
저장 데이터 암호화
저장 데이터를 암호화하는 것이 모범 사례로 간주됩니다. 암호화가 필요한지 확실하지 않은 경우 데이터를 암호화합니다.
CMKs 주기적으로 교체
CMKs 자동으로 교체하도록 KMS를 구성합니다. 이렇게 하면 이전 키를 무기한 저장하면서 1년에 한 번 키를 교체하여 데이터를 해독할 수 있습니다. 자세한 내용은 고객 마스터 키 교체를 참조하세요.
EFS 액세스 포인트를 사용하여 공유 데이터 세트에 대한 액세스 간소화
POSIX 파일 권한이 다른 공유 데이터 세트가 있거나 다른 탑재 지점을 생성하여 공유 파일 시스템의 일부에 대한 액세스를 제한하려는 경우 EFS 액세스 포인트를 사용하는 것이 좋습니다. 액세스 포인트 작업에 대한 자세한 내용은 https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html 참조하십시오. 오늘 액세스 포인트(AP)를 사용하려면 PV volumeHandle
파라미터에서 AP를 참조해야 합니다.
중요
2021년 3월 23일부터 EFS CSI 드라이버는 EFS 액세스 포인트의 동적 프로비저닝을 지원합니다. 액세스 포인트는 여러 포드 간에 파일 시스템을 더 쉽게 공유할 수 있는 EFS 파일 시스템의 애플리케이션별 진입점입니다. 각 EFS 파일 시스템은 최대 120개의 PVs. 자세한 내용은 Amazon EFS CSI 동적 프로비저닝 소개
보안 암호 관리
Kubernetes 보안 암호는 사용자 인증서, 암호 또는 API 키와 같은 민감한 정보를 저장하는 데 사용됩니다. 이러한 문자열은 etcd에서 base64 인코딩 문자열로 유지됩니다. EKS에서 etcd 노드의 EBS 볼륨은 EBS 암호화로 암호화됩니다. 포드는의 보안 암호를 참조하여 Kubernetes 보안 암호 객체를 검색할 수 있습니다podSpec
. 이러한 보안 암호는 환경 변수에 매핑하거나 볼륨으로 마운트할 수 있습니다. 보안 암호 생성에 대한 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/secret/
주의
특정 네임스페이스의 보안 암호는 보안 암호 네임스페이스의 모든 포드에서 참조할 수 있습니다.
주의
노드 권한 부여자를 사용하면 Kubelet이 노드에 마운트된 모든 보안 암호를 읽을 수 있습니다.
Kubernetes 보안 암호의 봉투 암호화에 AWS KMS 사용
이렇게 하면 고유한 데이터 암호화 키(DEK)를 사용하여 보안 암호를 암호화할 수 있습니다. 그런 다음 DEK는 반복 일정에 따라 자동으로 교체될 수 있는 AWS KMS의 키 암호화 키(KEK)를 사용하여 암호화됩니다. Kubernetes용 KMS 플러그인을 사용하면 모든 Kubernetes 보안 암호가 일반 텍스트 대신 사이퍼텍스트로 etcd에 저장되며 Kubernetes API 서버에서만 복호화할 수 있습니다. 자세한 내용은 심층 방어를 위한 EKS 암호화 공급자 지원 사용을 참조하세요.
Kubernetes 보안 암호 사용 감사
EKS에서 감사 로깅을 켜고 CloudWatch 지표 필터 및 경보를 생성하여 보안 암호가 사용될 때 알려줍니다(선택 사항). 다음은 Kubernetes 감사 로그에 대한 지표 필터의 예입니다{($.verb="get") && ($.objectRef.resource="secret")}
. CloudWatch Log Insights에서 다음 쿼리를 사용할 수도 있습니다.
fields @timestamp, @message | sort @timestamp desc | limit 100 | stats count(*) by objectRef.name as secret | filter verb="get" and objectRef.resource="secrets"
위 쿼리에는 특정 기간 내에 보안 암호에 액세스한 횟수가 표시됩니다.
fields @timestamp, @message | sort @timestamp desc | limit 100 | filter verb="get" and objectRef.resource="secrets" | display objectRef.namespace, objectRef.name, user.username, responseStatus.code
이 쿼리는 보안 암호 및 응답 코드에 액세스하려고 시도한 사용자의 네임스페이스 및 사용자 이름과 함께 보안 암호를 표시합니다.
보안 암호를 주기적으로 교체
Kubernetes는 보안 암호를 자동으로 교체하지 않습니다. 보안 암호를 교체해야 하는 경우 볼트 또는 AWS Secrets Manager와 같은 외부 보안 암호 저장소를 사용하는 것이 좋습니다.
다른 애플리케이션에서 보안 암호를 격리하는 방법으로 별도의 네임스페이스 사용
네임스페이스의 애플리케이션 간에 공유할 수 없는 보안 암호가 있는 경우 해당 애플리케이션에 대해 별도의 네임스페이스를 생성합니다.
환경 변수 대신 볼륨 마운트 사용
환경 변수의 값은 의도하지 않게 로그에 나타날 수 있습니다. 볼륨으로 마운트된 보안 암호는 포드가 삭제될 때 노드에서 자동으로 제거되는 tmpfs 볼륨(RAM 지원 파일 시스템)으로 인스턴스화됩니다.
외부 보안 암호 공급자 사용
AWS Secrets Manager
외부 보안 암호 스토어의 사용이 증가함에 따라는 이를 Kubernetes와 통합해야 합니다. 보안 암호 스토어 CSI 드라이버
참고
보안 암호 스토어 CSI 드라이버가 보안 암호를 가져와야 하는 경우 보안 암호를 참조하는 포드에 할당된 IRSA 역할을 수임합니다. 이 작업의 코드는 여기에서
AWS Secrets & Configuration Provider(ASCP)에 대한 자세한 내용은 다음 리소스를 참조하세요.
외부 보안 암호