k3sユーザー管理メモ
Posted:
背景
ラズパイ上でk3sでk8nを動かしている。 ユーザー管理周りを整備していきたい。ただ煩雑なので現状はk3sのサーバにログインして実行している。 おいおい設定していきたいがメモ
認証方法
Kubernetesでは、ユーザーは事前に定義された認証メカニズムを通じて認証される。 認証システムは複数ある
静的トークンファイル
APIサーバーを起動する際に–token-auth-fileフラグを使用して指定されたファイル。 このファイルはトークン、ユーザー名、UID、および所属するグループを含む。
証明書認証
クライアント証明書をAPIサーバーに提示して認証。 APIサーバーは–client-ca-fileフラグで指定されたCAによって署名された証明書を受け入れる。
OpenID Connect Tokens
OIDCプロバイダーを通じてトークンによる認証をサポート。
アクセスできるリソースの制限
認証後、ユーザーがクラスター内のリソースに対して実行できる操作は、認可ポリシーによって制御されます。Kubernetes には以下の認可モードがあります:
- Node
- Node認可は、kubeletが所有するノードリソースにのみアクセスを許可する。
- ABAC (Attribute-Based Access Control)
- 属性に基づくアクセス制御。ポリシーはファイルで管理。
- RBAC (Role-Based Access Control)
- ロールに基づくアクセス制御。最も一般的で、役割を定義してユーザーやグループに割り当てる。
- Webhook
- 外部のREST APIサービスに認可判断を委託。
RBACの例
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: "example-user"
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io