第1章 ガバナンス
企業が、プライベートクラウド、マルチクラウド、およびハイブリッドクラウドでホストされるワークロードについて、ソフトウェアエンジニアリング、セキュアなエンジニアリング、回復性、セキュリティー、規制準拠に関する内部標準を満たす必要があります。Red Hat Advanced Cluster Management for Kubernetes ガバナンスは、企業が独自のセキュリティーポリシーを導入するための拡張可能なポリシーフレームワークを提供します。
Red Hat Advanced Cluster Management ガバナンスフレームワークの関連トピックを参照してください。
1.1. ポリシーコントローラー リンクのコピーリンクがクリップボードにコピーされました!
ポリシーコントローラーは、クラスターがポリシーに準拠しているかどうかを監視し、報告します。サポートされるポリシーテンプレートを使用して Red Hat Advanced Cluster Management for Kubernetes ポリシーフレームワークを使用し、これらのコントローラーが管理するポリシーを適用します。ポリシーコントローラーは Kubernetes のカスタムリソース定義インスタンスを管理します。
ポリシーコントローラーはポリシー違反をチェックし、コントローラーが強制機能をサポートしている場合は、クラスターのステータスを準拠させることができます。Red Hat Advanced Cluster Management for Kubernetes の以下のポリシーコントローラーは、次のトピックを参照してください。
重要: 設定ポリシーコントローラーポリシーのみが enforce 機能をサポートします。ポリシーコントローラーが enforce 機能をサポートしないポリシーを手動で修正する必要があります。
1.1.1. Kubernetes 設定ポリシーコントローラー リンクのコピーリンクがクリップボードにコピーされました!
設定ポリシーコントローラーを使用して、任意の Kubernetes リソースを設定し、クラスター全体にセキュリティーポリシーを適用します。設定ポリシーコントローラーはローカル Kubernetes API サーバーと通信し、クラスター内にある設定のリストを取得できるようにします。
インストール中に、マネージドクラスター上に設定ポリシーコントローラーが作成されます。設定ポリシーは、ハブクラスター上のポリシーの policy-templates フィールドで提供され、ガバナンスフレームワークによって選択されたマネージドクラスターに伝播されます。
設定ポリシーコントローラーの remediationAction が InformOnly に設定されている場合、親ポリシーの remediationAction が enforce に設定されていても、親ポリシーは設定ポリシーを適用しません。
ポリシーに組み込む既存の Kubernetes マニフェストがある場合、ポリシージェネレーターはこれを実現するための便利なツールです。
1.1.1.1. 設定ポリシーの YAML の構造 リンクのコピーリンクがクリップボードにコピーされました!
oc explain --api-version=policy.open-cluster-management.io/v1 ConfigurationPolicy.<field-path> コマンドを実行すると、マネージドクラスターのフィールドの説明を確認できます。<field-path> は、必要なフィールドへのパスに置き換えます。
- 1
- 名前なしでオブジェクトを指定する設定ポリシーは、
informにのみ設定できます。設定ポリシーのremediationActionをenforceに設定すると、指定した設定がコントローラーによってターゲットのマネージドクラスターに適用されます。 - 2
- Kubernetes オブジェクトは、設定ポリシーの
object-template配列で定義され、設定ポリシーコントローラーのフィールドがマネージドクラスター上のオブジェクトと比較されます。設定ポリシー内でテンプレート化された値を使用することもできます。より高度なユースケースの場合は、object-templates-rawで文字列を指定して、必要なobject-templateを作成します。詳細は、テンプレート処理 を参照してください。
1.1.1.2. 設定ポリシーの YAML の表 リンクのコピーリンクがクリップボードにコピーされました!
| フィールド | 任意または必須 | 説明 |
|---|---|---|
|
| 必須 |
この値は |
|
| 必須 |
ポリシーのタイプを指定するには、値を |
|
| 必須 | ポリシーの名前。 |
|
| namespace に属するオブジェクトに namespace が指定されていない場合に必須 |
オブジェクトが適用されるマネージドクラスター内の namespace を決定します。 |
|
| 必須 |
ポリシーに準拠していない場合に実行するアクションを指定します。次のパラメーター値を使用します。 |
|
| 任意 |
現在のコンプライアンスに基づいて設定ポリシーによって送信されるコンプライアンスメッセージを設定します。各メッセージの設定は文字列です。文字列には Go テンプレートを含めることができます。テンプレートでは、 [source,yaml] ---- .Policy.status.relatedObjects[*].object ---
|
|
| 任意 | 準拠状態の設定ポリシー用のカスタムメッセージを設定します。Go テンプレートと、絵文字や他言語の文字を含む UTF-8 でエンコードされた文字を値として使用できます。 |
|
| 任意 | 非準拠状態の設定ポリシー用のカスタムメッセージを設定します。Go テンプレートと、絵文字や他言語の文字を含む UTF-8 でエンコードされた文字を値として使用できます。 |
|
| 必須 |
ポリシーに準拠していない場合の重大度を指定します。パラメーター値 |
|
| 任意 |
特定のコンプライアンス状態にある場合にポリシーを評価する頻度を指定します。
マネージドクラスターのリソースが少ない場合は、評価間隔のポーリング間隔を長く設定して、Kubernetes API とポリシーコントローラーでの CPU とメモリーの使用量を削減できます。これらは期間を表す形式です。たとえば、 |
|
| 任意 |
準拠ポリシーの評価頻度を指定します。以前のポーリング動作を有効にするには、このパラメーターを |
|
| 任意 |
非準拠ポリシーの評価頻度を指定します。以前のポーリング動作を有効にするには、このパラメーターを |
|
| 任意 |
コントローラーがマネージドクラスター上のオブジェクトと比較するための Kubernetes オブジェクトの配列 (完全に定義されているか、フィールドのサブセットを含む)。注: |
|
| 任意 |
生の YAML 文字列を使用してオブジェクトテンプレートを設定するために使用されます。オブジェクトテンプレートの条件を指定します。ここでは、if-else ステートメントや {{- if eq .metadata.name "policy-grc-your-meta-data-name" }}
replicas: 2
{{- else }}
replicas: 1
{{- end }}
注: |
|
| 必須 | このパラメーターを使用して、マネージドクラスター上の Kubernetes オブジェクトの望ましい状態を定義します。次のいずれかの動詞をパラメーター値として使用します。
|
|
| 任意 |
マニフェストのメタデータセクションをクラスター上のオブジェクトと比較するときに、 |
|
| 任意 |
このパラメーターを使用して、クラスター上のオブジェクトとポリシー内の
デフォルトでは、コントローラーが差異内に機密データを検出しないと、このパラメーターは |
|
| 任意 |
更新が必要な場合にオブジェクトを削除して再作成するタイミングを説明します。オブジェクトを |
|
| 必須 | コントローラーがマネージドクラスター上のオブジェクトと比較するための Kubernetes オブジェクト (完全に定義されているか、フィールドのサブセットを含む)。 |
|
| 任意 | マネージドクラスターからポリシーが削除されたときに、ポリシーに関連するリソースを消去するかどうかを決定します。 |
1.1.1.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
詳細は、以下のトピックを参照してください。
- 設定ポリシーの作成 を参照してください。
- ハブクラスターポリシーの詳細は、ハブクラスターポリシーフレームワーク を参照してください。
-
CM-Configuration-Managementフォルダー で、NIST Special Publication 800-53 (Rev. 4) を使用し、Red Hat Advanced Cluster Management によってサポートされているポリシーサンプルを参照してください。 - ドライランのサポートの詳細は、Kubernetes のドキュメント ドライラン を参照してください。
- ポリシーがハブクラスターにどのように適用されるかは、サポート対象のポリシー 参照してください。
- コントローラーの詳細は、ポリシーコントローラー を参照してください。
- ポリシーコントローラーの設定をカスタマイズします。ポリシーコントローラーの高度な設定 を参照してください。
- リソースのクリーンアップとその他のトピックは、ポリシーによって作成されたリソースのクリーンアップ ドキュメントを参照してください。
- ポリシージェネレーター を参照してください。
- ポリシーを作成してカスタマイズする方法は、ガバナンスダッシュボードの管理 を参照してください。
- テンプレート処理 を参照してください。
1.1.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 をシークレットに追加します。
1.1.2.1. 証明書ポリシーコントローラーの YAML 設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の証明書ポリシーの例を見て、YAML 表の要素を確認します。
1.1.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 を参照してください。 |
1.1.2.2. 証明書ポリシーの例 リンクのコピーリンクがクリップボードにコピーされました!
証明書ポリシーコントローラーがハブクラスターに作成されると、複製ポリシーがマネージドクラスターに作成されます。証明書ポリシーのサンプルを確認するには、policy-certificate.yaml を参照してください。
1.1.2.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 証明書ポリシーの管理方法の詳細は、セキュリティーポリシーの管理 を参照してください。
- 他のトピックは、ポリシーコントローラーの概要 を参照してください。
- 証明書の概要 を参照してください。
1.1.3. ポリシーセットコントローラー リンクのコピーリンクがクリップボードにコピーされました!
ポリシーセットコントローラーは、同じ namespace で定義されるポリシーにスコープ指定されたポリシーのステータスを集約します。ポリシーセット (PolicySet) を作成して、同じ namespace にあるポリシーをグループ化します。PolicySet のすべてのポリシーは、PolicySet および Placement をバインドする PlacementBinding を作成して、選択したクラスターに配置されます。ポリシーセットがハブクラスターにデプロイされています。
また、ポリシーが複数のポリシーセットの一部であると、既存および新規 Placement リソースはポリシーに残ります。ユーザーがポリシーセットからポリシーを削除すると、ポリシーはポリシーセットで選択したクラスターには適用されませんが、配置は残ります。ポリシーセットコントローラーは、ポリシーセット配置を含むクラスターの違反のみを確認します。
注記:
- Red Hat Advanced Cluster Management サンプルポリシーセットは、クラスター配置を使用します。クラスター配置を使用する場合は、ポリシーを含む namespace をマネージドクラスターセットにバインドします。クラスター配置の使用の詳細は、クラスターへのポリシーのデプロイ を参照してください。
-
Placementリソースを使用するには、ManagedClusterSetBindingリソースを使用して、ManagedClusterSetリソースをPlacementリソースの namespace にバインドする必要があります。詳細は、ManagedClusterSetBinding リソースの作成 を参照してください。
以下のセクションでは、ポリシーセットの設定を説明します。
1.1.3.1. ポリシーセット YAML の設定 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーセットは、以下の YAML ファイルのようになります。
1.1.3.2. ポリシーセットの表 リンクのコピーリンクがクリップボードにコピーされました!
以下のパラメーター表で説明を確認してください。
| フィールド | 任意または必須 | 説明 |
|---|---|---|
|
| 必須 |
この値は |
|
| 必須 |
ポリシーのタイプを指定するには、値を |
|
| 必須 | ポリシーリソースを識別する名前。 |
|
| 必須 | ポリシーの設定詳細を追加します。 |
|
| 任意 | ポリシーセットでグループ化するポリシーの一覧。 |
1.1.3.3. ポリシーセットの例 リンクのコピーリンクがクリップボードにコピーされました!
1.1.3.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Platform Plus policy set を参照してください。
- セキュリティーポリシーの管理 トピックの Creating policy sets セクションを参照してください。
-
また、デプロイメント用のポリシージェネレーターである
PolicySets-- Stable を必要とする安定した PolicySets も表示します。
1.1.4. Operator ポリシーコントローラー リンクのコピーリンクがクリップボードにコピーされました!
Operator ポリシーコントローラーを使用すると、クラスター全体の Operator Lifecycle Manager Operator を監視し、インストールできます。Operator ポリシーコントローラーは、Operator のさまざまな部分の健全性を監視し、Operator への更新を自動的に処理する方法を指定するために使用します。
ガバナンスフレームワークを使用して、ハブクラスター上のポリシーの policy-template フィールドにポリシーを追加することで、Operator ポリシーをマネージドクラスターに配布することもできます。
Operator ポリシーの operatorGroup フィールドと subscription フィールド内でテンプレート値を使用することもできます。詳細は、テンプレート処理 を参照してください。
1.1.4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Operator Lifecycle Manager がマネージドクラスターで利用可能である。これは、Red Hat OpenShift Container Platform ではデフォルトで有効になっています。
- 必要なアクセス権: クラスター管理者
1.1.4.2. Operator ポリシー YAML の表 リンクのコピーリンクがクリップボードにコピーされました!
| フィールド | 任意または必須 | 説明 |
|---|---|---|
|
| 必須 |
この値は |
|
| 必須 |
ポリシーのタイプを指定するには、値を |
|
| 必須 | ポリシーリソースを識別する名前。 |
|
| 必須 |
Operator ポリシーの |
|
| 任意 |
デフォルトでは、
|
|
| 必須 |
クラスター上の Operator の望ましい状態を指定します。 |
|
| 任意 |
|
|
| 必須 | Operator のサブスクリプションを作成するための設定を定義します。Operator のサブスクリプションを作成するには、次のフィールドに情報を追加します。次のパラメーターの説明を確認してください。
注意: このパラメーターセクションの |
|
| 任意 |
このパラメーターを使用して、Operator に関連付けられている特定のシナリオのコンプライアンス動作を定義します。次の各オプションを個別に設定できます。サポートされる値は
|
|
| 必須 |
|
|
| 任意 |
Operator のどのバージョンがポリシーに準拠しているかを宣言します。フィールドが空の場合は、クラスター上で実行されているすべてのバージョンが準拠しているとみなされます。フィールドが空でない場合、ポリシーに準拠しているとみなされるには、マネージドクラスターのバージョンがリスト内のいずれかのバージョンと一致している必要があります。ポリシーが |
1.1.4.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- テンプレート処理 を参照してください。
-
詳細は、
OperatorPolicyリソースを使用してオペレーターをインストールする を参照してください。 - 非接続環境での Operator ポリシーの管理 を参照してください。
- OpenShift Container Platform ドキュメントで サブスクリプション のトピックを参照してください。
- 詳細は、Operator Lifecycle Manager (OLM) を参照してください。
- OLM に関する一般的な情報は、クラスターへの Operators の追加 ドキュメントを参照してください。