Kubelet Authentication & Authorization
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)
デフォルトでは、他の設定された認証方法によって拒否されないkubeletのHTTPSエンドポイントへのリクエストは、匿名リクエストとして扱われ、ユーザー名は system:anonymous
、**グループは system:unauthenticated
**が与えられます。
3つの 認証 方法 は次のとおりです:
匿名 (デフォルト): パラメータ --anonymous-auth=true
または設定を使用します:
Webhook: これにより、kubectl APIベアラートークンが認証として有効になります(有効なトークンはすべて有効です)。次のように許可します:
APIサーバーでauthentication.k8s.io/v1beta1
APIグループが有効になっていることを確認します
**--authentication-token-webhook
および--kubeconfig
**フラグを使用してkubeletを起動するか、次の設定を使用します:
kubeletは、設定されたAPIサーバー上で**TokenReview
API**を呼び出して、ベアラートークンからユーザー情報を特定します
X509クライアント証明書: X509クライアント証明書を介して認証を許可します
詳細については、apiserver認証ドキュメントを参照してください
--client-ca-file
フラグを使用してkubeletを起動し、クライアント証明書を検証するためのCAバンドルを提供します。または、設定を使用して:
成功裏に認証されたリクエスト(匿名リクエストを含む)は、その後認可されます。デフォルトの認可モードは**AlwaysAllow
**で、すべてのリクエストを許可します。
しかし、他の可能な値は**webhook
です(これは主に見つかるものです**)。このモードは、認証されたユーザーの権限を確認して、アクションを許可または拒否します。
匿名認証が有効になっていても、匿名アクセスにはアクションを実行する権限がない場合がありますので注意してください。
Webhookによる認可は、**パラメータ --authorization-mode=Webhook
**を使用するか、設定ファイルで次のように構成できます:
The kubeletは、設定されたAPIサーバー上で**SubjectAccessReview
** APIを呼び出して、各リクエストが認可されているかどうかを 判断します。
kubeletは、apiserverと同じリクエスト属性アプローチを使用してAPIリクエストを認可します:
アクション
Kubelet APIと通信するリソースは常に nodesであり、サブリソースは受信リクエストのパスから決定されます:
例えば、次のリクエストは、権限なしでkubeletのポッド情報にアクセスしようとしました:
Forbiddenを受け取ったので、リクエストは認証チェックを通過しました。そうでなければ、単にUnauthorized
メッセージが表示されていたでしょう。
ユーザー名(この場合はトークンから)を見ることができます。
リソースがノードであり、サブリソースがプロキシであることを確認します(これは前の情報と一致します)。
HTTP動詞 | リクエスト動詞 |
---|---|
Kubelet API | リソース | サブリソース |
---|---|---|
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
POST
create
GET, HEAD
get(個々のリソースの場合)、list(コレクションの場合、完全なオブジェクトコンテンツを含む)、watch(個々のリソースまたはリソースのコレクションを監視するため)
PUT
update
PATCH
patch
DELETE
delete(個々のリソースの場合)、deletecollection(コレクションの場合)
/stats/*
nodes
stats
/metrics/*
nodes
metrics
/logs/*
nodes
log
/spec/*
nodes
spec
その他すべて
nodes
proxy