説明
automountServiceAccountTokenを無効にしない場合、Podにサービスアカウントトークンが自動的に追加されることがあります。Kubernetes APIを呼び出さないアプリケーションには、不要な認証情報です。
Podに指定がなければServiceAccountの設定が適用され、両方に値があればPodの設定が優先されます。不要なトークンは、アプリケーションの脆弱性やデバッグツールを通じて漏えいするおそれがあります。必要な場合だけ明示的に許可してください。
想定される影響
- Kubernetes APIへのアクセスが不要なPodが、アクセストークンを保持する可能性があります。
- コンテナーの侵害によってトークンが盗まれ、他のリソースに使われるおそれがあります。
- ワークロードごとのAPIアクセスの必要性が不明確になる場合があります。
対処方法
- Kubernetes APIが不要なPodには
automountServiceAccountToken: falseを設定してください。 - 既定値に任せず、ワークロードごとにトークンの要否を判断してください。
- トークンが必要なワークロードには、権限を制限した専用のServiceAccountを使用してください。
例
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: security.context.demo
spec:
automountServiceAccountToken: true
containers:
- name: sec-ctx-demo
image: busybox
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
automountServiceAccountToken: false
containers:
- name: sec-ctx-demo
image: busybox
説明:
- 変更前: Podに不要であってもトークンがマウントされる可能性があります。
- 変更後: 自動マウントを無効にして、トークンが露出する機会を減らします。アカウントのRBAC権限を取り消したり、別途提供された認証情報を削除したりする設定ではありません。