전공영역 공부 기록

EKS 클러스터 생성 시 부여되는 관리자 권한의 변화와 관리 방법

악분 2024. 5. 19. 18:52
반응형

사전지식

EKS 관리자 권한은 EKS를 생성할 때 사용한 IAM Role 또는 IAM user가 가지게 됩니다. 만약 IAM User 또는 Role이 삭제되면 EKS를 관리하기 매우 어렵습니다. 

 

자동 관리자 권한 비활성화

23년 11월 쯤에 EKS 관리자 권한을 다른 주체에게 부여할 수 있는 기능이 생겼습니다. 이 기능을 사용하려면 2가지 설정이 필요합니다.

  1. EKS 클러스터 생성 시 bootstrapClusterCreatorAdminPermissions를 false로 설정
  2. EKS Access entry사용하여 EKS관리자 권한을 누구에게 부여할지 설정

 

테라폼 코드 예제

테라폼에서는 위 두가지 설정을 access_config필드로 설정합니다.

resource "aws_eks_cluster" "main" {
  name     = var.eks_cluster_name
  
  access_config {    
    # bootstrapClusterCreatorAdminPermissions 비활성화
    bootstrap_cluster_creator_admin_permissions = false
    
    # EKS Access entry 사용
    authentication_mode = "API" # or "API_AND_CONFIG_MAP"
  }
}

 

 

EKS Access entry 테라폼 코드 예제는 아래와 같습니다. var.aws_auth_admin_roles에 설정된 IAM role이 EKS관리자 권한을 갖습니다.

variable "aws_auth_admin_roles" {
  description = "eks admin IAM roles"
  type        = list(string)
  default     = []
}

locals {
  cluster_admins = [
    for admin_role in var.aws_auth_admin_roles :
    {
      principal_arn     = admin_role
      kubernetes_groups = []
      username          = "arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"
      type              = "STANDARD"
    }
  ]
}

resource "aws_eks_access_entry" "cluster_admins" {
  for_each = { for idx, role in local.cluster_admins : idx => role }

  cluster_name      = aws_eks_cluster.main.name
  principal_arn     = each.value.principal_arn
  kubernetes_groups = each.value.kubernetes_groups
  type              = each.value.type
}

resource "aws_eks_access_policy_association" "cluster_admins" {
  for_each = { for idx, role in local.cluster_admins : idx => role }

  cluster_name  = aws_eks_cluster.main.name
  policy_arn    = each.value.username
  principal_arn = each.value.principal_arn

  access_scope {
    type = "cluster"
  }
}

 

위 테라폼 코드를 apply한 후, AWS콘솔에서 내가 설정한 IAM role에 관리자권한이 부여되었는지 확인할 수 있습니다. Access Polices에 AmazonEKSClusterAdminPolicy가 설정되면 EKS관리자 권한을 갖습니다. EKS관리자 권한은 EKS API(유사: 쿠버네티스 API)만 제한합니다. AWS 콘솔 권한은 IAM policy로 별도로 설정해야 합니다.

 

참고자료

이하여백

반응형