Chapter 04

権限の作成

nozomi-nishinohara
nozomi-nishinohara
2021.05.17に更新

権限を作成する

kubernetesにおける権限管理についてはRole Based Access Control(RBAC)が適応されています。

RBACにも種類があり、

  • クラスター全体に適応されるClusterRole
  • 指定したネームスペースに適応されるRole
    の2種類存在します。

今回は特定のネームスペースにのみ適応します。
また権限に関してはConfigMapを作成、更新、一部更新が可能な権限とし、
削除ができない権限を作成します。

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: config-map-role # ロール名称を記述
  namespace: sa-example # 適応するネームスペースを指定
rules:
  - apiGroups: [""] # コアな機能のため空文字を設定
    resources: ["configmaps"] # configmapを対象するためconfigmapのリソース名を指定
    verbs: ["create", "update", "patch"] # 操作可能な権限を指定

apiGroupsについて

kubernetesのAPIはAPI Groupに分かれて管理されています。

取得方法は

kubectl get --raw /apis | jq -r '.groups[].name'

グループ名 内容
コア機能などKubernetes APIと呼ばれている基本となるリソースが該当します。
apiregistration.k8s.io
apps
events.k8s.io
authentication.k8s.io
authorization.k8s.io
autoscaling
batch
certificates.k8s.io
networking.k8s.io
extensions
policy
rbac.authorization.k8s.io
storage.k8s.io
admissionregistration.k8s.io
apiextensions.k8s.io
scheduling.k8s.io
coordination.k8s.io
node.k8s.io
discovery.k8s.io
flowcontrol.apiserver.k8s.io
crd.projectcalico.org

resourcesについて

取得方法は

kubectl get --raw /api/v1 | jq -r '.resources[].name'

リソース名 内容
bindings
componentstatuses
configmaps
endpoints
events
limitranges
namespaces
namespaces/finalize
namespaces/status
nodes
nodes/proxy
nodes/status
persistentvolumeclaims
persistentvolumeclaims/status
persistentvolumes
persistentvolumes/status
pods
pods/attach
pods/binding
pods/eviction
pods/exec
pods/log
pods/portforward
pods/proxy
pods/status
podtemplates
replicationcontrollers
replicationcontrollers/scale
replicationcontrollers/status
resourcequotas
resourcequotas/status
secrets
serviceaccounts
serviceaccounts/token
services
services/proxy
services/status