コンテナーへの attach を許可する RBAC

pods/attach の権限により、実行中のコンテナーの出力への接続やプロセスとのやり取りが可能になります。

説明

pods/attach へのアクセス権があると、実行中のコンテナーの出力に接続し、標準入力が有効な場合は入力を送れます。exec のように新しいコマンドを起動するわけではありませんが、実行中のプロセスと直接やり取りできるため、慎重に扱う必要があります。

強い権限を持つコンテナーへの接続は、情報の取得やワークロードの悪用につながるおそれがあります。本番環境では必要な場合だけに限定してください。

想定される影響

  • 実行中のコンテナーのセッションに直接接続できます。
  • 機密性の高い出力や内部の動作をリアルタイムで観察される可能性があります。
  • 強い権限のコンテナーとのやり取りを通じて、さらに悪用されるおそれがあります。

対処方法

  • RBAC ロールから不要な pods/attach リソースへのアクセス権を削除してください。
  • デバッグには承認された手順と制限付きのアカウントを使ってください。
  • 本番環境の対話的なアクセスは、必要な担当者だけに許可してください。

例

利用者にロールを付与する RoleBinding は省略しています。ほかのロールによる許可も確認してください。

変更前

yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: my-namespace
  name: allow-attach
rules:
  - apiGroups: [""]
    resources: ["pods", "pods/attach"]
    verbs: ["get", "list", "create"]

変更後

yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: my-namespace
  name: allow-attach-neg
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list", "create"]

説明:

  • 変更前: pods/attach により、実行中のコンテナーのセッションに直接接続できます。
  • 変更後: このロールから attach の許可を削除します。Pod の作成権限は残るため、必要性を別途確認してください。

参考資料