본문 바로가기
네트워크/k8s

[k8s] 32. Authorization - 실습

by Lauren X Ming 2021. 2. 24.

Authorization - 실습

image

1. 자신의 Namespace 내에 Pod들만 조회할 수 있는 권한

image

Role

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: r-01
  namespace: nm-01
rules:
- apiGroups: [""]
  verbs: ["get", "list"]
  resources: ["pods"]
  • apiGroups: 예를들어 apiVersion rbac.authorization.k8s.io/v1에서 rbac.authorization.k8s.io/이 apiGroups
  • 코어 API는 apiGroups에 내용을 넣지 않아도 됨
  • verbs: API에 method를 지정
  • resources: 파드만 조회할 수 있는 권한을 만듦

RoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rb-01
  namespace: nm-01
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: r-01
subjects:
- kind: ServiceAccount
  name: default
  namespace: nm-01
  • roleRef: Role을 지정함
  • subjects: Service Account를 지정함

Service

apiVersion: v1
kind: Service
metadata:
  name: svc-1
spec:
  selector:
    app: pod
  ports:
  - port: 8080
    targetPort: 8080

실습 과정

  1. Role 생성
  2. RoleBinding 생성
  3. Secrets에서 Data에서 token 확인 후 복사
    image
  4. Postman에서 복사한 token 값으러 Pod 조회
    image
    https://192.168.35.30:6443/api/v1/namespaces/nm-01/pods
  5. Service 생성
  6. Postman에서 Service 조회
    image
    https://192.168.35.30:6443/api/v1/namespaces/nm-01/services
    서비스에 대한 조회 권한이 없다고 나옴

2. 모든 Namespace 내에 Object들에 대해 모든 권한을 부여

image

  • 새로운 네임스페이스와 Service Account를 만들 것
  • ClusterRole, ClusterRoleBinding도 만들 것
  • token 값으로 nm-01, 클러스터 단위의 자원을 조회할 예정

Namespaces

apiVersion: v1
kind: Namespace
metadata:
  name: nm-02

ServiceAccount

apiVersion: v1
kind: ServiceAccount
metadata:
  name: sa-02
  namespace: nm-02

ClusterRole

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cr-02
rules:
- apiGroups: ["*"]
  verbs: ["*"]
  resources: ["*"]
  • Role과 다른 점은 클러스터 단위의 오브젝트이기 때문에 metadata에 namespace를 지정하는 부분이 없음
  • rules에서 ["*"]을 주면 모든 자원에 대해서 권한을 준다는 의미

ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rb-02
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cr-02
subjects:
- kind: ServiceAccount
  name: sa-02
  namespace: nm-02

실습 과정

  1. nm-02 생성
  2. Service Account 생성 --> Secret이 생김
  3. ClusterRole 생성
  4. ClusterRoleBinding 생성
  5. Secrets에 가서 token 복사
    image
  6. Postman에서 token 넣고 nm-01의 pod 조회
    image
    https://192.168.35.30:6443/api/v1/namespaces/nm-01/pods
  7. Postman에서 nm-01의 service 조회
    image
    https://192.168.35.30:6443/api/v1/namespaces/nm-01/services
  8. Postman에서 node 조회
    image
    https://192.168.35.30:6443/api/v1/nodes

출처

인프런 - 대세는 쿠버네티스