앞에서 GKE 에 대한 접근을 개별 계정 기반으로 컨트롤 하는 방법을 알아봤습니다.(RBAC)
여기에서는 GCP IAM Group 기반으로 접근제어 하는 방법을 알아봅니다.
GKE 를 생성하다 보면 아래와 같은 옵션이 있습니다.
Enable Google Groups for RBAC
https://cloud.google.com/kubernetes-engine/docs/how-to/google-groups-rbac#setup-group
google groups 혹은 cloud id 권한을 가지고 iam group을 생성한다.(반드시 아래와 같은 그룹명으로 생성합니다.)
gke-security-groups@{your_domain}
그룹을 생성합니다.
그리고 관리 대상 IAM group 을 위에서 생성한 group에 중첩해서 member 로 설정합니다.
모든 리소스를 조회해봅니다.
권한이 없다고 나오며 에러가 나옵니다.
rolebinding을 선업합니다.
- kind: Group
name: testgroup@sungiyroli.shop
member group(nested group)으로 설정한 그룹으로 rolebinding을 합니다.
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: moon-role
namespace: default
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
# This role binding allows "jane" to read pods in the "default" namespace.
# You need to already have a Role named "pod-reader" in that namespace.
kind: RoleBinding
metadata:
name: moon-role-binding
namespace: default
subjects:
# You can specify more than one "subject"
- kind: Group
name: testgroup@sungiyroli.shop # "name" is case sensitive
apiGroup: rbac.authorization.k8s.io
roleRef:
# "roleRef" specifies the binding to a Role / ClusterRole
kind: Role #this must be Role or ClusterRole
name: moon-role # this must match the name of the Role or ClusterRole you wish to bind to
apiGroup: rbac.authorization.k8s.io
다시 한번 조회를 해보면 조회가 잘 되는걸 확인할 수 있습니다.
참고