kube-apiserver の静的トークンファイル認証の確認

静的 API トークンの有効期間・失効・保管を確認し、必要に応じて管理可能な認証方式へ移行してください。

説明

--token-auth-file は、ファイルに保存した静的 Bearer トークンで kube-apiserver に認証する設定です。このトークンは自動では失効せず、トークン一覧の変更には API サーバーの再起動が必要です。

静的トークンファイルは現在もサポートされていますが、頻繁な交換や速やかな失効が必要な環境には適さない場合があります。保管・配布を制限し、この認証方式が必要か確認してください。

想定される影響

ファイルや配布済みトークンが漏えいすると、失効が反映されるまで、そのユーザー・グループの権限で再利用されるおそれがあります。再起動を伴う変更の計画を誤ると、正規クライアントの接続も停止する可能性があります。

対処方法

  • 先にユーザーとワークロードに適した代替認証と権限を準備してください。人には OIDC などの管理可能な認証、ワークロードには短期間のサービスアカウントトークンを検討してください。
  • 静的認証が不要になったら token-auth-file を削除し、各 API サーバーに変更を適用してください。不要なトークンファイルと配布済みコピーも安全に削除してください。
  • 必要な操作が成功し、以前のトークンと未承認の要求が拒否されることを確認してください。継続使用する静的トークンは、最小限の権限、制限されたファイルアクセス、明確な失効手順で管理してください。

例

Kubernetes 1.6 の起動オプションの抜粋です。現在の環境で古いイメージを使うことを勧めるものではなく、実際の認証・認可は別途設定する必要があります。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: api-server
spec:
  containers:
    - name: kube-apiserver
      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
      command:
        - "kube-apiserver"
      args:
        - "--token-auth-file=/path/to/any/file"

指定ファイルの静的トークン認証を有効にしています。例示パスを実在するファイルに置き換えるだけでは、有効期間や保管のリスクは解消しません。

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: api-server
spec:
  containers:
    - name: kube-apiserver
      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
      command:
        - "kube-apiserver"

静的トークンファイルのオプションを削除しています。正規クライアントの代替認証を先に設定し、以前のトークンが拒否されることを検証してください。

参考資料