기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EKS용 포드 ID와 함께 AWS보안 암호 및 구성 공급자 CSI 사용
AWSSecrets and Configuration Provider와 Amazon Elastic Kubernetes Service용 Pod Identity Agent의 통합은 Amazon EKS에서 실행되는 애플리케이션에 대한 향상된 보안, 간소화된 구성 및 향상된 성능을 제공합니다. Pod Identity는 Secrets Manager에서 보안 암호를 검색하거나 AWS Systems Manager파라미터 스토어에서 파라미터를 검색할 때 Amazon EKS에 대한 IAM 인증을 간소화합니다.
Amazon EKS Pod Identity는 Amazon EKS 인터페이스를 통해 직접 권한이 설정되도록 허용하여 Kubernetes 애플리케이션의 IAM 권한을 구성하는 프로세스를 간소화하며, 이를 통해 설정 단계 수가 감소하고 Amazon EKS와 IAM 서비스 간에 전환할 필요가 없습니다. Pod Identity를 사용하면 신뢰 정책을 업데이트하지 않고도 여러 클러스터에서 단일 IAM 역할을 사용할 수 있고, 역할 세션 태그가 지원되어 더 세분화된 액세스 제어가 가능합니다. 이 접근 방식은 역할 간에 권한 정책을 재사용할 수 있도록 하여 정책 관리를 간소화할 뿐만 아니라 일치하는 태그를 기반으로 AWS리소스에 대한 액세스를 활성화하여 보안을 강화합니다.
작동 방식
-
Pod Identity는 포드에 IAM 역할을 할당합니다.
-
ASCP는이 역할을 사용하여를 인증합니다AWS 서비스.
-
권한이 부여된 경우 ASCP는 요청된 보안 암호를 검색하여 포드에서 사용할 수 있도록 합니다.
자세한 내용은 Amazon EKS 사용 설명서의 Amazon EKS Pod Identity 작동 방식 이해를 참조하세요.
사전 조건
중요
Pod Identity는 클라우드의 Amazon EKS에서만 지원됩니다. Amazon EKS Anywhere
-
Amazon EKS 클러스터(버전 1.24 이상)
-
를 통해 AWS CLI및 Amazon EKS 클러스터에 액세스
kubectl -
2개에 대한 액세스AWS 계정(교차 계정 액세스용)
Amazon EKS Pod Identity Agent 설치
클러스터에서 Pod Identity를 사용하려면 Amazon EKS Pod Identity Agent 추가 기능을 설치해야 합니다.
Pod Identity Agent 설치
-
클러스터에 Pod Identity Agent 추가 기능을 설치합니다.
eksctl create addon \ --name eks-pod-identity-agent \ --clusterclusterName\ --regionregion
Pod Identity를 사용하는 ASCP 설정
-
포드가 액세스해야 하는 보안 암호에
secretsmanager:GetSecretValue및secretsmanager:DescribeSecret권한을 부여하는 권한 정책을 생성합니다. 정책 예제는 예: 개별 보안 암호를 읽고 설명할 수 있는 권한을 참조하세요. -
Pod Identity에 대한 Amazon EKS 서비스 보안 주체가 맡을 수 있는 IAM 역할 생성:
IAM 정책을 역할에 연결합니다.
aws iam attach-role-policy \ --role-nameMY_ROLE\ --policy-arnPOLICY_ARN -
Pod Identity 연결을 생성합니다. 예시는 Amazon EKS 사용 설명서의 Pod Identity 연결 생성을 참조하세요.
-
포드에 탑재할 보안 암호를 지정하는
SecretProviderClass를 생성합니다.kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yamlIRSA와 Pod Identity 사이에서
SecretProviderClass의 주요 차이점은 선택적 파라미터usePodIdentity입니다. 인증 접근 방식을 결정하는 선택적 필드입니다. 지정하지 않으면 기본적으로 IRSA(서비스 계정에 대한 IAM 역할)를 사용합니다.-
EKS Pod Identity를 사용하려면 다음 값 중 하나를 사용합니다.
"true", "True", "TRUE", "t", "T". -
IRSA를 명시적으로 사용하려면 값을
"false", "False", "FALSE", "f", or "F"로 설정합니다.
-
-
보안 암호를
/mnt/secrets-store에 탑재하는 포드를 배포합니다.kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml -
프라이빗 Amazon EKS 클러스터를 사용하는 경우 클러스터가 있는 VPC에 AWS STS엔드포인트가 있는지 확인합니다. 엔드포인트 생성에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 인터페이스 VPC 엔드포인트 섹션을 참조하세요.
보안 암호 탑재 확인
보안 암호가 제대로 탑재되었는지 확인하려면 다음 명령을 실행합니다.
kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MySecret
Amazon EKS 포드에 Secrets Manager 보안 암호에 대한 액세스 권한을 설정하는 방법
-
포드가 액세스해야 하는 보안 암호에
secretsmanager:GetSecretValue및secretsmanager:DescribeSecret권한을 부여하는 권한 정책을 생성합니다. 정책 예제는 예: 개별 보안 암호를 읽고 설명할 수 있는 권한을 참조하세요. -
보안 암호가 아직 없는 경우 Secrets Manager에서 보안 암호를 생성합니다.
문제 해결
포드 배포를 설명하여 대부분의 오류를 볼 수 있습니다.
컨테이너에 대한 오류 메시지 확인
-
다음 명령을 사용하여 포드 이름 목록을 가져옵니다. 기본 네임스페이스를 사용하지 않는 경우에는
-n를 사용합니다.NAMESPACEkubectl get pods -
포드를 설명하기 위해 다음 명령에서
PODID에 이전 단계에서 찾은 포드의 포드 ID를 사용합니다. 기본 네임스페이스를 사용하지 않는 경우에는-n를 사용합니다.NAMESPACEkubectl describe pod/PODID
ASCP에 대한 오류를 확인하려면
-
공급자 로그에서 자세한 정보를 확인하려면, 다음 명령에서
PODID에 csi-secrets-store-provider-aws 포드의 ID를 사용합니다.kubectl -n kube-system get pods kubectl -n kube-system logs pod/PODID