Amazon EKS 기능 IAM 역할 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

Amazon EKS 기능 IAM 역할

EKS 기능을 사용하려면 기능 IAM 역할 또는 기능 역할을 구성해야 합니다. 기능은 이 역할을 사용하여 AWS 서비스에서 작업을 수행하고 자동으로 생성된 액세스 항목을 통해 클러스터의 Kubernetes 리소스에 액세스합니다.

기능 생성 중에 기능 역할을 지정하려면 먼저 기능 유형에 대한 적절한 신뢰 정책 및 권한을 사용하여 IAM 역할을 생성해야 합니다. 이 IAM 역할이 생성되면 원하는 수의 기능 리소스에 대해 재사용할 수 있습니다.

기능 역할 요구 사항

기능 역할은 다음 요구 사항을 충족해야 합니다.

  • 역할은 클러스터 및 기능 리소스와 동일한 AWS 계정에 있어야 함

  • 역할에는 EKS 기능 서비스가 역할을 수임하도록 허용하는 신뢰 정책이 있어야 함

  • 역할에는 기능 유형 및 사용 사례 요구 사항에 적절한 권한이 있어야 함(기능 유형별 권한 참조)

기능 역할에 대한 신뢰 정책

모든 기능 역할에는 다음 신뢰 정책이 포함되어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "capabilities.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }

이 신뢰 정책을 통해 EKS는 다음을 수행할 수 있습니다.

  • AWS API 작업을 수행하도록 역할 수임

  • 감사 및 추적을 위해 세션에 태그 지정

기능 유형별 권한

필요한 IAM 권한은 사용 중인 기능 및 배포 모델에 따라 다릅니다.

참고

ACK와 함께 IAM 역할 선택기를 사용하는 프로덕션 배포의 경우 또는 AWS 서비스 통합 없이 kro 또는 Argo CD를 사용하는 경우 기능 역할에는 신뢰 정책 이외의 IAM 권한이 필요하지 않을 수 있습니다.

Kube Resource Orchestrator(kro)

IAM 권한이 필요하지 않습니다. 연결된 정책 없이 기능 역할을 생성할 수 있습니다. kro는 Kubernetes 리소스를 생성 및 관리하는 데 Kubernetes RBAC 권한만 필요합니다.

AWS Controllers for Kubernetes(ACK)

ACK는 다음과 같이 두 가지 권한 모델을 지원합니다.

  • 단순 설정(개발/테스트): 기능 역할에 직접 AWS 서비스 권한을 추가합니다. 시작하기, 단일 계정 배포 또는 모든 사용자에게 동일한 권한이 필요한 경우에 적합합니다.

  • 프로덕션 모범 사례: IAM 역할 선택기를 사용하여 최소 권한 액세스를 구현합니다. 이 접근 방식을 사용하면 기능 역할에는 서비스 특정 역할을 수임할 sts:AssumeRole 권한만 있으면 됩니다. 기능 역할 자체에 AWS 서비스 권한(예: S3 또는 RDS)을 추가하지 않아도 됩니다. 이러한 권한은 특정 네임스페이스에 매핑되는 개별 IAM 역할에 부여됩니다.

    IAM 역할 선택기는 다음을 활성화합니다.

    • 네임스페이스 수준의 권한 격리

    • 교차 계정 리소스 관리

    • 팀 특정 IAM 역할

    • 최소 권한 보안 모델

      IAM 역할 선택기 접근 방식에 대한 기능 역할 정책 예제:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::111122223333:role/ACK-S3-Role", "arn:aws:iam::111122223333:role/ACK-RDS-Role", "arn:aws:iam::444455556666:role/ACKCrossAccountRole" ] } ] }

      IAM 역할 선택기를 포함한 자세한 ACK 권한 구성은 ACK 권한 구성 섹션을 참조하세요.

Argo CD

