Kubernetes Role-Based Access Control(RBAC)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kubernetesには、APIサーバーへの利用権限を設定するのに役立つRole-Based Access Control(RBAC)という認可モジュールがあります。
RBACの権限モデルは、3つの個別の部分から構成されています:
Subject (ユーザー、グループ、またはサービスアカウント) – 権限を受け取るオブジェクト。
RoleBinding\ClusterRoleBinding – Role\ClusterRoleとサブジェクトの接続。
「Roles」と「ClusterRoles」の違いは、ロールが適用される場所だけです – 「Role」は1つの特定のネームスペースにのみアクセスを付与しますが、「ClusterRole」はクラスター内のすべてのネームスペースで使用できます。さらに、ClusterRolesは以下にもアクセスを付与できます:
クラスター範囲のリソース(ノードなど)。
非リソースエンドポイント(/healthzなど)。
ネームスペースリソース(ポッドなど)、すべてのネームスペースにわたって。
Kubernetes 1.6以降、RBACポリシーはデフォルトで有効になっています。しかし、RBACを有効にするには、次のようなものを使用できます:
Role または ClusterRole のテンプレートでは、ロールの名前、ネームスペース(ロールの場合)、そして apiGroups、resources、verbs を示す必要があります:
apiGroups は、このルールが適用される異なる API ネームスペース を含む配列です。例えば、Pod 定義は apiVersion: v1 を使用します。rbac.authorization.k8s.io や [*] などの値を持つことができます。
resources は、このルールが適用される リソースを定義する 配列です。すべてのリソースは次のコマンドで見つけることができます: kubectl api-resources --namespaced=true
verbs は、許可された動詞 を含む配列です。Kubernetes の動詞は、リソースに適用する必要がある アクションの種類 を定義します。例えば、list 動詞はコレクションに対して使用され、「get」は単一のリソースに対して使用されます。
(この情報は ドキュメント から取得されました)
Kubernetes は、特定の動詞を使用して追加の権限の認可を確認することがあります。例えば:
policy
API グループの podsecuritypolicies
リソースに対する use
動詞。
rbac.authorization.k8s.io
API グループの roles
および clusterroles
リソースに対する bind
および escalate
動詞。
コア API グループの users
、groups
、および serviceaccounts
に対する impersonate
動詞、そして authentication.k8s.io
API グループの userextras
。
各リソースがサポートするすべての動詞 は、kubectl api-resources --sort-by name -o wide
を実行することで見つけることができます。
例えば、特定のユーザーが次の操作を実行できるようにするために、ClusterRoleを使用できます:
ドキュメントから: ロールバインディングは、ロールで定義された権限をユーザーまたはユーザーのセットに付与します。これは、対象(ユーザー、グループ、またはサービスアカウント)のリストと、付与されるロールへの参照を保持します。RoleBindingは特定のnamespace内で権限を付与しますが、ClusterRoleBindingはそのアクセスをクラスター全体に付与します。
権限は加算されるため、もし「リスト」と「削除」のシークレットを持つclusterRoleがあれば、「取得」を持つRoleを追加できます。したがって、常に自分のロールと権限をテストし、許可されているものを明確に指定してください。デフォルトではすべてが拒否されます。
HTTP 動詞 | リクエスト動詞 |
---|---|
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)