카테고리 없음

EKS access entry로 EKS 권한 분리

악분 2024. 5. 19. 21:19
반응형

사전지식

EKS access entry 지식이 필요합니다.

 

이 글에서 다루는 내용

EKS access entry을 사용하여, IAM role에 "project-a"이름을 갖는 EKS namespace 리소스 조회만 가능하도록 권한을 설정합니다. IAM role은 개발자가 사용한다고 가정합니다.

https://youtube.com/shorts/iuNPq2HBHBQ

 

 

실습

1. 개발자에게 줄  IAM role을 생성합니다. IAM policy는 EKS list, describe를 설정했습니다. 저는 아래 테라폼 코드로 IAM role을 생성했습니다.

 

resource "aws_iam_role" "access_entry_test_role" {
  name               = "access_entry_test_role"
  path               = "/"
  assume_role_policy = data.aws_iam_policy_document.access_entry_test_role_assume.json
}

data "aws_iam_policy_document" "access_entry_test_role_assume" {
  statement {
    effect  = "Allow"
    actions = ["sts:AssumeRole"]
    principals {
      type        = "AWS"
      identifiers = ["arn:aws:iam::${var.aws_root_account_id}:root"]
    }
  }
}

resource "aws_iam_role_policy" "access_entry_test_role" {
  name   = "access_entry_test_role"
  role   = aws_iam_role.access_entry_test_role.id
  policy = data.aws_iam_policy_document.access_entry_test_role.json
}

data "aws_iam_policy_document" "access_entry_test_role" {
  statement {
    effect = "Allow"
    actions = [
      "eks:ListClusters",
      "eks:DescribeCluster",
    ]
    resources = ["*"]
  }
}

 

2. EKS access entry를 생성합니다. 1번 과정에서 생성한 IAM role을 principal로 사용합니다.

 

3. access entry policy를 생성합니다. 

 

Policy는 AmazonEKSViewPolicy를 선택합니다. 그리고 적용범위는 "project-a" namespace로 합니다.

 

4. 개발자 IAM role로 project-a namespace 리소스가 조회 되는지 테스트합니다. 조회가 되야 정상입니다.

aws eks update-kubeconfig --region ap-northeast-2 --name {EKS 클러스터 이름}
kubectl get all -n project-a

 

 

5. 개발자 IAM role로 default namespace 리소스가 조회 되는지 테스트합니다. 권한이 없기 때문에 조회가 안되는 현상이 정상입니다.

kubectl get all -n default

 

6. 개발자 IAM role로 project-a namespace에 pod를 생성합니다. 권한이 없기 때문에 pod생성이 안되는 것이 정상입니다.

kubectl run nginx --image=nginx -n project-a

 

 

참고자료

이하여백

 

반응형