【入門編】 KubernetesのRBAC(ロールベースアクセス制御)の最小権限設計 – インフラ・ネットワーク & クラウドセキュリティ防御ガイド

Kubernetesの「鍵」を管理する:RBACを最小限に絞るための防犯術

こんにちは。現場で泥臭いインシデント対応を長年続けていると、「なぜこんなに鍵を開けっ放しにしているのか?」と頭を抱えたくなる現場によく遭遇します。

皆さんが管理しているKubernetes(K8s)クラスターは、いわば「巨大なマンション」です。このマンションにはたくさんの部屋(Pod)があり、そこにサービスという住人が住んでいます。今日お話しする「RBAC(ロールベースアクセス制御)」は、誰がどの部屋の鍵を持ち、どこまで自由に入れるかを決める「鍵管理システム」のことです。

新人のIT担当者の皆さんも、今日からこのマンションの管理人になったつもりで、一緒に防犯対策を学んでいきましょう!

—

1. なぜ「最小権限」が必要なのか?(泥棒の視点)

もしマンションの清掃員さんに「全室のマスターキー」を渡していたらどうなるでしょうか?もしその人が悪意を持っていたり、あるいは不運にも鍵を紛失してしまったら……。泥棒はマスターキーを手に入れ、マンション中の部屋を自由に荒らすことができます。

K8sにおける「やりすぎた権限付与」もこれと同じです。

例えば、ある開発用ツールに「クラスター内の全リソースを操作できる権限」を与えていたとします。もしそのツールにたった一行の脆弱性(泥棒の侵入口)が見つかったら、攻撃者はその権限を悪用し、あなたのクラスターを丸ごと乗っ取ったり、仮想通貨のマイニングを勝手に始めたりします。

「必要ないなら、鍵は渡さない」。これがセキュリティの鉄則です。

—

2. RBACの設計:誰に、何を、どこまで?

K8sのRBACでは、主に以下の3つの要素を組み合わせて権限を作ります。

1. Role / ClusterRole: 「何をできるか」(例:Podの読み取りのみ、削除も可能など)
2. Subject: 「誰が」(例:特定の開発者、特定のサービスアカウント)
3. RoleBinding: 「上記2つを紐付ける」

実践:最小権限のRoleを作ってみよう

例えば、「特定の名前空間でPodのリストを見るだけ」の権限を作ってみましょう。

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader # ロールの名前
rules:
- apiGroups: [""] # ""はコアグループを指します
  resources: ["pods"] # Podというリソースを対象にする
  verbs: ["get", "list"] # 「見る」「一覧表示する」権限のみ付与

見ての通り、ここには delete や update が含まれていません。これだけで、万が一この権限が悪用されても、攻撃者はPodを勝手に消したり書き換えたりすることができなくなります。これが「最小権限」の第一歩です。

—

3. 守りを固めるための「定期的な棚卸し」

一度設定して安心していませんか? 鍵を貸した相手が退職したり、役割が変わったりすることもありますよね。定期的な監査は、セキュリティ管理者の仕事として最も重要です。

監査のポイント

  • cluster-adminは誰が持っている?: この権限は「マンションの全権利」です。これを保持している人間やサービスアカウントは、本当に必要最小限の数に絞られていますか?
  • 使われていない権限はないか?: 過去のプロジェクトで付与したまま放置されている RoleBinding があれば、迷わず削除しましょう。

ツールを活用する

手動でチェックするのは大変なので、kubectl auth can-i コマンドを使って、自分やサービスアカウントの権限を確認する癖をつけましょう。

# 「このサービスアカウントは、Podを削除できるか?」を確認するコマンド
kubectl auth can-i delete pods --as=system:serviceaccount:default:my-app

このコマンドが no を返せば、その権限は正しく制限されている証拠です。安心できますよね。

—

4. 最後に:セキュリティは「完璧」を目指さない

セキュリティの世界に「完璧」はありません。どれだけ強固な鍵をかけても、窓を割られることもあれば、鍵自体を盗まれることもあります。

大切なのは、「もし突破されたときに、被害をどこまで小さく食い止められるか」という視点です。RBACで権限を絞っておけば、たとえ一箇所が破られても、攻撃者がクラスター全体を支配するのを防ぐことができます。

最初は難しく感じるかもしれませんが、まずは「このサービスアカウントには、本当に edit 権限が必要かな?」と自問自答することから始めてみてください。その小さな疑問が、あなたの守るクラスターを大きく強くします。

明日からの運用で、ぜひ「鍵の棚卸し」を試してみてくださいね!応援しています。

コメント

タイトルとURLをコピーしました