반응형
사전지식
EKS 관리자 권한은 EKS를 생성할 때 사용한 IAM Role 또는 IAM user가 가지게 됩니다. 만약 IAM User 또는 Role이 삭제되면 EKS를 관리하기 매우 어렵습니다.
자동 관리자 권한 비활성화
23년 11월 쯤에 EKS 관리자 권한을 다른 주체에게 부여할 수 있는 기능이 생겼습니다. 이 기능을 사용하려면 2가지 설정이 필요합니다.
- EKS 클러스터 생성 시 bootstrapClusterCreatorAdminPermissions를 false로 설정
- 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로 별도로 설정해야 합니다.
참고자료
- https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAccessConfigRequest.html#:~:text=The%20default%20value%20is%20true
- https://securitylabs.datadoghq.com/articles/eks-cluster-access-management-deep-dive/#management-of-default-cluster-administrators
- https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html
이하여백
반응형
'전공영역 공부 기록' 카테고리의 다른 글
iterm 설정 (0) | 2024.06.02 |
---|---|
Amazon Managed Prometheus를 지금 사용하는건 시기상조같다. (0) | 2024.05.26 |
istio circuit break (0) | 2024.05.05 |
github action을 로컬에서 실행해보자 (0) | 2024.04.28 |
github action workflow로 cron을 실행할 때 주의사항 (0) | 2024.04.24 |