📂
Amazon EKS
  • Amazon EKS
  • 워크스페이스 생성하기
    • Cloud9 IDE 환경 구성
    • IAM 역할 생성
    • SSH & CMK Key 생성하기
  • EKS 클러스터 구축
    • EKS 클러스터 만들기
  • 쿠버네티스 대시보드 배포
    • Kubernetes 공식 대시보드 배포
  • 마이크로서비스 배포
    • 예제 애플리케이션 배포
    • 서비스 스케일(Scaling)
    • 애플리케이션 정리하기
  • 애플리케이션 배포 - Helm
    • HELM 설치
    • Helm으로 Nginx 배포
    • Helm을 사용하여 마이크로서비스 배포
    • 정리하기
  • 리소스 관리 - POD 배치
    • NodeSelector
    • Affinity and Anti-affinity
    • 더 실용적인 사용 사례
    • 정리하기
  • 리소스 관리 - Health Checks
    • Liveness 프로브 구성
    • Readiness 프로브 구성
    • 정리하기
  • 리소스 관리 - AutoScaling
    • HPA 구성하기
    • CA 구성하기
    • 정리하기
  • 네트워킹 - 서비스 노출
    • 서비스와 애플리케이션 연결
    • 서비스에 접근하기
    • 서비스 노출
    • Ingress
    • Ingress Controller
    • 정리하기
  • 네트워크 - Calico 정책
    • Calico 설치하기
    • Stars Policy Demo
    • 정리하기
  • Updating 권한설정 - RBAC
    • 테스트 POD 설치
    • 사용자 생성 및 맵핑
    • 역할과 바인딩
    • 정리하기
  • Updating 권한설정 - IAM 그룹
    • IAM Role, Group & User 생성하기
    • RBAC 설정하기
    • EKS 엑세스 테스트
    • 정리하기
  • Updating 권한설정 - Service account
    • OIDC 자격 증명 공급자 생성하기
    • IAM 역할 생성 및 지정
    • 샘플 POD 배포
    • 정리하기
  • Updating - 네트워크 - POD Security Group
    • SG 생성하기
    • RDS 생성하기
    • CNI 구성하기
    • SG 정책
    • Pod 배포하기
    • 정리하기
  • Updating - 모니터링 - Prometheus and Grafana
    • Prometheus 배포하기
    • Grafana 배포하기
    • 정리하기(Optional)
  • Updating 모니터링 - X-Ray
    • X-Ray DaemonSet 배포하기
    • 샘플 마이크로서비스 배포
    • X-Ray console 확인
    • 정리하기(Optional)
  • Updating 모니터링 - Container Insights
    • 사전 준비
    • Container Insights 구성하기
    • 부하 테스트
    • Container Insights 확인하기
    • 정리하기(Optional)
  • Updating CD - Gitops with Flux
    • 사전 준비
    • Codepipeline
    • EKS에 배포
    • 정리하기
  • Updating Argo Rollouts
  • Updating Service Mesh - AWS App Mesh
    • Fargate 및 OBSERVABILITY 구성
    • Product Catalog App 배포
    • APP MESH 설치
    • Porting to APP MESH
    • Virtual Gateway 구성
    • Canary
    • Observability
  • Updating 버전 업그레이드 - EKS Cluster
    • Upgrade EKS control Plane
    • Upgrade EKS CORE ADD-ONs
    • Upgrade Managed Node Group
Powered by GitBook
On this page
  • 1. 네임스페이스 생성하기
  • 2. Role 세스 설정

Was this helpful?

  1. Updating 권한설정 - IAM 그룹

RBAC 설정하기

PreviousIAM Role, Group & User 생성하기NextEKS 엑세스 테스트

Last updated 3 years ago

Was this helpful?

쿠버네티스 RBAC의 기본을 이해하려면 모듈을 참조 할 수 있습니다.

1. 네임스페이스 생성하기

k8sdev group의 IAM 사용자가 접근할 수 있는 네임스페이스 development 와 k8sInteg group의 IAM 사용자가 접근할 수 있는 네임스페이스 integration 을 생성합니다.

kubectl create namespace integration
kubectl create namespace development

dev-user에게 development 네임스페이스에 대한 액세스를 할 수 있는 role 및 rolebinding을 구성합니다.

