コンテナーの実行 UID 設定の確認

イメージとボリュームに合う専用の非 root UID を指定し、実際のユーザーマッピングとファイル権限を確認してください。

説明

コンテナーの数値 UID がホストや共有ボリュームの別ユーザーと重なると、意図しないファイルアクセスにつながる場合があります。影響はユーザー名前空間の UID マッピング、アクセス可能なマウント、ファイル権限に依存します。UID が小さいことだけでホスト権限を得るわけではありません。

専用の非 root UID を割り当て、イメージとマニフェストで一貫して使用してください。数値を大きくするだけでは隔離を保証できません。

想定される影響

アクセス可能なファイルの所有者 UID が重なると、別ユーザーのファイルを読み取ったり変更したりするおそれがあります。計画せず UID を変更すると、必要なファイルにアクセスできず、起動やデータ処理が失敗する場合もあります。

対処方法

  • 割り当てた非 root UID を runAsUser に指定し、Pod の既定値とコンテナーの上書き設定を確認してください。
  • runAsGroup、ボリューム所有権、ファイル権限を実際の UID マッピングに合わせ、不要なホストマウントを削除してください。
  • 必要なファイルアクセスとアプリケーション動作が維持され、別ユーザーのファイルへのアクセスが拒否されることを検証してください。

例

UID の割り当てを比較する例です。イメージが指定 UID で動作する必要があり、ファイルとボリュームの権限は別途準備してください。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-2
spec:
  securityContext:
    runAsUser: 1000
  containers:
    - name: sec-ctx-demo-2
      image: gcr.io/google-samples/node-hello:1.0
      securityContext:
        runAsUser: 2000
        allowPrivilegeEscalation: false

コンテナーは Pod の UID 1000 を上書きし、UID 2000 で動作します。実際のマウントで別ユーザーの UID と重ならないか確認してください。

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-2
spec:
  securityContext:
    runAsUser: 10000
  containers:
    - name: sec-ctx-demo-2
      image: gcr.io/google-samples/node-hello:1.0
      securityContext:
        runAsUser: 10100
        allowPrivilegeEscalation: false

コンテナーに UID 10100 を指定しています。10000 以上という数値だけで安全が保証されるわけではないため、実際の割り当てとファイル権限を確認してください。

参考資料