Amazon Web Services 한국 블로그

Amazon EKS Pod Identity, Amazon EKS 클러스터앱의 IAM 권한 단순화

오늘부터 Amazon EKS Pod Identity를 사용하여 AWS 서비스에 액세스하는 애플리케이션을 간소화할 수 있습니다. 이번 개선 사항은 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터의 애플리케이션에 필요한 IAM 권한을 정의하여 클러스터 외부의 AWS 서비스에 연결할 수 있는 원활하고 간편한 구성 환경을 제공합니다.

Amazon EKS Pod Identity는 많은 EKS 클러스터에서 권한을 관리하는 데 있어 점점 더 어려워지는 문제를 해결하는 데 도움이 됩니다.

Amazon EKS Pod Identity를 통한 경험 간소화
2019년에 서비스 계정에 대한 IAM 역할(IRSA)을 도입했습니다. IRSA를 사용하면 IAM 역할을 Kubernetes 서비스 계정에 연결할 수 있습니다. 이를 통해 포드에 필요한 권한만 부여하여 최소 권한 원칙을 구현할 수 있습니다. 이 접근 방식은 IAM의 포드 우선순위를 지정하고 개발자가 AWS 서비스에 대한 최소 권한 액세스를 지원하는 세분화된 권한으로 애플리케이션을 구성하는 데 도움이 됩니다.

이제 Amazon EKS Pod Identity를 사용하면 Kubernetes Identity에 AWS 권한을 부여하는 작업을 더 쉽게 구성하고 자동화할 수 있습니다. 클러스터 관리자는 더 이상 모든 AWS 리소스에 대한 애플리케이션을 인증하기 위해 Amazon EKS와 IAM 서비스 사이를 전환할 필요가 없습니다.

Amazon EKS Pod Identity 사용을 시작하기 위한 전체 워크플로는 몇 가지 간단한 단계로 요약할 수 있습니다.

  • 1단계: 애플리케이션에 필요한 권한이 있는 IAM 역할을 생성하고 신뢰 정책에서 pods.eks.amazonaws.com을 서비스 주체로 지정합니다.
  • 2단계: Amazon EKS 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 Amazon EKS Pod Identity Agent 추가 기능을 설치합니다.
  • 3단계: Amazon EKS 콘솔, API 또는 AWS CLI에서 직접 서비스 계정에 역할을 매핑합니다.

작업이 완료되면 해당 서비스 계정을 사용하는 모든 새 포드가 자동으로 IAM 자격 증명을 수신하도록 구성됩니다.

그럼 시작해 보겠습니다.
EKS Pod Identity를 시작하는 방법을 보여 드리겠습니다. 이 게시물의 데모에서는 Amazon EKS 클러스터에서 실행되는 단순 API에 대한 권한을 구성해야 합니다. 그러면 Amazon Simple Storage Service(S3) 버킷의 파일 목록이 반환됩니다.

먼저 애플리케이션이 제대로 실행될 수 있도록 필요한 권한을 제공하는 IAM 역할을 생성해야 합니다. 제 경우에는 S3 버킷에 액세스할 수 있는 권한을 구성해야 합니다.

다음으로 동일한 IAM 역할에서 신뢰 정책을 구성하고 보안 주체를 pods.eks.amazonaws.com에 구성해야 합니다. 제가 사용하는 IAM 템플릿은 다음과 같습니다.

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

이 단계에서는 IAM 역할이 준비되었으므로 이제 클러스터에서 Amazon EKS Pod Identity Agent를 구성해야 합니다. 이 문서에서는 기존 EKS 클러스터를 사용하고 있습니다. 사용 방법을 알아보려면 Amazon EKS 시작하기를 참조하세요.

다음으로 Amazon EKS 대시보드로 이동한 다음 EKS 클러스터를 선택합니다.

EKS 클러스터 페이지에서 추가 기능 탭을 선택한 다음 추가 기능 가져오기를 선택 합니다.

그런 다음 Amazon EKS Pod Identity Agent 추가 기능을 추가 합니다.

다음 페이지에서 필요한 경우 구성을 추가할 수 있습니다. 이 경우에는 기본 구성을 그대로 두고 다음을 선택합니다.

그런 다음 추가 기능 구성을 검토하고 생성 을 선택하면 됩니다.

몇 분 후 Amazon EKS Pod Identity Agent 추가 기능이 클러스터에서 활성화됩니다.

클러스터에 Amazon EKS Pod Identity가 있으면 IAM 역할을 Kubernetes 포드에 연결해야 합니다.

