Amazon EKS 커넥터 IAM 역할

Amazon EKS 커넥터 IAM 역할 (Connector IAM role)

Kubernetes 클러스터를 연결해 AWS Management Console에서 볼 수 있어요. Kubernetes 클러스터에 연결하려면 IAM 역할을 만들어야 해요.

출처: 문서

본문

기존 EKS 커넥터 역할 확인하기

계정에 Amazon EKS 커넥터 역할이 이미 있는지 확인하려면 다음 절차를 사용할 수 있어요.

  1. https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
  2. 왼쪽 탐색 창에서 Roles를 선택합니다.
  3. 역할 목록에서 AmazonEKSConnectorAgentRole을 검색합니다. AmazonEKSConnectorAgentRole이 포함된 역할이 없으면 Amazon EKS 커넥터 에이전트 역할 생성을 참고해 역할을 만듭니다. AmazonEKSConnectorAgentRole이 포함된 역할이 있으면 그 역할을 선택해 연결된 정책을 봅니다.
  4. Permissions를 선택합니다.
  5. AmazonEKSConnectorAgentPolicy 관리형 정책이 역할에 연결되어 있는지 확인합니다. 정책이 연결되어 있다면 Amazon EKS 커넥터 역할이 올바르게 구성된 것입니다.
  6. Trust relationships를 선택한 다음 Edit trust policy를 선택합니다.
  7. 신뢰 관계에 다음 정책이 포함되어 있는지 확인합니다. 신뢰 관계가 다음 정책과 일치하면 Cancel을 선택합니다. 일치하지 않으면 정책을 Edit trust policy 창에 복사하고 Update policy를 선택합니다.
{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "ssm.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

Amazon EKS 커넥터 에이전트 역할 생성

커넥터 에이전트 역할은 AWS Management Console이나 AWS CloudFormation으로 만들 수 있어요.

AWS CLI

  1. IAM 역할에 사용할 다음 JSON이 포함된 eks-connector-agent-trust-policy.json 파일을 만듭니다.
{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "ssm.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  1. IAM 역할에 사용할 다음 JSON이 포함된 eks-connector-agent-policy.json 파일을 만듭니다.
{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Sid": "SsmControlChannel",
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel"
            ],
            "Resource": "arn:aws:eks:*:*:cluster/*"
        },
        {
            "Sid": "ssmDataplaneOperations",
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenDataChannel",
                "ssmmessages:OpenControlChannel"
            ],
            "Resource": "*"
        }
    ]
}
  1. 이전 항목에서 만든 신뢰 정책과 정책을 사용해 Amazon EKS Connector 에이전트 역할을 만듭니다.
aws iam create-role \
     --role-name AmazonEKSConnectorAgentRole \
     --assume-role-policy-document file://eks-connector-agent-trust-policy.json
  1. 정책을 Amazon EKS Connector 에이전트 역할에 연결합니다.
aws iam put-role-policy \
     --role-name AmazonEKSConnectorAgentRole \
     --policy-name AmazonEKSConnectorAgentPolicy \
     --policy-document file://eks-connector-agent-policy.json

AWS CloudFormation

  1. 다음 AWS CloudFormation 템플릿을 로컬 시스템의 텍스트 파일로 저장합니다.

참고

이 템플릿은 registerCluster API가 호출될 때 생성되는 서비스 연결 역할도 함께 만듭니다. 자세한 내용은 Kubernetes 클러스터를 Amazon EKS에 연결하기 위한 역할 사용하기를 참고하세요.

---
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Provisions necessary resources needed to register clusters in EKS'
Parameters: {}
Resources:
  EKSConnectorSLR:
    Type: AWS::IAM::ServiceLinkedRole
    Properties:
      AWSServiceName: eks-connector.amazonaws.com

  EKSConnectorAgentRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Action: [ 'sts:AssumeRole' ]
            Principal:
              Service: 'ssm.amazonaws.com'

  EKSConnectorAgentPolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: EKSConnectorAgentPolicy
      Roles:
        - {Ref: 'EKSConnectorAgentRole'}
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: 'Allow'
            Action: [ 'ssmmessages:CreateControlChannel' ]
            Resource:
            - Fn::Sub: 'arn:${AWS::Partition}:eks:*:*:cluster/*'
          - Effect: 'Allow'
            Action: [ 'ssmmessages:CreateDataChannel', 'ssmmessages:OpenDataChannel', 'ssmmessages:OpenControlChannel' ]
            Resource: "*"
Outputs:
  EKSConnectorAgentRoleArn:
    Description: The agent role that EKS connector uses to communicate with AWS services.
    Value: !GetAtt EKSConnectorAgentRole.Arn
  1. AWS CloudFormation 콘솔을 엽니다.
  2. Create stack with new resources (standard)를 선택합니다.
  3. Specify template에서 Upload a template file을 선택한 다음 Choose file을 선택합니다.
  4. 아까 만든 파일을 선택한 다음 Next를 선택합니다.
  5. Stack name에 eksConnectorAgentRole 같은 역할 이름을 입력한 다음 Next를 선택합니다.
  6. Configure stack options 페이지에서 Next를 선택합니다.
  7. Review 페이지에서 정보를 검토하고 스택이 IAM 리소스를 만들 수 있음을 확인한 다음 Create stack을 선택합니다.

더 알아보기 (Learn more)