Amazon EKS의 암호화 모범 사례 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EKS의 암호화 모범 사례

Amazon Elastic Kubernetes Service(Amazon EKS)를 사용하면 자체 Kubernetes 컨트롤 플레인 또는 노드를 설치하거나 유지 관리할 필요 AWS 없이에서 Kubernetes를 실행할 수 있습니다. Kubernetes에서 시크릿은 사용자 인증서, 암호, API 키 등의 민감한 정보를 관리하는 데 도움이 됩니다. 기본적으로 이러한 시크릿은 etcd라는 API 서버의 기본 데이터 스토어에 암호화되지 않은 상태로 저장됩니다. Amazon EKS에서 etcd 노드의 Amazon Elastic Block Store(Amazon EBS) 볼륨은 Amazon EBS 암호화로 암호화됩니다. API 액세스 또는 etcd에 대한 액세스 권한이 있는 모든 사용자는 시크릿을 검색하거나 수정할 수 있습니다. 또한 네임스페이스에 포드를 생성할 권한이 있는 사람은 누구나 해당 액세스 권한을 사용하여 네임스페이스에 있는 모든 시크릿을 읽을 수 있습니다. 관리 AWS KMS keys형 키 또는 고객 AWS 관리형 키를 사용하여 Amazon EKS에서 저장 시 이러한 보안 암호를 암호화할 수 있습니다. etcd를 사용하는 또 다른 접근 방식은 AWS Secrets and Config Provider(ASCP)(GitHub 리포지토리)를 사용하는 것입니다. ASCP는 IAM 및 리소스 기반 정책과 통합되어 클러스터 내 특정 Kubernetes 포드 내에서만 시크릿에 대한 액세스를 제한합니다.

Kubernetes에서 다음 AWS 스토리지 서비스를 사용할 수 있습니다.

  • Amazon EBS의 경우 트리 내 스토리지 드라이버 또는 Amazon EBS CSI 드라이버를 사용할 수 있습니다. 둘 다 볼륨 암호화와 고객 관리형 키 제공을 위한 파라미터를 포함합니다.

  • Amazon Elastic File System(Amazon EFS)의 경우 동적 및 정적 프로비저닝을 모두 지원하는 Amazon EFS CSI 드라이버를 사용할 수 있습니다.

이 서비스에 대해 다음 암호화 모범 사례를 고려하세요.

  • 기본적으로 암호화되지 않은 시크릿 객체를 저장하는 etcd를 사용하는 경우 시크릿을 보호하려면 다음을 수행하세요.

    • Encrypt secret data at rest(쿠버네티스 문서)

    • Kubernetes 보안 암호의 봉투 암호화 AWS KMS 에 사용합니다. 이렇게 하면 고유한 데이터 키로 보안 암호를 암호화할 수 있습니다. 키 암호화 키를 사용하여 AWS KMS 데이터 키를 암호화할 수 있습니다. 반복 일정에 따라 키 암호화 키를 자동으로 교체할 수 있습니다. Kubernetes용 AWS KMS 플러그인을 사용하면 모든 Kubernetes 보안 암호가 사이퍼텍스etcd트에 저장됩니다. Kubernetes API 서버에서만 암호를 해독할 수 있습니다. 자세한 내용은 심층 방어를 위한 Amazon EKS 암호화 공급자 지원 사용기존 클러스터 AWS KMS 에서를 사용하여 Kubernetes 보안 암호 암호화를 참조하세요.

    • 시크릿 읽기 및 쓰기를 제한하는 역할 기반 액세스 제어(RBAC) 규칙을 통해 권한 부여를 활성화하거나 구성합니다. 새 시크릿을 생성하거나 기존 시크릿을 교체할 수 있는 권한을 제한합니다. 자세한 내용은 인가 개요(쿠버네티스 문서)를 참조하세요.

    • 포드에 여러 컨테이너를 정의하고 있는데 그 중 하나의 컨테이너만 시크릿에 액세스해야 하는 경우, 다른 컨테이너가 해당 시크릿에 액세스할 수 없도록 볼륨 마운트를 정의합니다. 볼륨으로 탑재된 시크릿은 tmpfs 볼륨으로 인스턴스화되고 포드 삭제 시 노드에서 자동으로 제거됩니다. 환경 변수를 사용할 수도 있지만 환경 변수 값이 로그에 나타날 수 있으므로 이 방법은 사용하지 않는 것이 좋습니다. 자세한 내용은 시크릿(Secret)(쿠버네티스 문서)을 참조하세요.

    • 가능하면 네임스페이스 내의 시크릿에 대한 watchlist 요청 액세스 권한을 부여하지 마세요. Kubernetes API에서 이러한 요청은 클라이언트가 해당 네임스페이스에 있는 모든 시크릿 값을 검사할 수 있게 하기 때문에 강력합니다.

    • 읽기 전용 액세스를 포함하여 클러스터 관리자만 etcd에 액세스하도록 허용합니다.

    • etcd 인스턴스가 여러 개 있는 경우 etcdetcd 피어 간 통신에 TLS를 사용하는지 확인하세요.

  • ASCP를 사용하는 경우 다음을 수행하여 시크릿을 보호합니다.

  • 환경 변수로 인한 데이터 유출 위험을 완화하려면 AWS Secrets Manager 와 Config Provider for Secret Store CSI Driver(GitHub)를 사용하는 것이 좋습니다. 이 드라이버를 사용하면 Secrets Manager에 저장된 시크릿과 Parameter Store에 저장된 파라미터를 Kubernetes 포드에 탑재된 파일로 표시할 수 있습니다.

    참고

    AWS Fargate 는 지원되지 않습니다.

  • Amazon CloudWatch 지표 필터 및 경보를 생성하여 시크릿 삭제 또는 삭제 대기 기간 동안 시크릿 버전 사용 등 관리자가 지정한 작업에 대한 알림을 보냅니다. 자세한 내용은 이상 탐지를 기반으로 경보 생성을 참조하세요.