카테고리 없음

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

 

 

참고자료

이하여백

 

반응형