Ssoon
[6주차] EKS Security - RBAC 본문
CloudNet@ 팀의 AWS EKS Workshop Study 6주차 정리입니다.
#EKS Immersion Workshop 의 내용입니다.
User 생성
- rbac-user라는 새 사용자를 생성하고 자격 증명을 생성/저장합니다.
aws iam create-user --user-name rbac-user
aws iam create-access-key --user-name rbac-user | tee /tmp/create_output.json
- CLI 정보 확인
- Console 정보 확인
- 클러스터를 생성한 admin 과 rbac-user 사이를 쉽게 전환하려면 다음 명령을 실행하여 소스가 제공되면 active 사용자를 rbac-user로 설정하는 스크립트를 생성합니다.
cat << EoF > rbacuser_creds.sh
export AWS_SECRET_ACCESS_KEY=$(jq -r .AccessKey.SecretAccessKey /tmp/create_output.json)
export AWS_ACCESS_KEY_ID=$(jq -r .AccessKey.AccessKeyId /tmp/create_output.json)
EoF
사용자를 K8S에 매핑
- rbac-user라는 k8s 사용자를 정의하고 IAM 사용자에 매핑합니다.
eksctl create iamidentitymapping \
--cluster myeks \
--arn arn:aws:iam::${ACCOUNT_ID}:user/rbac-user \
--username rbac-user
- 생성 정보를 확인합니다.
kubectl describe cm aws-auth -n kube-system
사용자 테스트
- 새로 생성된 rbac 사용자로 클러스터에 액세스 합니다.
- rbac-user의 AWS IAM 사용자 환경 변수를
. rbacuser_creds.sh
- AWS 환경변수가 설정되어 기본 admin 사용자 또는 역할을 재정의
- "rbacuser_creds.sh"는 일반적으로 Kubernetes 클러스터 내에서 Role-Based Access Control (RBAC)을 사용하여 특정 사용자에게 부여된 자격 증명 정보를 저장하는 스크립트 파일
- Pod를 조회하면 Error가 발생합니다.
- 사용자를 만드는 것만으로는 해당 사용자가 클러스터의 리소스에 액세스할 수 없으며 role 을 정의한 다음 사용자를 해당 role 에 바인딩해야 합니다
Role and Role Binding 생성
- 기본 관리 사용자로 다시 전환합니다.
- rbac-user로 정의하는 환경 변수의 설정을 취소합니다.
unset AWS_SECRET_ACCESS_KEY
unset AWS_ACCESS_KEY_ID
- admin 사용자 정보를 확인합니다.
- kube-system 네임스페이스에 대해서만 액세스 권한을 제공하는 pod-reader라는 역할을 생성합니다.
cat << EoF > rbacuser-role.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: kube-system
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["list","get","watch"]
- apiGroups: ["extensions","apps"]
resources: ["deployments"]
verbs: ["get", "list", "watch"]
EoF
- RoleBinding 리소스와 함께 바인딩합니다.
cat << EoF > rbacuser-role-binding.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-pods
namespace: kube-system
subjects:
- kind: User
name: rbac-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
EoF
- Role과 RoleBinding을 적용합니다.
kubectl apply -f rbacuser-role.yaml
kubectl apply -f rbacuser-role-binding.yaml
Role and Role Binding 확인
- 역할 및 역할 바인딩이 정의되었으므로 rbac-user로 다시 전환하여 테스트합니다.
- rbac-user로 다시 전환하려면 rbac-user 변수의 소스가 되는 다음 명령을 실행하고 변수가 실행되었는지 확인합니다.
. rbacuser_creds.sh; aws sts get-caller-identity
- 정상적으로 kube-system 네임스페이스의 Pod를 조회할 수 있습니다.
- 하지만 정의되지 않은 다른 네임스페이스의 액세스를 할 수 없습니다.
'AWS EKS Workshop Study' 카테고리의 다른 글
[6주차] EKS Security - Pod Security Standards (0) | 2023.06.02 |
---|---|
[6주차] EKS Security - IAM Roles for Service Accounts (0) | 2023.06.02 |
[5주차] EKS Autoscaling - Scaling App and Cluster - USE FIS TO INTERRUPT A SPOT INSTANCE (0) | 2023.05.25 |
[5주차] EKS Autoscaling - Scaling App and Cluster - CONFIGURE HPA (0) | 2023.05.25 |
[5주차] EKS Autoscaling - Scaling App and Cluster - BUILD THE MICROSERVICE (0) | 2023.05.25 |
Comments