![見出し画像](https://assets.st-note.com/production/uploads/images/166956315/rectangle_large_type_2_403c8452e6aea4b7735b166fda0a79a9.png?width=1200)
Kubernetes の UserGroup とは?チームで使う権限管理の仕組み
Kubernetes を使っていると、「権限管理をどうするか?」という問題にぶつかることがあります。たとえば、開発チームにはアプリケーションの設定を変える権限を与えたいけれど、営業チームにはアクセス権限を制限したい、といったケースです。
そんなときに役立つのが UserGroup という仕組みです。この記事では、UserGroup がどんなものなのか、具体例を交えて見ていきます!!
1. UserGroup とは?
Kubernetes の UserGroup は、ユーザーやサービスアカウントをグループ化するための概念です。
イメージしやすい例え
会社を思い浮かべてみてください。社員は「営業部」や「開発部」といったグループに分けられますよね。そして、それぞれの部署には共通の権限が与えられます。
営業部は顧客情報にアクセスできる。
開発部はシステム設定を変更できる。
この仕組みを Kubernetes に置き換えると、UserGroup は「部署」の役割を果たします。同じ役割を持つユーザーをグループ化して、まとめて権限を設定できるのが特徴です。
2. 予約グループ (Predefined Groups)
Kubernetes には、あらかじめ用意された「予約グループ」がいくつかあります。これは特定の役割を持つユーザーやサービスアカウント向けのグループです。
代表的な予約グループ
(1) system:authenticated
認証を通過したすべてのユーザーが属するグループです。ログインが成功した時点で、自動的にこのグループに含まれます。
(2) system:unauthenticated
認証されていないユーザーが属します。API サーバーに匿名アクセスする場合などは、このグループに分類されます。
(3) system:nodes
Kubernetes のノード(サーバー)に紐づくサービスアカウントが含まれるグループです。たとえば、ノード内の kubelet(Kubernetes エージェント)が API サーバーと通信するときに使われます。
予約グループの例え
「system:nodes」は、会社でいうと「インフラ管理チーム」のような存在です。サーバーやネットワークの設定を管理する専用チームに該当します。
3. RBAC でカスタムグループを作成する
Kubernetes では、RBAC (Role-Based Access Control) を使って、独自のグループと権限を設定できます。
RBAC 設定の手順
(1) Role または ClusterRole の作成
以下は、Pod を取得・一覧表示・監視できる権限を持つ Role の例です。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: dev-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
(2) RoleBinding の作成
次に、Role にグループを紐づけます。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: dev-binding
namespace: default
subjects:
- kind: Group
name: dev-group # グループ名
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: dev-role
apiGroup: rbac.authorization.k8s.io
この設定によって、dev-group に属するユーザーは default 名前空間の Pod に対して、取得・一覧表示・監視する権限を持ちます。
RBAC の例え
RBAC は会社の「社内ルール」と考えるとわかりやすいです。たとえば、「営業部は顧客情報にアクセスしてよい」「開発部はシステムの設定を変更してよい」というルールを決めるイメージです。
4. Audit ポリシーでアクションを記録する
UserGroup のアクションを監視するには、Audit ポリシーを設定します。これにより、特定のグループの操作履歴をログに記録できます。
ログ設定の例
以下は、dev-group が Pod を作成・更新・削除した場合に、そのリクエストとレスポンスを記録する設定です。
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: RequestResponse
users: []
userGroups: ["dev-group"]
verbs: ["create", "update", "delete"]
resources:
- group: ""
resources: ["pods"]
このポリシーを使えば、どのユーザーがどのタイミングで何をしたのかを追跡できます。
Audit の例え
Audit ポリシーは「監視カメラ」や「出勤簿」のようなものです。部署ごとに行動履歴を記録して、あとからトラブルやミスを確認できる仕組みです。
5. まとめ
Kubernetes の UserGroup は、ユーザーやサービスアカウントをチーム単位で管理する便利な仕組みです。
ポイントのおさらい
UserGroup は、会社の部署やチームのようにユーザーをグループ化します。
予約グループには、認証済みユーザーやノード用の特別なグループが含まれます。
RBAC を使うことで、カスタムグループに権限を割り当てられます。
Audit ポリシーは、グループごとのアクションを監視して記録できます。
例えのまとめ
UserGroup = 会社の部署
RBAC = 部署ごとの社内ルール
Audit ポリシー = 監視カメラや出勤簿
これらを活用することで、チームごとに権限を適切に管理し、セキュリティや運用の効率化を実現できます。まずは小さなグループから設定を試してみてはいかがでしょうか?