2.3. ポリシーコントローラーの概要
ポリシーコントローラーは、クラスターがポリシーに準拠しているかどうかを監視し、報告します。サポートされるポリシーテンプレートを使用して Red Hat Advanced Cluster Management for Kubernetes ポリシーフレームワークを使用し、これらのコントローラーが管理するポリシーを適用します。ポリシーコントローラーは Kubernetes のカスタムリソース定義インスタンスを管理します。
ポリシーコントローラーはポリシー違反をチェックし、コントローラーが強制機能をサポートしている場合は、クラスターのステータスを準拠させることができます。Red Hat Advanced Cluster Management for Kubernetes の以下のポリシーコントローラーは、次のトピックを参照してください。
重要: 設定ポリシーコントローラーポリシーのみが enforce
機能をサポートします。ポリシーコントローラーが enforce
機能をサポートしないポリシーを手動で修正する必要があります。
2.3.1. Kubernetes 設定ポリシーコントローラー リンクのコピーリンクがクリップボードにコピーされました!
設定ポリシーコントローラーを使用して、Kubernetes リソースを設定し、クラスター全体にセキュリティーポリシーを適用できます。設定ポリシーは、ハブクラスター上のポリシーの policy-templates
フィールドで提供され、ガバナンスフレームワークによって選択されたマネージドクラスターに伝播されます。
Kubernetes オブジェクトは、設定ポリシーの object-templates
配列で (全体または一部で) 定義され、マネージドクラスター上のオブジェクトと比較するフィールドの設定ポリシーコントローラーを示します。設定ポリシーコントローラーは、ローカルの Kubernetes API サーバーと通信し、クラスターにある設定の一覧を取得します。
設定ポリシーコントローラーは、インストール時にマネージドクラスターに作成されます。設定ポリシーコントローラーは、設定ポリシーが準拠していない場合に修復するための enforce
および InformOnly
機能をサポートします。
設定ポリシーの remediationAction
を enforce
に設定すると、コントローラーが指定された設定をターゲットのマネージドクラスターに適用します。
設定ポリシーの remediationAction
を InformOnly
に設定すると、親ポリシーの remediationAction
が enforce
に設定されている場合でも、親ポリシーは設定ポリシーを強制しません。
注記: 名前のないオブジェクトを指定する設定ポリシーは、inform
のみにすることができます。
設定ポリシー内でテンプレート化された値を使用することもできます。詳細は、Template processing を参照してください。
ポリシーに組み込む既存の Kubernetes マニフェストがある場合、ポリシージェネレーターはこれを実現するための便利なツールです。
2.3.1.1. 設定ポリシーの例 リンクのコピーリンクがクリップボードにコピーされました!
2.3.1.2. 設定ポリシーの YAML の表 リンクのコピーリンクがクリップボードにコピーされました!
フィールド | 任意または必須 | 説明 |
---|---|---|
| 必須 |
この値は |
| 必須 |
ポリシーのタイプを指定するには、値を |
| 必須 | ポリシーの名前。 |
| namespace に属するオブジェクトに namespace が指定されていない場合に必須 |
オブジェクトが適用されるマネージドクラスター内の namespace を決定します。 |
| 必須 |
ポリシーに準拠していない場合に実行するアクションを指定します。次のパラメーター値を使用します。 |
| 必須 |
ポリシーに準拠していない場合の重大度を指定します。パラメーター値 |
| 任意 |
ポリシーが準拠状態にあるときに評価される頻度を定義するために使用されます。値は期間の形式に指定する必要があります。これは、時間単位接尾辞が付いた数字のシーケンスになります。たとえば、
デフォルトでは、 |
| 任意 |
ポリシーがコンプライアンス違反の状態にあるときに評価される頻度を定義するのに使用します。 |
| 任意 |
コントローラーがマネージドクラスター上のオブジェクトと比較するための Kubernetes オブジェクトの配列 (完全に定義されているか、フィールドのサブセットを含む)。注: |
| 任意 |
生の YAML 文字列を使用してオブジェクトテンプレートを設定するために使用されます。オブジェクトテンプレートの条件を指定します。ここでは、if-else ステートメントや
注: |
| 必須 | このパラメーターを使用して、マネージドクラスター上の Kubernetes オブジェクトの望ましい状態を定義します。次のいずれかの動詞をパラメーター値として使用します。
|
| 任意 |
マニフェストのメタデータセクションをクラスター上のオブジェクトと比較するときに、 |
| 任意 |
このパラメーターを使用して、クラスター上のオブジェクトとポリシー内の
デフォルトでは、コントローラーが差異内に機密データを検出しないと、このパラメーターは |
| 任意 |
更新が必要な場合にオブジェクトを削除して再作成するタイミングを説明します。オブジェクトを |
| 必須 | コントローラーがマネージドクラスター上のオブジェクトと比較するための Kubernetes オブジェクト (完全に定義されているか、フィールドのサブセットを含む)。 |
| 任意 | マネージドクラスターからポリシーが削除されたときに、ポリシーに関連するリソースを消去するかどうかを決定します。 |
2.3.1.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
詳細は、以下のトピックを参照してください。
- ハブクラスターポリシーの詳細は、ポリシーの概要 を参照してください。
-
NIST Special Publication 800-53 (Rev. 4) を使用するポリシーサンプルおよび、
CM-Configuration-Management
フォルダー の Red Hat Advanced Cluster Management がサポートするポリシーサンプルを参照してください。 - ドライランのサポートの詳細は、Kubernetes のドキュメント ドライラン を参照してください。
- ポリシーがハブクラスターにどのように適用されるかは、サポート対象のポリシー 参照してください。
- コントローラーの詳細は、ポリシーコントローラー を参照してください。
- ポリシーコントローラーの設定をカスタマイズします。ポリシーコントローラーの高度な設定 を参照してください。
- リソースのクリーンアップとその他のトピックは、ポリシーによって作成されたリソースのクリーンアップ ドキュメントを参照してください。
- ポリシージェネレーター を参照してください。
- ポリシーを作成してカスタマイズする方法は、Governance ダッシュボードの管理 を参照してください。
- テンプレート処理 を参照してください。
2.3.2. 証明書ポリシーコントローラー リンクのコピーリンクがクリップボードにコピーされました!
証明書ポリシーコントローラーは、有効期限が近い証明書、期間 (時間) が長すぎる証明書や、指定のパターンに一致しない DNS 名が含まれる証明書の検出に使用できます。ハブクラスターのポリシーの policy-templates
フィールドに証明書ポリシーを追加できます。証明書ポリシーは、ガバナンスフレームワークを使用して、選択したマネージドクラスターに伝播されます。ハブクラスターポリシーの詳細は、ポリシーの概要 に関するドキュメントを参照してください。
証明書ポリシーコントローラーを設定してカスタマイズするには、コントローラーポリシーの以下のパラメーターを更新します。
-
minimumDuration
-
minimumCADuration
-
maximumDuration
-
maximumCADuration
-
allowedSANPattern
-
disallowedSANPattern
以下のシナリオのいずれかの場合は、ポリシーがコンプライアンス違反になる可能性があります。
- 証明書が、最小期間で指定されている期間以内、または最大期間で指定されている期間を超えて失効する場合
- DNS 名が指定のパターンと一致しない場合
証明書ポリシーコントローラーは、マネージドクラスターに作成されます。このコントローラーは、ローカルの Kubernetes API サーバーと通信して、証明書が含まれるシークレット一覧を取得して、コンプライアンス違反の証明書をすべて判別します。
証明書ポリシーコントローラーには、enforce
機能のサポートがありません。
注記: 証明書ポリシーコントローラーは、tls.crt
キーのシークレットでのみ自動的に証明書を検索します。シークレットが別のキーの下に保存されている場合は、証明書ポリシーコントローラーに別のキーを検索するよう知らせるために、certificate_key_name
という名前のラベルを、キーに設定された値とともに追加します。たとえば、sensor-cert.pem
という名前のキーに保存されている証明書がシークレットに含まれている場合は、ラベル certificate_key_name: sensor-cert.pem
をシークレットに追加します。
2.3.2.1. 証明書ポリシーコントローラーの YAML 設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の証明書ポリシーの例を見て、YAML 表の要素を確認します。
2.3.2.1.1. 証明書ポリシーコントローラーの YAML の表 リンクのコピーリンクがクリップボードにコピーされました!
フィールド | 任意または必須 | 説明 |
---|---|---|
| 必須 |
この値は |
| 必須 |
この値を |
| 必須 | ポリシーを識別するための名前。 |
| 任意 |
証明書ポリシーでは、 |
| 必須 |
シークレットがモニターされるマネージドクラスター内の namespace を決定します。
注記: 証明書ポリシーコントローラーの |
| 任意 | オブジェクトの識別属性を指定します。Kubernetes のラベルとセレクター のドキュメントを参照してください。 |
| 必須 |
ポリシーの修正を指定します。このパラメーター値に |
| 任意 |
ポリシーに準拠していない場合の重大度をユーザーに通知します。パラメーター値 |
| 必須 |
値の指定がない場合、デフォルト値は |
| 任意 |
値を設定して、他の証明書とは異なる値で、まもなく有効期限が切れる可能性がある署名証明書を特定します。パラメーターの値が指定されていないと、CA 証明書の有効期限は |
| 任意 | 値を設定して、任意の制限期間を超えて作成された証明書を特定します。パラメーターは Golang の期間形式を使用します。詳細は、Golang Parse Duration を参照してください。 |
| 任意 | 値を設定して、定義した制限期間を超えて作成された署名証明書を特定します。パラメーターは Golang の期間形式を使用します。詳細は、Golang Parse Duration を参照してください。 |
| 任意 | 証明書に定義した全 SAN エントリーと一致する必要がある正規表現。このパラメーターを使用して、パターンと DNS 名を照合します。詳細は、Golang Regular Expression syntax を参照してください。 |
| 任意 | 証明書で定義した SAN エントリーと一致してはいけない正規表現。このパラメーターを使用して、パターンと DNS 名を照合します。
注記: ワイルドカードの証明書を検出するには、 詳細は、Golang Regular Expression syntax を参照してください。 |
2.3.2.2. 証明書ポリシーの例 リンクのコピーリンクがクリップボードにコピーされました!
証明書ポリシーコントローラーがハブクラスターに作成されると、複製ポリシーがマネージドクラスターに作成されます。証明書ポリシーのサンプルを確認するには、policy-certificate.yaml
を参照してください。
2.3.2.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 証明書ポリシーの管理方法の詳細は、セキュリティーポリシーの管理 を参照してください。
- 他のトピックは、ポリシーコントローラーの概要 を参照してください。
- 証明書の概要 を参照してください。
2.3.3. ポリシーセットコントローラー リンクのコピーリンクがクリップボードにコピーされました!
ポリシーセットコントローラーは、同じ namespace で定義されるポリシーにスコープ指定されたポリシーのステータスを集約します。ポリシーセット (PolicySet
) を作成して、同じ namespace にあるポリシーをグループ化します。PolicySet
のすべてのポリシーは、PolicySet
および Placement
をバインドする PlacementBinding
を作成して、選択したクラスターに配置されます。ポリシーセットがハブクラスターにデプロイされています。
また、ポリシーが複数のポリシーセットの一部であると、既存および新規 Placement
リソースはポリシーに残ります。ユーザーがポリシーセットからポリシーを削除すると、ポリシーはポリシーセットで選択したクラスターには適用されませんが、配置は残ります。ポリシーセットコントローラーは、ポリシーセット配置を含むクラスターの違反のみを確認します。
注記:
- Red Hat Advanced Cluster Management サンプルポリシーセットは、クラスター配置を使用します。クラスター配置を使用する場合は、ポリシーを含む namespace をマネージドクラスターセットにバインドします。クラスター配置の使用の詳細は、クラスターへのポリシーのデプロイ を参照してください。
-
Placement
リソースを使用するには、ManagedClusterSetBinding
リソースを使用して、ManagedClusterSet
リソースをPlacement
リソースの namespace にバインドする必要があります。詳細は、ManagedClusterSetBinding リソースの作成 を参照してください。
以下のセクションでは、ポリシーセットの設定を説明します。
2.3.3.1. ポリシーセット YAML の設定 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーセットは、以下の YAML ファイルのようになります。
2.3.3.2. ポリシーセットの表 リンクのコピーリンクがクリップボードにコピーされました!
以下のパラメーター表で説明を確認してください。
フィールド | 任意または必須 | 説明 |
---|---|---|
| 必須 |
この値は |
| 必須 |
ポリシーのタイプを指定するには、値を |
| 必須 | ポリシーリソースを識別する名前。 |
| 必須 | ポリシーの設定詳細を追加します。 |
| 任意 | ポリシーセットでグループ化するポリシーの一覧。 |
2.3.3.3. ポリシーセットの例 リンクのコピーリンクがクリップボードにコピーされました!
2.3.3.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Platform Plus policy set を参照してください。
- セキュリティーポリシーの管理 トピックの Creating policy sets セクションを参照してください。
-
また、デプロイメント用のポリシージェネレーターである PolicySets-- Stable を必要とする安定したポリシー
PolicySets
も表示します。 - このトピックの最初の Policy set controller に戻ります。
2.3.4. Operator ポリシーコントローラー リンクのコピーリンクがクリップボードにコピーされました!
Operator ポリシーコントローラーを使用すると、クラスター全体の Operator Lifecycle Manager Operator を監視し、インストールできます。Operator ポリシーコントローラーは、Operator のさまざまな部分の健全性を監視し、Operator への更新を自動的に処理する方法を指定するために使用します。
ガバナンスフレームワークを使用して、ハブクラスター上のポリシーの policy-template
フィールドにポリシーを追加することで、Operator ポリシーをマネージドクラスターに配布することもできます。
Operator ポリシーの operatorGroup
フィールドと subscription
フィールド内でテンプレート値を使用することもできます。詳細は、テンプレート処理 を参照してください。
2.3.4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Operator Lifecycle Manager がマネージドクラスターで利用可能である。これは、Red Hat OpenShift Container Platform ではデフォルトで有効になっています。
- 必要なアクセス権: クラスター管理者
2.3.4.2. Operator ポリシー YAML の表 リンクのコピーリンクがクリップボードにコピーされました!
フィールド | 任意または必須 | 説明 |
---|---|---|
| 必須 |
この値は |
| 必須 |
ポリシーのタイプを指定するには、値を |
| 必須 | ポリシーリソースを識別する名前。 |
| 必須 |
Operator ポリシーの |
| 任意 |
デフォルトでは、 |
| 必須 |
クラスター上の Operator の望ましい状態を指定します。 |
| 任意 |
|
| 必須 | Operator のサブスクリプションを作成するための設定を定義します。Operator のサブスクリプションを作成するには、次のフィールドに情報を追加します。エントリーがない場合は、いくつかの項目に対してデフォルトのオプションが選択されます。
|
| 任意 |
このパラメーターを使用して、Operator に関連付けられている特定のシナリオのコンプライアンス動作を定義します。次の各オプションを個別に設定できます。サポートされる値は
|
| 必須 |
|
| 任意 |
Operator のどのバージョンがポリシーに準拠しているかを宣言します。フィールドが空の場合は、クラスター上で実行されているすべてのバージョンが準拠しているとみなされます。フィールドが空でない場合、ポリシーに準拠しているとみなされるには、マネージドクラスターのバージョンがリスト内のいずれかのバージョンと一致している必要があります。ポリシーが |
2.3.4.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- テンプレート処理 を参照してください。
-
詳細は、
OperatorPolicy
リソースを使用してオペレーターをインストールする を参照してください。 - OpenShift Container Platform ドキュメントの サブスクリプション のトピックを参照してください。
- 詳細は、Operator Lifecycle Manager (OLM) を参照してください。
- OLM に関する一般的な情報は、クラスターへの Operators の追加 ドキュメントを参照してください。