Skip to content

Kyverno

About Kyverno

About Kyverno Policy

Kind of Policy

Kind of Resources

Select Resources

  • Mutate/VerifyImages/Validate/Generate などのpolicyを適用する対象リソースを指定する
    • 対象としたいリソースをmatchで、対象外としたいリソースをexclude で指定する
    • any(OR) もしくは all(AND)の条件下で resource filters を指定
      • resources: select resources by names, namespaces, kinds, label selectors, annotations, and namespace selectors.
      • subjects: select users, user groups, and service accounts
      • roles: select namespaced roles
      • clusterRoles: select cluster wide roles

Mutate Resources

Validate Resources

  • これから適用するmanifests、または作成済みリソースに関してポリシー違反がないかどうかを検証する
  • spec.validationFailureAction
    • enforce
      • 新規作成の場合は拒否する
    • audit
      • 作成は拒否しない
      • ClusterPolicyReport または PolicyReport を作成しポリシー違反を記録する
  • spec.background
    • 当該 ClusterPolicy または Policy に関してポリシー違反をしていないかどうかを作成済みリソースに検証する
    • (enforceの場合でも) 作成済みリソースのポリシー違反はClusterPolicyReport または PolicyReport を作成しポリシー違反を記録する
  • Patterns
    • spec.rules[*].va1lidate.pattern
    • spec.rules[*].va1lidate.anyPattern
  • ルールの拒否
    • deny
      • validationFailureAction: enforce を設定する必要がある
      • deny ruleの exclude で拒否させたくないsubjectsやroleを指定するなども可能

Generate Resources

  • リソースの作成・更新に基づいて追加のリソースを作成する
  • リソース作成方法
    1. spec.rules.generate.clone
      • SecretやConfigMapなど既存リソースをコピーしたい場合
    2. spec.rules.generate.data
      • rule manifestsに定義された新規作成したいリソース

Note

kyverno policy ruleによって作成されたリソースはマニフェスト管理されていません。 spec.rules.generate.synchronize=true の場合、必要な権限を持つユーザやServiceAccountなどから作成されたリソースが変更・削除されても元のリソース状態に戻すように更新・再作成してくれます。

VerifyImages Resources

  • imageのシグネチャ(署名) をチェックし、ダイジェストを追加する