ServiceAccountトークンの自動マウントの無効化漏れ

トークンが不要なPodにもサービスアカウントトークンを自動マウントすると、Kubernetes APIの認証情報が不必要に露出するおそれがあります。

説明

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権限を取り消したり、別途提供された認証情報を削除したりする設定ではありません。

参考資料