アカウント、認証情報、権限
アカウント、認証情報、権限は、要求に使用する ID、有効期限、許可される操作を決定します。
ID モデル
| 概念 | 用途 | 終了条件 |
|---|---|---|
| アカウント | アクセス ID を表す Kubernetes ServiceAccount | アカウントの失効時に削除 |
| 認証情報 | 要求を認証する kubeconfig 内のトークン | 期限切れ、またはアカウントの失効 |
| 権限付与 | 既存の Role または ClusterRole で割り当てる権限 | 対応するバインディングの削除時 |
1 つのアカウントに複数の認証情報を発行でき、有効な認証情報はすべて同じ権限を共有します。追加発行は以前の認証情報を置き換えず、権限変更は有効期限を延長しません。トークンが期限切れになってもアカウントと権限は残ります。
ServiceAccount はアカウントの名前空間に置かれ、既定は kticket-users です。対象の名前空間は権限の範囲を制限し、別の名前空間を指定できます。専用のアカウント名前空間を使用してください。同名の既存 ServiceAccount は再利用されて kticket の管理対象となり、失効操作による削除の対象になります。
例えば、kticket-users の alice は system:serviceaccount:kticket-users:alice として認証されます。kubeconfig のローカルユーザー別名はこの ID を変更しません。
権限変更
- 発行では選択した権限を既存の権限に追加します。
--access noneは権限を追加せず、既存のアクセス権も消去しません。 - RoleBinding は対象の名前空間に権限を限定し、ClusterRoleBinding はクラスター全体に付与します。kticket は既存のロールを使用し、独自のロールルールは作成しません。
- アクセス権の編集で管理対象の権限を追加・置換・削除できます。YAML 設定には必要な管理対象権限の完全なセットを記述します。
- Kubernetes RBAC の権限は加算されます。外部バインディングやグループ割り当てもアクセスを許可でき、kticket はそれらを読み取り専用で表示します。
権限一覧は実効権限を網羅しません。特定の操作を確認するには TUI の権限確認または kticket access check を使用してください。例はCLI リファレンスをご覧ください。
権限の置換中にアクセスが一時中断する場合があります。途中で失敗しても完了済み操作はロールバックしません。アカウントを再読込し、新しい計画を確認してから適用してください。トラブルシューティングをご覧ください。
kticket は権限を自動失効させず、同一アカウントのトークンごとに別の権限を割り当てず、単一トークンを個別に失効させません。独立した権限や失効が必要な場合は別々のアカウントを使用してください。
トークンの有効期間
要求する有効期間の既定値は 24h、最短は 10m です。API サーバーが実際の期間を調整する場合があります。発行結果に表示する有効期限を使用してください。
受取人は kticket をインストールせず、kubectl で kubeconfig を直接使用できます。ファイルには Bearer トークンが含まれるため、認証情報として保護し、信頼できる経路で共有してください。
失効
kticket revoke と TUI の失効操作は ServiceAccount と管理対象バインディングを削除し、そのアカウントの全認証情報に影響します。Kubernetes は次回検証時にトークンを拒否します。同名のアカウントを再作成しても旧トークンは有効になりません。
失効は確立済み接続を終了せず、名前空間、共有ロール、外部バインディング、ローカル kubeconfig も削除しません。
アカウント削除後にバインディングの削除が失敗した場合、再作成前に管理者権限で残ったバインディングを確認・削除してください。新しいアカウントが残存権限を引き継ぐのを防ぎます。
認証情報の記録
kticket list --credentials を実行するか、TUI のアカウント一覧・アクセスエディターで v を押すと、認証情報 ID、発行・有効期限、利用可能な監査 ID を確認できます。
履歴は記録済みの認証情報のみです。記録がなくても有効なトークンがないとは限りません。「期限内」は時刻の状態を示すだけで、認証・認可の成功を保証しません。記録の削除はトークンを失効させません。
クラスターが関連する Kubernetes 監査イベントを記録する場合、監査 ID で発行と後続要求を関連付けられます。可否はクラスターの監査情報に依存します。ローカル生成の ID ではネイティブの監査関連付けはできず、同一 kubeconfig のコピーも区別できません。
管理者権限
必要な権限は操作によって異なります:
| 操作 | 必要なアクセス権 |
|---|---|
| 発行 | 名前空間・ロール・アカウント・バインディングの読取、不足するアカウント名前空間と ServiceAccount の作成、ラベル・アノテーション更新、バインディングと serviceaccounts/token の作成 |
| 一覧 | 管理対象 ServiceAccount、全名前空間の RoleBinding、ClusterRoleBinding の一覧取得と指定したアカウント名前空間の読取 |
| 失効 | 管理対象 ServiceAccount の読取・削除と、一致する管理対象バインディングの一覧取得・削除 |
| 権限の管理 | アカウント・対象名前空間・ロール・バインディングの読取、バインディングの作成・削除と管理ラベルの更新 |
| 権限確認 | アカウントと対象名前空間の読取、subjectaccessreviews.authorization.k8s.io の作成 |
| TUI の入力候補 | API ディスカバリーと関連オブジェクトの読取・一覧権限 |
Kubernetes RBAC のバインディング制限は引き続き適用されます。サーバー側 dry-run にも書込権限が必要です。制限付き管理者ロールは、使用する操作とリソース範囲を網羅する必要があります。ライセンスの有効化は Kubernetes 管理者権限を付与しません。