IAM 인증 사용자 관리(ConfigMap)
- 인쇄
- PDF
IAM 인증 사용자 관리(ConfigMap)
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
VPC 환경에서 이용 가능합니다.
클러스터를 생성할 경우, 클러스터를 생성한 SubAccount 계정과 메인 계정은 클러스터 RBAC 구성에 system:masters 그룹으로 자동 설정되며, 이 설정은 클러스터 정보나 ConfigMap에 표시되지 않습니다. IAM 사용자에게 클러스터 사용 권한을 추가하려면 kube-system 네임스페이스에 ncp-auth
ConfigMap을 등록해야 합니다.
참고
ncp-iam-authenticator가 설치되고 kubeconfig가 생성된 상태에서 설정 가능합니다. ncp-iam-authenticator 설치, IAM 인증 kubeconfig 생성을 참조해 주십시오.
IAM 사용자를 클러스터에 추가
- 클러스터를 생성한 SubAccount 사용자 또는 메인 계정으로 kubectl 자격 증명이 구성되어 있어야 합니다.
ncp-auth
ConfigMap을 생성해 주십시오.$ cat <<EOF | kubectl --kubeconfig $KUBE_CONFIG apply -f - apiVersion: v1 kind: ConfigMap metadata: name: ncp-auth namespace: kube-system data: mapSubAccounts: | - subAccountIdNo: <iam-user-idno> username: <username> groups: - <groups> EOF
- ConfigMap의 IAM 사용자 파라미터는 아래와 같습니다.
- subaccountIdNo: SubAccount 콘솔에서 확인 가능한 추가할 SubAccount 사용자의 ID
- username: Kubernetes 내에서 IAM 사용자에게 매핑할 사용자 이름.
- groups: Kubernetes 내에서 사용자에게 매핑할 그룹 목록. 자세한 Default roles and role bindings를 참조해 주십시오.
ncp-auth
ConfigMap에 ncloud.com/applied-ncp-auth 어노테이션을 통해 적용된 사용자 목록을 확인합니다.$ kubectl --kubeconfig $KUBE_CONFIG -n kube-system get configmap ncp-auth -o yaml ... metadata: annotations: ncloud.com/applied-ncp-auth: '[{"SubAccountIdNo":"<iam-user-idno>","Username":"<username>","Groups":["<groups>"]}]' ...
- IAM 사용자 또는 역할을 매핑한 Kubernetes 사용자 또는 그룹이 RoleBinding 또는 ClusterRoleBinding을 사용하여 Kubernetes 역할에 바인딩되어 있는지 확인해 주십시오.
- 자세한 내용은 Kubernetes 문서의 Using RBAC Authorization를 참조해 주십시오.
- 모든 네임스페이스의 리소스 보기 권한 - 그룹 이름은 full-access-group 이며, 이를
ncp-auth
ConfigMap에서 IAM 사용자의 groups에 매핑해야 합니다.
$ cat <<EOF | kubectl --kubeconfig $KUBE_CONFIG apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: full-access-clusterrole rules: - apiGroups: - "" resources: - nodes - namespaces - pods verbs: - get - list - apiGroups: - apps resources: - deployments - daemonsets - statefulsets - replicasets verbs: - get - list - apiGroups: - batch resources: - jobs verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: full-access-binding subjects: - kind: Group name: full-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: full-access-clusterrole apiGroup: rbac.authorization.k8s.io EOF
- 특정 네임스페이스의 리소스 보기 권한 - 파일에 설정된 네임스페이스는 default이므로 원하는 네임스페이스를 지정하여 수정합니다. 그룹 이름은 restricted-access-group이며, 이를
ncp-auth
ConfigMap에서 IAM 사용자의 groups에 매핑해야 합니다.
$ cat <<EOF | kubectl --kubeconfig $KUBE_CONFIG apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: restricted-access-clusterrole rules: - apiGroups: - "" resources: - nodes - namespaces verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: restricted-access-clusterrole-binding subjects: - kind: Group name: restricted-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: restricted-access-clusterrole apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: restricted-access-role rules: - apiGroups: - "" resources: - pods verbs: - get - list - apiGroups: - apps resources: - deployments - daemonsets - statefulsets - replicasets verbs: - get - list - apiGroups: - batch resources: - jobs verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: restricted-access-role-binding namespace: default subjects: - kind: Group name: restricted-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: restricted-access-role apiGroup: rbac.authorization.k8s.io EOF
mapSubAccounts에 사용자 등록하지 않고 전체 인증
ncp-auth
ConfigMap에 authenticateAll 값을 true로 추가하면 모든 SubAccount 계정이 mapSubAccounts에 추가되지 않아도 인증됩니다.$ cat <<EOF | kubectl --kubeconfig $KUBE_CONFIG apply -f - apiVersion: v1 kind: ConfigMap metadata: name: ncp-auth namespace: kube-system data: authenticateAll: "true" EOF
- 인증된 사용자는 SubAccount 사용자를 클러스터에 추가와 동일하게 Kubernetes 사용자 또는 그룹이 RoleBinding 또는 ClusterRoleBinding을 사용하여 Kubernetes 역할에 바인딩되어야 합니다.
SubAccount 그룹을 Kubernetes 그룹으로 사용
- SubAccount 그룹에 속해있는 SubAccount 사용자는 ncp-sub-account-group:가 prefix로 추가된 Kubernetes 그룹에 포함되게 됩니다.
- full-access 라는 SubAccount 그룹에 속한 사용자 전체에 full-access-clusterrole을 부여하는 예시는 아래와 같습니다.
$ cat <<EOF | kubectl --kubeconfig $KUBE_CONFIG apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: full-access-clusterrole rules: - apiGroups: - "" resources: - nodes - namespaces - pods verbs: - get - list - apiGroups: - apps resources: - deployments - daemonsets - statefulsets - replicasets verbs: - get - list - apiGroups: - batch resources: - jobs verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: full-access-binding subjects: - kind: Group name: ncp-sub-account-group:full-access apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: full-access-clusterrole apiGroup: rbac.authorization.k8s.io EOF
이 문서가 도움이 되었습니까?