0Pricing
DevOps Bootcamp · レッスン

Podセキュリティ標準

Podセキュリティ標準を適用し、Podレベルでセキュリティのベストプラクティスを徹底します。

「Podセキュリティ標準」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

PSS とは?

Kubernetes Pod Security Standards(PSS)は、Pod にセキュリティのベストプラクティスを適用するためのガイドラインと制御機能の集合です。

Pod が実行できる操作を制限することで、一般的なセキュリティ脆弱性や権限昇格攻撃からクラスターを保護します。

Pod のセキュリティチェックリストのようなものだと考えてください。

3 つのセキュリティレベル

PSS では、保護の度合いが異なる 3 つのセキュリティレベルを定義しています。

  • Privileged: 制限がなく、最も安全性が低いレベル。
  • Baseline: 既知の権限昇格を防止するレベル。
  • Restricted: 強化されたセキュリティのベストプラクティスを適用するレベル。

これらのレベルは累積的です。つまり、Restricted には Baseline のすべての保護が含まれ、Baseline には Privileged のすべての保護(正確には制限なし)が含まれます。

Privileged:無制限のアクセス

Privileged PSS レベルは、制限のないセキュリティポリシーを提供します。

このポリシーで実行される Pod は、任意の capability を要求でき、ホストのリソースと namespace に完全にアクセスできます。これは、ホストマシン上で root として実行する場合に似ています。

一般的に非常に危険と考えられており、そのアクセスがどうしても必要なシステムレベルのワークロードにのみ使用すべきです。

Baseline:悪用を防止する

Baseline PSS レベルは、既知の権限昇格を防止することを目的としています。

ほとんどのユーザー定義アプリケーションにとって、よい出発点となります。

主な制限は次のとおりです。

  • 特権コンテナは使用できません。
  • hostPath ボリュームは使用できません(安全性が確認された特定の種類を除く)。
  • ホストネットワークや PID namespace の共有はできません。
  • 使用できる capability が制限されます。

このレベルにより、一般的な攻撃経路の多くを軽減できます。

Restricted:強化されたセキュリティ

Restricted PSS レベルは、強化されたセキュリティのベストプラクティスを適用します。

高度なセキュリティが求められるアプリケーション向けに設計されており、Pod を最小限の権限で実行することを要求します。

Baseline の制限に加えて、Restricted では次のことを適用します。

  • root 以外のユーザーとして実行する。
  • Linux capability をすべて削除し、必要なものだけを追加する。
  • seccomp と AppArmor のプロファイルを必須とする。

これは PSS の中で最も安全かつ厳格なレベルです。

Admission による PSS の適用

Pod Security Standards は、Pod Security Admission と呼ばれる Kubernetes の機能を使用して適用します。

この Admission Controller は Pod の作成リクエストを intercept し、Pod の namespace に設定された PSS レベルに照らして検証します。

namespace に特定のラベルを追加することで、PSS レベルを適用できます。例:

kubectl label namespace <namespace-name> pod-security.kubernetes.io/enforce=restricted

Pod セキュリティの制御

Pod を PSS に準拠させるには、通常、Pod 定義の securityContext フィールドを使用します。

このフィールドでは、Pod または Pod 内の個々のコンテナに対する権限とアクセス制御の設定を定義できます。

よく使用する設定は次のとおりです:

  • runAsUser: コンテナプロセスのユーザー ID を指定します。
  • allowPrivilegeEscalation: プロセスが親プロセスより多くの権限を取得することを防ぎます。
  • capabilities: Linux capabilities を管理します。

安全でない Pod の例

セキュリティコンテキストが原因で Baseline PSS に違反する Pod 定義を見てみましょう。これは一般的に安全ではありません:

apiVersion: v1
kind: Pod
metadata:
  name: unsafe-pod
spec:
  containers:
  - name: my-container
    image: nginx
    securityContext:
      privileged: true
      # This allows the container to run with root capabilities
      # and access host devices directly.
      # Violates Baseline PSS.

Baseline 準拠の Pod の例

Baseline PSS レベルに準拠する Pod は、次のように定義します。privileged: true がなく、その他の制限も設定されていない点に注目してください。

さらに厳格な Restricted 準拠にするには、runAsNonRoot: true、readOnlyRootFilesystem: true を追加し、すべての capabilities を削除します。

apiVersion: v1
kind: Pod
metadata:
  name: safe-pod
spec:
  containers:
  - name: my-container
    image: nginx
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      # This Pod runs with minimal privileges and
      # adheres to the Baseline PSS.

PSS クイックチェック

Pod Security Standards (PSS) について、正しい説明は次のうちどれですか?

まとめ: Pod Security Standards

このレッスンでは、Kubernetes Pod Security Standards (PSS) と、クラスターのセキュリティ確保における重要性について学びました。

  • PSS には Privileged、Baseline、Restricted の 3 つのレベルがあります。
  • Baseline は、既知の権限昇格を防ぎ、ほとんどのアプリに適しています。
  • Restricted は強化されたセキュリティを適用し、最小限の権限のみを要求します。
  • securityContext フィールドを使用して、Pod を PSS に準拠するよう設定できます。

PSS の適用は、より安全な Kubernetes 環境を構築するための重要なステップです。

よくある質問

「Podセキュリティ標準」レッスンは無料ですか?

はい。「Podセキュリティ標準」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「Podセキュリティ標準」で何を学びますか?

Podセキュリティ標準を適用し、Podレベルでセキュリティのベストプラクティスを徹底します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Podセキュリティ標準」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Role-Based Access Control(RBAC)
  2. 分離のためのNetwork Policy
  3. Podセキュリティ標準
  4. サービスアカウントとワークロードアイデンティティ
← DevOps Bootcampに戻る