3.7. seLinuxChangePolicy を使用して Pod のタイムアウトを減らす


SELinux (Security-Enhanced Linux) は、システム上のすべてのオブジェクト (ファイル、プロセス、ネットワークポートなど) にセキュリティーラベル (コンテキスト) を割り当てるセキュリティーメカニズムです。これらのラベルにより、プロセスが何にアクセスできるか決まります。Red Hat OpenShift Service on AWS において、SELinux はコンテナーのエスケープや、ホストシステムや他のコンテナーへのアクセスを防ぐ役割を果たします。

Pod が起動すると、コンテナーランタイムは、Pod の SELinux コンテキストに合わせて、ボリューム上のすべてのファイルに対して再帰的にラベルの再設定を行います。多くのファイルを含むボリュームの場合、これにより Pod の起動時間が大幅に長くなる可能性があります。

マウントオプションは、-o context マウントオプションを使用して正しい SELinux ラベルでボリュームを直接マウントしようとすることで、すべてのファイルの再帰的なラベル付けを回避するように指定します。これにより、Pod のタイムアウト問題を回避することができます。

RWOP と SELinux マウントオプション

ReadWriteOncePod (RWOP) 永続ボリュームは、デフォルトで SELinux マウント機能を使用します。

マウントオプション機能はドライバーに依存しており、AWS EBS および Red Hat OpenShift Data Foundation ではデフォルトで有効になっています。サードパーティーのドライバーは、ストレージベンダーにお問い合わせください。

RWO、RWX、SELinux マウントオプション

ReadWriteOnce (RWO) および ReadWriteMany (RWX) ボリュームは、デフォルトでラベルの再帰的な再設定を使用します。

重要

今後の Red Hat OpenShift Service on AWS バージョンでは、RWO および RWX ボリュームは デフォルトでマウントオプション を使用します。

今後のマウントオプションのデフォルトへの移行を支援するために、Red Hat OpenShift Service on AWS 4.20 では、潜在的な競合を知らせるために Pod の作成時および Pod の実行時に SELinux 関連の競合を報告し、解決できるようにします。このレポートの詳細は、Kowledge Base の記事 を参照してください。

SELinux 関連の競合を解決できない場合は、選択した Pod または namespace のデフォルトとして、今後のマウントオプションへの移行を事前にオプトアウトできます。オプトアウトする場合は、SELinux マウントオプションのデフォルトをオプトアウトする を参照してください。

3.7.1. RWO、RWX、SELinux マウントオプション機能のテスト

Red Hat OpenShift Service on AWS 4.20 では、RWO および RWX ボリュームのマウントオプション機能をテクノロジープレビュー機能として評価できます。

重要

RWO/RWX SELinux マウントはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

マウントオプション機能を評価するには、以下を実行します。

  • フィーチャーゲートを有効にします。フィーチャーゲートを有効にする方法については、フィーチャーゲートを使用した機能の有効化 セクションを参照してください。

    RWO および RWX ボリュームには、デフォルトの動作としてマウントオプションが追加されました。

アプリケーションを慎重にテストし、ストレージがどのように使用されているかを観察します。問題が発生する場合は、この ナレッジベースの記事 を参照して、マウントオプションをオプトアウトすることを検討してください。SELinux マウントオプションのデフォルトをオプトアウトする セクションを参照してください。

3.7.2. SELinux マウントオプションのデフォルトをオプトアウトする

マウントオプションの今後の移行をデフォルトでオプトアウトする場合は、個々の Pod または namespace レベルで seLinuxChangePolicy パラメーターを Recursive に設定します。

3.7.2.1. namespace レベルでの seLinuxChangePolicy の変更

任意の seLinuxChangePolicy 設定を namespace レベルで適用すると、その後その namespace に作成されるすべての Pod に、その設定が継承されます。ただし、個々の Pod に継承された seLinuxChangePolicy 設定は、必要に応じてオーバーライドできます。Pod レベルで seLinuxChangePolicy を設定すると、その Pod に継承された namespace レベルの設定がオーバーライドされます。

前提条件

  • 管理者特権で Red Hat OpenShift Service on AWS クラスターにログインした。
  • Red Hat OpenShift Service on AWS にアクセスできる。

手順

namespace ごとに SELinuxChangePolicy を設定するには、以下を実行します。

  1. 任意の namespace を選択します。

    1. Administration > Namespaces をクリックします。
    2. Namespaces ページで、任意の namespace をクリックします。Namespace details ページが表示されます。
  2. seLinuxChangePolicy ラベルを namespace に追加します。

    1. Namespace details ページで、Labels の横にある Edit をクリックします。
    2. Edit labels ダイアログで、storage.openshift.io/selinux-change-policy=Recursive ラベルを追加します。

      これは、Pod ボリューム上のすべてのファイルに対して、適切な SELinux コンテキストへの再帰的なラベルの再設定を行うように指定します。

    3. Save をクリックします。

検証

編集した namespace で Pod を起動し、spec.securityContext.seLinuxChangePolicy パラメーターが Recursive に設定されていることを確認します。

seLinuxChangePolicy 設定を示す pod YAML ファイルの例

securityContext:
    seLinuxOptions:
      level: 's0:c27,c19'
    runAsNonRoot: true
    fsGroup: 1000740000
    seccompProfile:
      type: RuntimeDefault
    seLinuxChangePolicy: Recursive 
1

  ...
Copy to Clipboard Toggle word wrap

1
この値は namespace から継承されます。

3.7.2.2. Pod レベルでの seLinuxChangePolicy の変更

新規または既存のデプロイメントで seLinuxChangePolicy パラメーターを設定すると、管理する Pod にこのパラメーター値が適用されます。同様に、StatefulSet でもこれを行うことができます。既存の Pod を編集して seLinuxChangePolicy を設定することはできませんが、新しい Pod を作成するときにこのパラメーターを設定することはできます。

この手順では、既存のデプロイメントで seLinuxChangePolicy パラメーターを設定する方法について説明します。

前提条件

  • Red Hat OpenShift Service on AWS にアクセスできる。

手順

既存のデプロイメントで seLinuxChangePolicy パラメーターを設定するには、以下を実行します。

  1. Workloads > Deployments をクリックします。
  2. Deployment ページで、任意のデプロイメントをクリックします。
  3. Deployment details ページで、YAML タブをクリックします。
  4. 次のサンプルファイルに従って、spec.template.spec.securityContext の下にあるデプロイメントの YAML ファイルを編集します。

    seLinuxChangePolicy を設定するデプロイメント YAML ファイルの例

      ...
    securityContext:
      seLinuxChangePolicy: Recursive 
    1
    
      ...
    Copy to Clipboard Toggle word wrap

    1
    すべての Pod ボリューム上のすべてのファイルに対して、適切な SELinux コンテキストへの再帰的なラベルの再設定を行うように指定します。
  5. Save をクリックします。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat