セキュリティコンテキストとリソースクォータ付きPod

非rootユーザー、読み取り専用ルートファイルシステム、ケーパビリティの削除、厳格なリソースクォータなどのセキュリティコンテキスト設定を持つ強化されたKubernetesポッドを作成します。

Security

詳細な説明

強化されたPodセキュリティ

完全なケーパビリティでrootとしてコンテナを実行することはセキュリティのアンチパターンです。強化されたポッド設定は不要な権限を削除し、リソース境界を強制することで攻撃面を縮小します。

主要な設定

apiVersion: apps/v1
kind: Deployment
metadata:
  name: secure-app
  labels:
    app: "secure-app"
spec:
  replicas: 2
  template:
    spec:
      serviceAccountName: secure-app-sa
      containers:
        - name: app
          image: my-app:latest
          ports:
            - name: http
              containerPort: 8080
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "500m"
              memory: "256Mi"

各設定の重要性

  • runAsNonRoot:コンテナがUID 0(root)として実行されるのを防止
  • readOnlyRootFilesystem:コンテナファイルシステムへの書き込みを防止(一時ファイルにはemptyDirを使用)
  • drop ALL capabilities:すべてのLinuxケーパビリティを削除。必要なものだけ追加
  • allowPrivilegeEscalation: false:プロセスが親より多くの権限を取得するのを防止
  • seccompProfile:危険なシステムコールを制限するデフォルトのsyscallフィルターを適用

リソースクォータ

リクエストとリミットの両方を設定することが重要です:

  • Requests:ポッドがこれらのリソースを取得することを保証。スケジューリングに使用
  • Limits:OOMキル(メモリ)またはスロットリング(CPU)をトリガーするハードキャップ

リミットがないと、侵害されたまたはバグのあるコンテナがすべてのノードリソースを消費し、他のポッドに影響を与えます(ノイジーネイバー問題)。

ユースケース

PCI-DSS、SOC2、FedRAMPコンプライアンスなど、ポッドが最小権限と厳格なリソース境界で実行される必要がある厳しいセキュリティ要件のある環境でのワークロードのデプロイ。

試してみる — K8s Pod Spec Builder

フルツールを開く