匿名認証の無効化が未設定

不要な匿名認証と認可権限を制限し、API とノードへのアクセスを保護してください。

説明

--anonymous-auth=false が設定されていない場合、認証情報のない要求が匿名ユーザーとして扱われることがあります。権限が広すぎると、そうした要求が意図せず許可されるおそれがあります。

必要がなければ匿名認証を無効にしてください。ヘルスチェックなどで匿名要求が必要な場合は、対象のパスと権限を限定してください。匿名ユーザーとして扱うことと、要求を認可することは別です。

想定される影響

  • 未認証のユーザーが API やノード設定へのアクセスを試みる場合があります。
  • 他の設定ミスと組み合わさると、情報漏えいや権限の悪用につながるおそれがあります。
  • コントロールプレーンのアクセス方針が意図より緩くなる場合があります。

対処方法

  • フラグで構成する kube-apiserver には --anonymous-auth=false を設定してください。kubelet は authentication.anonymous.enabled: false など、実際に使っている設定方法で無効にしてください。
  • static Pod、マニフェスト、起動スクリプトの設定を確認してください。
  • 明確な例外が必要な場合を除き、匿名認証を無効に維持してください。

例

API サーバーの引数を比較する既存の例です。古いイメージを本番環境で使わず、実際のクラスターのバージョンに合わせてください。認証情報、ネットワーク、認可の設定は省略しています。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
      command: ["kube-apiserver", "--anonymous-auth=true"]

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
      command: ["kube-apiserver", "--anonymous-auth=false"]

補足:

  • 変更前: 匿名認証により、認証情報のない要求も処理の対象になります。
  • 変更後: 匿名認証を無効にし、認証された要求だけを処理するよう制限します。

参考資料