0Pricing
DevOps Bootcamp · レッスン

Role-Based Access Control(RBAC)

RBACのロールとロールバインディングを使って、クラスター内のユーザーとサービスアカウントの権限を管理します。

「Role-Based Access Control(RBAC)」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

Kubernetes の RBAC とは?

ようこそ!このレッスンでは、Kubernetes の重要なセキュリティ機能である Role-Based Access Control(RBAC)について学びます。

RBAC を使うと、クラスター内で誰が何を実行できるかを管理できます。Kubernetes リソースへのアクセスを監視する門番のようなもので、許可されたユーザーとアプリケーションだけが特定の操作を実行できるようにします。

RBAC が不可欠な理由

RBAC がなければ、クラスターにアクセスできる人があらゆる操作を実行できてしまい、セキュリティリスクや誤操作による被害につながる可能性があります。

  • セキュリティ: 不正なアクセスや操作を防止します。
  • コンプライアンス: アクセス制御に関する法規制や要件への対応に役立ちます。
  • 最小権限: ユーザーやアプリケーションに、本当に必要な権限だけを与えます。

RBAC の主要な概念

Kubernetes の RBAC は、いくつかの主要なコンポーネントで構成されています。

  • Subjects: 「誰が」にあたるもの(ユーザー、サービスアカウント、グループ)。
  • Roles: 「何を」にあたるもの(権限の集合)。
  • RoleBindings: 「どのように」にあたるもの(Role と Subject を関連付けるもの)。
  • ClusterRoles & ClusterRoleBindings: Role と RoleBinding のクラスター全体版。

Subjects:ユーザーとサービスアカウント

Kubernetes は、誰が操作を要求しているのかを把握する必要があります。これらはSubjectsと呼ばれます。

  • Users: 通常は人間の管理者や開発者です。Kubernetes はユーザーを直接管理せず、外部の認証機構に依存します。
  • Service Accounts: Pod 内で実行されるアプリケーションやプロセスが使用する Kubernetes オブジェクトです。Pod と API サーバー間の通信に不可欠です。

Roles による権限の定義

Role は、特定のnamespace内で適用される権限の集合を定義します。どのリソースに対して、どの操作(verb)を実行できるかを指定します。

たとえば、default namespace 内の Pod に対して、「取得」と「一覧表示」を許可する Role を作成できます。

Role の例:Pod Reader

次に示すのは、pod-reader という名前の Role の YAML 定義です。この Role は、Pod に対する「get」、「list」、「watch」(監視)の権限を付与します。

apiGroups: [""] は、Kubernetes のコア API グループを指している点に注目してください。

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
  namespace: default
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"]

RoleBindings による権限の付与

RoleBinding は、特定のnamespace内で、特定のRoleを 1 つ以上のSubjects(ユーザー、サービスアカウント、グループ)に関連付けます。

これは、「このユーザーまたはアプリケーションは、この namespace でこの Role が許可する操作を実行できる」という関係を定義するものです。

RoleBinding の例:アクセス権の付与

この RoleBinding は、pod-reader Role を default namespace の my-app-sa という名前の Service Account に関連付けます。これにより、my-app-sa は Pod を読み取れるようになります。

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: my-app-sa # The service account getting permissions
  namespace: default
roleRef:
  kind: Role
  name: pod-reader # The Role being granted
  apiGroup: rbac.authorization.k8s.io

ClusterRoles と ClusterRoleBindings

1 つの namespace だけでなく、クラスター全体に適用する権限が必要になることがあります。そのような場合に使用するのが、ClusterRoles と ClusterRoleBindings です。

  • ClusterRole: ノードや永続ボリュームなどのクラスター スコープのリソース、またはすべての namespace にまたがる操作(例:「すべての Pod の一覧表示」)に対する権限を定義します。
  • ClusterRoleBinding: ClusterRole を Subjects に関連付け、クラスター全体に及ぶ権限を付与します。

RBAC クイックチェック

ある開発者が dev namespace だけに新しいアプリケーションをデプロイする必要があります。この特定の権限を付与するために、主に使用する Kubernetes RBAC リソースはどの 2 つですか?

振り返り:RBAC の基礎

よくできました!Kubernetes RBAC の基本を学びました。

  • RBAC は、クラスターのリソースを操作できるユーザーやアプリケーションを制御します。
  • Roles は、namespace 内の権限を定義します。
  • RoleBindings は、Roles と Subjects(ユーザー、サービスアカウント)を関連付けます。
  • ClusterRoles と ClusterRoleBindings は、クラスター全体に及ぶ権限を管理します。

RBAC を使いこなすことは、Kubernetes 環境を安全に保つための鍵です。

よくある質問

「Role-Based Access Control(RBAC)」レッスンは無料ですか?

はい。「Role-Based Access Control(RBAC)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「Role-Based Access Control(RBAC)」で何を学びますか?

RBACのロールとロールバインディングを使って、クラスター内のユーザーとサービスアカウントの権限を管理します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Role-Based Access Control(RBAC)」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Role-Based Access Control(RBAC)
  2. 分離のためのNetwork Policy
  3. Podセキュリティ標準
  4. サービスアカウントとワークロードアイデンティティ
← DevOps Bootcampに戻る