説明
--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"]
補足:
- 変更前: 匿名認証により、認証情報のない要求も処理の対象になります。
- 変更後: 匿名認証を無効にし、認証された要求だけを処理するよう制限します。