検索

第2章 Pod Security Admission (PSA)

download PDF

Red Hat OpenShift は、Pod Security Admission (PSA) を使用して、同じ Red Hat OpenShift クラスター内にあるアプリケーション Pod に一連のセキュリティールールを適用します。Cryostat のコンテキストでは、これらのアプリケーション Pod には、Cryostat Pod と Report サイドカー Pod が含まれます。オプションで、Cryostat カスタムリソース (CR) で Report サイドカー Pod を有効にすることができます。アプリケーションがポリシー基準を満たしていない場合、そのアプリケーションを Red Hat OpenShift クラスターで実行することはできません。

Red Hat OpenShift 4.8 では PodSecurityPolicy API が非推奨となり、代わりに PSA が使用されます。PSA には以下のメリットがあります。

  • アプリケーション Pod に Pod セキュリティー標準を適用できる組み込みコントローラーが含まれています。
  • PrivilegedBaselineRestricted の 3 つの異なるポリシーを定義する Pod セキュリティー標準のセットが含まれています。

Red Hat OpenShift では、Security Context Constraints (SCC) で PSA を使用して、Red Hat OpenShift クラスターのポリシーを定義できます。デフォルトでは、restricted-v2 SCC は Restricted Pod セキュリティー標準に準拠しています。

注記

デフォルトでは、Cryostat Pod のセキュリティーコンテキストは restricted-v2 SCC に準拠します。つまり、Red Hat OpenShift は、Restricted Pod セキュリティー標準を強制する namespace で Pod を許可できます。

Restricted ポリシーでは、Red Hat build of Cryostat Operator がコンテナーセキュリティーコンテキストを次のように設定する必要があります。

  • ALL 機能を停止します。
  • allowPrivilegeEscaltionfalse に設定します。

Restricted ポリシーでは、Red Hat build of Cryostat Operator が Pod セキュリティーコンテキストを次のように設定する必要があります。

  • runAsNonRoottrue に設定します。
  • seccompProfileRuntimeDefault に設定します。

さらに、Red Hat build of Cryostat Operator は、Cryostat アプリケーション Pod の Pod セキュリティーコンテキストで fsGroup を定義し、Cryostat が Red Hat OpenShift の永続ストレージボリューム内のファイルを読み書きできるようにします。

Restricted Pod セキュリティー標準への準拠以外に追加の要件がある場合は、Cryostat が使用するデフォルトのセキュリティーコンテキストをオーバーライドできます。

2.1. セキュリティーコンテキストの設定

Red Hat OpenShift の Cryostat カスタムリソース (CR) で、Pod とコンテナーのセキュリティーコンテキストを指定できます。セキュリティーコンテキストは、Cryostat Pod、Report サイドカー Pod (使用中の場合)、および各 Pod のコンテナーにパーミッションを適用します。

注記

CR の設定を変更すると、これらの設定はデフォルトのセキュリティーコンテキスト設定をオーバーライドします。

セキュリティーコンテキストは、Pod 内に存在するアプリケーションに特定のパーミッションを適用します。セキュリティーコンテキストは、SCC ポリシーの基準を変更できません。カスタム SCC を作成して、Pod が実行できるアクションや Pod がアクセスできるリソースなど、厳密なパーミッションを Pod に適用するように Red Hat OpenShift クラスターに指示できます。

カスタム SCC を作成するには、クラスター管理パーミッションが必要です。また、クラスターで動作するすべての Pod のセキュリティーコンテキストを作成して、これらの Pod がカスタム SCC 要件を満たすようにする必要があります。

SCC は Red Hat OpenShift のクラスターレベルと namespace レベルで変更を強制的に適用するため、このクラスター内部で動作するすべての Pod がポリシー基準を受け取ります。これに対して、セキュリティーコンテキストは Pod 固有のものになります。

デフォルトでは、Red Hat build of Cryostat Operator は Cryostat Pod の restricted-v2 SCC ポリシーに準拠しています。

デフォルトでは、Red Hat build of Cryostat Operator は、Cryostat とそのコンポーネント (jfr-datasourcegrafana など) のサービスアカウントを作成します。

