説明
--service-account-key-fileは、サービスアカウントトークンの署名を検証するPEM鍵ファイルを指定します。省略すると--tls-private-key-fileの鍵を使うため、このオプションがないだけでトークンの検証が無効になるわけではありません。
サービスアカウントトークンはクラスターへのアクセスによく使われます。トークンの署名設定に対応する検証鍵が必要です。
想定される影響
- 署名鍵と検証鍵が一致しないと、正当なトークンで認証できなくなるおそれがあります。
- 不要な鍵を信頼すると、意図しない発行元のトークンを受け入れる危険があります。
対処方法
- ローカルの署名鍵を使う場合は、対応する検証鍵を
--service-account-key-fileで設定してください。--service-account-signing-key-fileを使う場合にも、この検証鍵オプションが必要です。 - 鍵の管理手順を文書化し、署名鍵と検証鍵を整合性のある状態で配布してください。
- ファイルのパスと権限を確認してください。外部署名機能を使うバージョンと構成では、その検証設定に従い、相互に排他的なローカル鍵オプションを併用しないでください。
例
以下はKubernetes 1.6時代の設定の抜粋です。本番環境ではサポート中のバージョンを使い、必要な鍵ファイルのマウントとその他の制御プレーン設定を別途構成してください。
変更前
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"]
args: []
変更後
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"]
args: ["--service-account-key-file=/path/to/file.pem"]
説明:
- 変更前: 検証鍵ファイルを明示していません。実際に使用する代替の鍵や外部署名の設定を確認してください。
- 変更後: 検証鍵ファイルを明示しています。パスが存在し、実際の署名鍵に対応する鍵が含まれている必要があります。