EKS 클러스터의 액세스 탭으로 이동해야 합니다. Pod Identity associations(포드 ID 연결) 섹션에서 Create Pod Identity association(Create Pod Identity association)을 선택하여 IAM 역할을 Kubernetes 포드에 매핑합니다.

여기서는 처음에 생성한 IAM 역할을 사용합니다. 또한 Kubernetes 네임스페이스와 서비스 계정을 정의해야 합니다. 아직 존재하지 않는 경우 네임스페이스와 서비스 계정의 이름을 입력할 수 있습니다. 이미 존재하는 경우 드롭다운에서 선택할 수 있습니다. 그런 다음 생성을 선택합니다.

다음은 EKS Pod Identity를 사용하여 Amazon EKS에서 실행되는 애플리케이션에 대한 IAM 권한을 구성하기 위해 수행해야 하는 모든 단계입니다. 이제 제 IAM 역할이 Pod Identity associations(포드 ID 연결)에 나열되는 것을 확인할 수 있습니다.

Amazon EKS에서 실행되는 API를 테스트하면 예상대로 실행되고 S3 버킷의 파일 목록이 반환됩니다.

curl -X https://<API-URL> -H "Accept: application/json" 

{
   "files": [
         "test-file-1.md",
         "test-file-2.md"
    ]        
}

Amazon EKS Pod Identity를 통해 Amazon EKS에서 실행되는 애플리케이션에 대한 IAM 역할 관리가 간단해진다는 사실을 알게 되었습니다. 새 클러스터를 생성할 때마다 역할 신뢰 정책을 업데이트할 필요 없이 여러 EKS 클러스터에서 IAM 역할을 쉽게 재사용할 수 있습니다.

EKS Pod Identity를 구성하기 위한 새로운 AWS API
또한 AWS CLI를 사용하여 클러스터에 맞게 Amazon EKS Pod Identity를 유연하게 구성할 수 있습니다. Amazon EKS Pod Identity는 사용할 수 있는 새로운 API 세트를 제공합니다.

예를 들어 aws eks create-addon을 사용하여 Amazon EKS Pod Identity Agent 추가 기능을 클러스터에 설치할 수 있습니다. AWS CLI 명령은 다음과 같습니다.

$ aws eks create-addon \
--cluster-name <CLUSTER_NAME> \
--addon-name eks-pod-identity-agent \
--addon-version v1.0.0-eksbuild.1

{
    "addon": {
    "addonName": "eks-pod-identity-agent",
    "clusterName": "<CLUSTER_NAME>",
    "status": "CREATING",
    "addonVersion": "v1.0.0-eksbuild.1",
    "health": {
        "issues": []
        },
    "addonArn": "<ARN>",
    "createdAt": 1697734297.597,
    "modifiedAt": 1697734297.612,
    "tags": {}
    }
}

AWS API로 수행할 수 있는 또 다른 예는 IAM 역할을 Kubernetes 포드에 매핑하는 것입니다.

$ aws eks create-pod-identity-association \
  --cluster-name <CLUSTER_NAME> \
  --namespace <NAMESPACE> \
  --service-account <SERVICE_ACCOUNT_NAME> \
  --role-arn <IAM_ROLE_ARN>

주요 사항

가용성 – Amazon EKS Pod Identity는 AWS GovCloud(미국 동부), AWS GovCloud(미국 서부), 중국(베이징, Sinnet에서 운영), 중국(닝샤, NWCD에서 운영)을 제외하고 Amazon EKS가 지원하는 모든 AWS 리전에서 사용할 수 있습니다.

요금 – Amazon EKS Pod Identity는 무료로 사용할 수 있습니다.

지원되는 Amazon EKS 클러스터 – Amazon EKS Pod Identity는 Amazon EKS에서 버전 1.24 이상을 실행하는 Kubernetes를 지원합니다. 자세한 내용은 EKS Pod Identity 클러스터 버전을 참조하세요.

지원되는 AWS SDK 버전 – 최신 AWS SDK 버전을 사용하려면 애플리케이션을 업데이트해야 합니다. AWS 개발자 도구를 확인하여 AWS SDK를 설치 및 업데이트하는 방법을 알아보세요.

지금 바로 시작하고 EKS Pod Identities 설명서 페이지를 방문하여 애플리케이션의 IAM 관리를 간소화하는 방법에 대해 자세히 알아보세요.

즐겁게 빌드해보세요!
Donnie