見出し画像

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 ポリシー = 監視カメラや出勤簿

これらを活用することで、チームごとに権限を適切に管理し、セキュリティや運用の効率化を実現できます。まずは小さなグループから設定を試してみてはいかがでしょうか?

いいなと思ったら応援しよう!