반응형
사전지식
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
참고자료
- https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html
- https://medium.com/@yassine.essadraoui_78000/eks-access-access-entries-ef091e9aea43
이하여백
반응형