2.3.2. 証明書ポリシーコントローラー

証明書ポリシーコントローラーは、有効期限が近い証明書、期間 (時間) が長すぎる証明書や、指定のパターンに一致しない DNS 名が含まれている証明書の検出に使用できます。

証明書ポリシーコントローラーを設定してカスタマイズするには、コントローラーポリシーの以下のパラメーターを更新します。

  • minimumDuration
  • minimumCADuration
  • maximumDuration
  • maximumCADuration
  • allowedSANPattern
  • disallowedSANPattern

以下のシナリオのいずれかの場合には、ポリシーがコンプライアンス違反になる可能性があります。

  • 証明書が、最小期間で指定されている期間以内または、最大期間で指定されている期間を超えて失効する場合
  • DNS 名が指定のパターンと一致しない場合

証明書ポリシーコントローラーは、マネージドクラスターに作成されます。このコントローラーは、ローカルの Kubernetes API サーバーと通信して、証明書が含まれるシークレット一覧を取得して、コンプライアンス違反の証明書をすべて判別します。CRD の詳細は、「Extend the Kubernetes API with CustomResourceDefinitions」を参照してください。

証明書ポリシーコントローラーには、enforce 機能のサポートがありません。

2.3.2.1. 証明書ポリシーコントローラーの YAML 構成

以下の証明書ポリシーの例を見て、YAML 表の要素を確認します。

apiVersion: policy.open-cluster-management.io/v1
kind: CertificatePolicy
metadata:
  name: certificate-policy-example
  namespace:
  labels: category=system-and-information-integrity
spec:
  namespaceSelector:
    include: ["default"]
    exclude: ["kube-*"]
  remediationAction:
  severity:
  minimumDuration:
  minimumCADuration:
  maximumDuration:
  maximumCADuration:
  allowedSANPattern:
  disallowedSANPattern:
2.3.2.1.1. 証明書ポリシーコントローラーの YAML の表

表2.2 パラメーターの表

フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。この値を CertificatePolicy に設定してポリシーの種類を指定します。

metadata.name

必須。ポリシーを識別するための名前。

netadata.namespace

必須。ポリシーが作成されるマネージドクラスター内の namespace。

metadata.labels

任意。証明書ポリシーでは、category=system-and-information-integrity ラベルでポリシーを分類して、証明書ポリシーをスムーズにクエリーできるようにします。証明書ポリシーの category キーに別の値が指定されている場合には、この値は証明書コントローラーにより上書きされます。

spec

必須。監視および更新する証明書の仕様。

spec.namespaceSelector

必須。ポリシーを適用するマネージドクラスターの namespace。Include および Exclude のパラメーター値を入力します。注記:

複数の証明書ポリシーを作成してそのポリシーを同じマネージドクラスターに適用する場合には、各ポリシーの namespaceSelector には別の値を割り当てる必要があります。

• 証明書ポリシーコントローラーの namespaceSelector がどの namespace にも一致しない場合には、ポリシーは準拠しているとみなされます。

spec.remediationAction

必須。ポリシーの修正を指定します。このパラメーター値には inform を設定します。証明書ポリシーコントローラーがサポートするのは inform 機能のみです。

spec.severity

任意。ポリシーがコンプライアンス違反の場合に重大度をユーザーに通知します。パラメーター値 lowmedium、または high を使用します。

spec.minimumDuration

必須。値の指定がない場合は、デフォルト値は 100h になります。このパラメーターで、証明書がコンプライアンス違反とみなされるまでの最小期間 (時間) を指定します。パラメーター値は Golang の期間形式を使用します。詳細は Golang Parse Duration を参照してください。

spec.minimumCADuration

任意。値を設定して、他の証明書とは異なる値でまもなく有効期限が切れる可能性がある署名証明書を特定します。パラメーターの値が指定されていない場合には、CA 証明書の有効期限は minimumDuration で使用した値になります。詳細は Golang Parse Duration を参照してください。

spec.maximumDuration

任意。値を設定して、任意の制限期間を超えて作成された証明書を特定します。パラメーターは Golang の期間形式を使用します。詳細は Golang Parse Duration を参照してください。

spec.maximumCADuration

任意。値を設定して、定義した制限期間を超えて作成された署名証明書を特定します。パラメーターは Golang の期間形式を使用します。詳細は Golang Parse Duration を参照してください。

spec.allowedSANPattern

任意。証明書に定義した全 SAN エントリーと一致する必要がある正規表現。このパラメーターを使用して、パターンと DNS 名を照合します。詳細は Golang Regular Expression syntax を参照してください。

spec.disallowedSANPattern

任意。証明書で定義した SAN エントリーと一致してはいけない正規表現。このパラメーターを使用して、パターンと DNS 名を照合します。詳細は Golang Regular Expression syntax を参照してください。