このサービスアカウントでカスタム SCC を使用できるようにするには、以下のいずれかの手順を実行します。

  • カスタム SCC を 使用 するロールに Cryostat サービスアカウントをバインドする Role Binding を作成します。
  • Label Syncer コンポーネントを使用して、プロジェクトの名前空間が PSA ポリシーに従うように指示します。
注記

Label Syncer コンポーネントは、このドキュメントの範囲外になります。通常、openshift- タグの接頭辞が付けられた Red Hat OpenShift システムの namespace で Label Syncer コンポーネントは使用できません。

重要

特定のパーミッションをアプリケーション Pod に適用するようにセキュリティーコンテキストを設定する前に、Red Hat OpenShift 上のクラスターにもたらされる可能性があるセキュリティーリスクを考慮してください。PSA では、通常、ほとんどの要件を満たす 3 つの段階的なポリシーレベルが用意されています。Red Hat は、Red Hat OpenShift Pod のセキュリティー標準に準拠しないセキュリティーコンテキストの変更について一切の責任を負いません。

前提条件

  • Red Hat OpenShift Web コンソールを使用して OpenShift Container Platform にログインしている。
  • Red Hat build of Cryostat Operator を Red Hat OpenShift のプロジェクトにインストールしている。Red Hat build of Cryostat Operator を使用した Red Hat OpenShift への Cryostat のインストール (Cryostat のインストール) を参照してください。
  • オプション: PSA と SCC の新しいポリシーを参照している。セキュリティーコンテキスト制約の管理 (OpenShift Container Platform) を参照してください。
  • オプション: PSA が提供する 3 つのポリシーのいずれかを使用するようにプロジェクトを設定している。

    • カスタム SCC を使用して Pod に特定のポリシーを適用する場合は、Pod のサービスアカウントがそれにアクセスできるように SCC を設定する必要があります。

手順

  1. Red Hat OpenShift Web コンソールから、Operators > Installed Operators をクリックします。
  2. 使用可能な Operator のリストから、Red Hat build of Cryostat を選択します。
  3. Provided APIs > Create をクリックします。Red Hat build of Cryostat Operator は、Report サイドカー Pod のサービスアカウントを作成しません。代わりに、これらの Pod は独自の namespace でデフォルトのサービスアカウントを使用します。
  4. セキュリティーコンテキストを設定するには、次のいずれかのオプションを完了します。

    1. YAML view をクリックします。spec: 要素から、セキュリティー要件に一致するように securityOptions プロパティーおよび reportOptions プロパティーを編集します。

      セキュリティーコンテキストの設定例

      apiVersion: operator.cryostat.io/v1beta1
      kind: Cryostat
      metadata:
        name: cryostat-sample
      spec:
        securityOptions:
          podSecurityContext:
            runAsNonRoot: true
            seccompProfile:
              type: RuntimeDefault
          coreSecurityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - ALL
            runAsUser: 1001
          dataSourceSecurityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - ALL
          grafanaSecurityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - ALL
        reportOptions:
          replicas: 1
          podSecurityContext:
            runAsNonRoot: true
            seccompProfile:
              type: RuntimeDefault
          reportsSecurityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - ALL
            runAsUser: 1001

    2. Advanced Configurations を展開して、Red Hat OpenShift Web コンソールで追加のオプションを開きます。

      図2.1 詳細設定メニューオプション

      *Advanced configuration* メニューとそのオプション
    3. Core Security Context を展開します。使用可能なオプションのリストから、セキュリティーコンテキストの設定を定義します。
  5. Create をクリックします。
  6. 必要に応じて、Data Source Security ContextGrafana Security Context、および Pod Security Context の手順 1 - 5 を繰り返します。
  7. オプション: Report Generator サービスを使用している場合は、以下のように、このサービスのセキュリティーコンテキストを設定することもできます。

    1. Report Options から、Advanced Configurations を展開します。
    2. Security Options を展開します。必要に応じて、Reports Security Context および Pod Security Context を定義します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.