Rancher には RBAC の仕組みが備わっており,以下の3種類のスコープが存在する.
Global Permission: 特定クラスタに依存しない権限, Catalogやアカウント管理など
Cluster Role: Kubernetesクラスタ別の権限, ノードやストレージ, プロジェクトの管理など
Project Role: プロジェクト別の権限, 名前空間の管理やサービス, シークレット, ボリュームなど
(Permission と Role という単語が並列に用いられているのがもやっとする)
各スコープには複数のロールと権限が存在するが,
公式ドキュメントには Rancher の RBAC は Kubernetes の RBAC をベースとして実装している
と説明があるだけで具体的な権限についての説明がない.
ここでは Rancher の RBAC における 権限について確認する.
スコープ別のロールと権限
Global Permission
デフォルトでは Administrator と Standard User という2つのロールが定義されている.
ロールごとの権限は以下の通り
| Custom Global Permission | Administrator | Standard User |
|:--|:--|:--|:--|
| Manage Authentication | ✓ | |
| Manage Catalogs | ✓ | |
| Manage Node Drivers | ✓ | |
| Manage PodSecurityPolicy Templates | ✓ | |
| Manage Roles | ✓ | |
| Manage Users | ✓ | |
| Create Clusters | ✓ | ✓ |
| User Catalog Templates | ✓ | ✓ |
| Login Access | ✓ | ✓ |
Cluster Role
デフォルトでは Owner と Member の2つのロールが定義されている.
ロールごとの権限は以下の通り
Custom Cluster Role | Owner | Member |
---|---|---|
Manage Cluster Members | ✓ | |
Manage Nodes | ✓ | |
Manage Storage | ✓ | |
View All Projects | ✓ | |
Create Project | ✓ | ✓ |
View Cluster Members | ✓ | ✓ |
View Nodes | ✓ | ✓ |
Project Role
デフォルトでは Owner, Member, Read Only の3つのロールが定義されている.
ロールごとの権限は以下の通り
Custom Cluster Role | Owner | Member | Read Only |
---|---|---|---|
Manage Project Members | ✓ | ||
Create Namespaces | ✓ | ✓ | |
Manage Config Maps | ✓ | ✓ | |
Manage Ingress | ✓ | ✓ | |
Manage Secrets | ✓ | ✓ | |
Manage Service Accounts | ✓ | ✓ | |
Manage Services | ✓ | ✓ | |
Manage Volumes | ✓ | ✓ | |
Manage Workloads | ✓ | ✓ | |
View Config Maps | ✓ | ✓ | ✓ |
View Ingress | ✓ | ✓ | ✓ |
View Project Members | ✓ | ✓ | ✓ |
View Secrets | ✓ | ✓ | ✓ |
View Service Accounts | ✓ | ✓ | ✓ |
View Services | ✓ | ✓ | ✓ |
View Volumes | ✓ | ✓ | ✓ |
View Workloads | ✓ | ✓ | ✓ |
権限の設計
では,各権限はどのように定義されているかというと
Global > Security > Roles で確認できる(一部省略).
各権限を選択すると,権限ごとに設定されている対象リソースとオペレーションを確認できる.
ここで表示されている Create 〜 Watch までの操作は Kubernetes の RBAC で
指定可能な操作 (verb)と同じである.
参考: Kubernetes: RBACの設定におけるAPIリソース
また,対象のリソースは Rancher で定義された CRD(Custom Resource Definition)
であり,CRD の詳細を確認することで対象リソースの内容を確認できる.