基本認証ファイルを使用する kube-apiserver

従来のパスワードファイル認証を、サポートされる認証方式へ移行してください。

説明

--basic-auth-file は、ローカルファイルのユーザー名とパスワードで認証する kube-apiserver の旧オプションです。長期間使用するパスワードとファイル権限の管理が必要で、漏えいした認証情報を API アクセスに悪用されるおそれがあります。この認証方式は Kubernetes 1.19 で削除されました。

想定される影響

  • パスワードファイルやクライアントの認証情報が漏えいすると、該当ユーザーの権限で API にアクセスされる可能性があります。
  • 古い認証構成は、認証情報の無効化・更新や、サポートされる Kubernetes への移行を難しくする場合があります。

対処方法

  • OIDC などサポートされる認証方式と必要なユーザー権限を先に設定し、実際のログインを確認してください。
  • 既存クライアントを移行してから --basic-auth-file を削除し、不要になったパスワードとファイルを安全に廃止してください。
  • サポートされる Kubernetes へ移行し、TLS、最小権限の認可、監査記録も確認してください。

例

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"
        - "--basic-auth-file=/path/to/auth.csv"

API サーバーが指定された静的パスワードファイルを使用します。ファイルと認証情報を漏えいから保護する必要があります。

変更後

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"

基本認証ファイルの使用を停止します。フラグの削除だけでは代替認証は設定されないため、既存クライアントを先に移行してください。

参考資料