기본적으로 IAM 권한은 필요하지 않습니다. 다음과 같은 경우에 선택적 권한이 필요할 수 있습니다.

  • AWS Secrets Manager: Secrets Manager를 사용하여 Git 리포지토리 자격 증명을 저장하는 경우

  • AWS CodeConnections: Git 리포지토리 인증에 CodeConnections를 사용하는 경우

    Secrets Manager 및 CodeConnections에 대한 정책 예제:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:argocd/*" }, { "Effect": "Allow", "Action": [ "codeconnections:UseConnection", "codeconnections:GetConnection" ], "Resource": "arn:aws:codeconnections:region:account-id:connection/*" } ] }

    자세한 Argo CD 권한 요구 사항은 Argo CD 고려 사항 섹션을 참조하세요.

기존 기능 역할 확인

다음 절차를 사용하여 사용 사례에 적합한 기능 IAM 역할이 이미 계정에 있는지 확인할 수 있습니다.

  1. IAM 콘솔(https://console.aws.amazon.com/iam/)을 엽니다.

  2. 왼쪽 탐색 창에서 역할을 선택합니다.

  3. 역할 목록에서 기능 역할 이름(예: ACKCapabilityRole 또는 ArgoCDCapabilityRole)을 검색하세요.

  4. 역할이 있는 경우 역할을 선택하여 연결된 정책 및 신뢰 관계를 확인하세요.

  5. 신뢰 관계를 선택한 후 신뢰 정책 편집을 선택합니다.

  6. 신뢰 관계가 기능 신뢰 정책과 일치하는지 확인하세요. 일치하지 않는 경우 신뢰 정책을 업데이트하세요.

  7. 권한을 선택하고 역할에 기능 유형 및 사용 사례에 적합한 권한이 있는지 확인하세요.

기능 IAM 역할 생성

기능 역할을 생성하기 위해 AWS Management Console 또는 AWS CLI를 사용할 수 있습니다.

AWS Management Console
  1. IAM 콘솔(https://console.aws.amazon.com/iam/)을 엽니다.

  2. 역할을 선택한 다음 역할 생성을 선택합니다.

  3. 신뢰할 수 있는 엔터티 유형에서 사용자 지정 신뢰 정책을 선택하세요.

  4. 기능 신뢰 정책 복사하여 신뢰 정책 편집기에 붙여 넣으세요.

  5. 다음을 선택합니다.

  6. 권한 추가 탭에서 기능 유형에 적합한 정책을 선택하거나 생성하세요(기능 유형별 권한 참조). kro의 경우 이 단계를 건너뛸 수 있습니다.

  7. 다음을 선택합니다.

  8. 역할 이름에 역할의 고유한 이름(예: ACKCapabilityRole, ArgoCDCapabilityRole 또는 kroCapabilityRole)을 입력하세요.

  9. 설명에서 Amazon EKS - ACK capability role과 같은 설명 텍스트를 입력합니다.

  10. 역할 생성을 선택합니다.

AWSCLI
  1. 기능 신뢰 정책capability-trust-policy.json 파일에 복사하세요.

  2. 역할을 생성합니다. ACKCapabilityRole을 원하는 역할 이름으로 바꾸세요.

    aws iam create-role \ --role-name ACKCapabilityRole \ --assume-role-policy-document file://capability-trust-policy.json
  3. 필요한 IAM 정책을 역할에 연결하세요. ACK의 경우 관리하려는 AWS 서비스에 대한 정책을 연결하세요. Argo CD의 경우 필요하면 Secrets Manager 또는 CodeConnections에 대한 정책을 연결하세요. kro의 경우 이 단계를 건너뛸 수 있습니다.

    S3 권한을 사용하는 ACK에 대한 예제:

    aws iam put-role-policy \ --role-name ACKCapabilityRole \ --policy-name S3Management \ --policy-document file://s3-policy.json

기능 역할 문제 해결

'유효하지 않은 IAM 역할'로 기능 생성 실패

다음을 확인합니다.

  • 역할이 클러스터와 동일한 계정에 존재함

  • 신뢰 정책이 기능 신뢰 정책과 일치함

  • 역할에 대한 iam:PassRole 권한이 있음

기능에서 권한 오류 표시

다음을 확인합니다.

  • 기능 역할에 필요한 권한이 해당 역할에 있음

  • 액세스 항목이 역할의 클러스터에 있음

  • 필요한 경우 추가 Kubernetes 권한이 구성됨(추가 Kubernetes 권한 참조)

'권한 거부' 오류로 ACK 리소스 실패

다음을 확인합니다.

  • 역할에는 사용 사례에 필요한 권한이 있습니다.

  • 보안 암호를 참조하는 ACK 컨트롤러의 경우 적절한 네임스페이스로 범위가 지정된 AmazonEKSSecretReaderPolicy 액세스 항목 정책을 연결했는지 확인합니다.

문제 해결 지침은 EKS 기능에 대한 보안 고려 사항 섹션을 참조하세요.