cat << EOF | kubectl apply -f - -n development
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: dev-role
rules:
  - apiGroups:
      - ""
      - "apps"
      - "batch"
      - "extensions"
    resources:
      - "configmaps"
      - "cronjobs"
      - "deployments"
      - "events"
      - "ingresses"
      - "jobs"
      - "pods"
      - "pods/attach"
      - "pods/exec"
      - "pods/log"
      - "pods/portforward"
      - "secrets"
      - "services"
    verbs:
      - "create"
      - "delete"
      - "describe"
      - "get"
      - "list"
      - "patch"
      - "update"
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: dev-role-binding
subjects:
- kind: User
  name: dev-user
roleRef:
  kind: Role
  name: dev-role
  apiGroup: rbac.authorization.k8s.io
EOF

정의한 역할은 해당 네임스페이스의 모든 것에 대해 액세스 권한을 부여하였습니다. 이 Role은 ClusterRole이 아니므로 development 네임스페이스에서만 적용됩니다.

이번에는 integ-user에게 integration 네임스페이스에 대한 액세스를 할 수 있는 role 및 rolebinding을 구성합니다.

cat << EOF | kubectl apply -f - -n integration
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: integ-role
rules:
  - apiGroups:
      - ""
      - "apps"
      - "batch"
      - "extensions"
    resources:
      - "configmaps"
      - "cronjobs"
      - "deployments"
      - "events"
      - "ingresses"
      - "jobs"
      - "pods"
      - "pods/attach"
      - "pods/exec"
      - "pods/log"
      - "pods/portforward"
      - "secrets"
      - "services"
    verbs:
      - "create"
      - "delete"
      - "describe"
      - "get"
      - "list"
      - "patch"
      - "update"
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: integ-role-binding
subjects:
- kind: User
  name: integ-user
roleRef:
  kind: Role
  name: integ-role
  apiGroup: rbac.authorization.k8s.io
EOF

정의한 역할은 해당 네임스페이스의 모든 것에 대해 액세스 권한을 부여하였습니다. 이 Role은 ClusterRole이 아니므로 integration 네임스페이스에서만 적용됩니다.

2. Role 세스 설정

EKS 클러스터의 IAM 역할에 대한 액세스 권한을 부여 합니다. 이전에 정의한 IAM 역할에 대한 액세스 권한을 EKS 클러스터에 부여 하려면 특정 mapRoles을 aws-authConfigMap에 추가해야 합니다.

IAM 사용자가 직접 지정하는 대신 클러스터에 액세스하는 role을 사용하는 것의 장점은 관리가 더 쉽다는 것 입니다. 우리가 사용자를 추가 하거나 제거 하려는 경우 ConfigMap을 업데이트 할 필요가 없으며 사용자를 추가하거나 제거 할 필요가 있습니다. IAM 그룹은 IAM 그룹과 연관된 IAM 역할을 허용 하도록 ConfigMap을 구성 합니다.

aws-auth ConfigMap을 업데이트하여 IAM 역할을 허용하게 할 수 있습니다. 이 파일은 IAM 역할과 K8S RBAC 권한 사이의 매핑을 만들며, 수동으로 편집 할 수 있습니다.

eksctl create iamidentitymapping \
  --cluster eksworkshop-eksctl \
  --arn arn:aws:iam::${ACCOUNT_ID}:role/k8sDev \
  --username dev-user

eksctl create iamidentitymapping \
  --cluster eksworkshop-eksctl \
  --arn arn:aws:iam::${ACCOUNT_ID}:role/k8sInteg \
  --username integ-user

eksctl create iamidentitymapping \
  --cluster eksworkshop-eksctl \
  --arn arn:aws:iam::${ACCOUNT_ID}:role/k8sAdmin \
  --username admin \
  --group system:masters
  

항목을 삭제하는 데에도 사용할 수 있습니다.

eksctl delete iamidentitymapping --cluster eksworkshop-eksctlv --arn arn:aws:iam::xxxxxxxxxx:role/k8sDev --username dev-user

다음과 같은 ConfigMap이 있어야 합니다.

kubectl get cm -n kube-system aws-auth -o yaml

eksctl을 활용하여 클러스터에서 관리되는 모든 ID의 목록을 얻을 수 있습니다:

eksctl get iamidentitymapping --cluster eksworkshop-eksctl

여기서 생성한 것은 다음과 같습니다.

  • system:masters 쿠버네티스 그룹에 액세스 권한을 부여하고 (완전 관리 권한이 있으므로) admin 사용자에게 맵핑 한 K8sAdmin의 RBAC 역할

  • 개발 네임스페이스에서 dev-user에 맵핑한 k8sdev RBAC 역할

  • 통합 네임스페이스에서 integ-user에 맵핑한 k8sInteg RBAC 역할

을 사용하여 편집 할 수 있습니다:

권한 설정 - RBAC
eksctl