Skip to content

Pre-load Jinja macros #13502

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
May 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="api_server_api_priority_flowschema_catch_all" version="1"> {{{
oval_metadata("One of the flowschema versions should exist, but it doesn't matter which") }}} <criteria
oval_metadata("One of the flowschema versions should exist, but it doesn't matter which", rule_title=rule_title) }}} <criteria
operator="OR">
<extend_definition comment="flowschema v1alpha1"
definition_ref="api_server_api_priority_v1alpha1_flowschema_catch_all" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="api_server_oauth_https_serving_cert" version="1">
{{{ oval_metadata("TLS security profile configured must use secure protocols in OpenShift OAuth API Server") }}}
{{{ oval_metadata("TLS security profile configured must use secure protocols in OpenShift OAuth API Server", rule_title=rule_title) }}}

<criteria operator="AND">
<extend_definition comment="APIServer tlsSecurityProfile=Old is not configured" definition_ref="api_server_tls_security_profile_not_old" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="api_server_openshift_https_serving_cert" version="1">
{{{ oval_metadata("TLS security profile configured must use secure protocols in OpenShift API Server") }}}
{{{ oval_metadata("TLS security profile configured must use secure protocols in OpenShift API Server", rule_title=rule_title) }}}

<criteria operator="AND">
<extend_definition comment="APIServer tlsSecurityProfile=Old is not configured" definition_ref="api_server_tls_security_profile_not_old" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="api_server_tls_security_profile" version="1">
{{{ oval_metadata("TLS security profile configured must use secure protocols") }}}
{{{ oval_metadata("TLS security profile configured must use secure protocols", rule_title=rule_title) }}}

<criteria operator="AND">
<extend_definition comment="APIServer tlsSecurityProfile=Old is not configured" definition_ref="api_server_tls_security_profile_not_old" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="{{{ rule_id }}}" version="1"> {{{
oval_metadata("A ClusterlogForwarder should be configured to forward logs, doesn't matter from which API") }}} <criteria
oval_metadata("A ClusterlogForwarder should be configured to forward logs, doesn't matter from which API", rule_title=rule_title) }}} <criteria
operator="OR">
<extend_definition comment="ClusterlogForwarder from observability.openshift.io (6.0)"
definition_ref="audit_log_forwarding_enabled_observability_api" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="{{{ rule_id }}}" version="1"> {{{
oval_metadata("Audit webhook should be configure, regardless of which API") }}} <criteria
oval_metadata("Audit webhook should be configure, regardless of which API", rule_title=rule_title) }}} <criteria
operator="OR">
<extend_definition comment="ClusterlogForwarder from observability.openshift.io (6.0)"
definition_ref="audit_log_forwarding_webhook_observability_api" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="oauth_or_oauthclient_inactivity_timeout" version="1">
{{{ oval_metadata("The inactivity timeout must be specified either per client or globally") }}}
{{{ oval_metadata("The inactivity timeout must be specified either per client or globally", rule_title=rule_title) }}}

<criteria operator="OR">
<extend_definition comment="global inactivity timeout" definition_ref="oauth_inactivity_timeout" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="oauth_or_oauthclient_token_maxage" version="1">
{{{ oval_metadata("The tokan max age must be specified either per client or globally") }}}
{{{ oval_metadata("The tokan max age must be specified either per client or globally", rule_title=rule_title) }}}

<criteria operator="OR">
<extend_definition comment="global token max age" definition_ref="oauth_token_maxage" />
Expand Down
2 changes: 1 addition & 1 deletion applications/openshift/etcd/etcd_unique_ca/oval/shared.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="etcd_unique_ca" version="1">
{{{ oval_metadata("The etcd CA should be different from the Kubernetes CA.") }}}
{{{ oval_metadata("The etcd CA should be different from the Kubernetes CA.", rule_title=rule_title) }}}
<criteria>
<criterion test_ref="test_etcd_different_ca_than_k8s"
comment="Check that etcd uses a different CA than Kubernetes." />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="banner_or_login_template_set" version="1">
{{{ oval_metadata("A Legal notice must be displayed by some means.") }}}
{{{ oval_metadata("A Legal notice must be displayed by some means.", rule_title=rule_title) }}}

<criteria operator="OR">
<extend_definition comment="classification banner" definition_ref="classification_banner" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="file_owner_groupowner_permissions_pod_logs" version="1">
{{{ oval_metadata("The pod logs must have the expected permissions and ownership") }}}
{{{ oval_metadata("The pod logs must have the expected permissions and ownership", rule_title=rule_title) }}}

<criteria operator="AND">
<extend_definition comment="user ownership" definition_ref="file_owner_pod_logs" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="project_config_and_template_resource_quota" version="1">
{{{ oval_metadata("A project template with ResourceQuotas must be created and referenced from the cluster project config") }}}
{{{ oval_metadata("A project template with ResourceQuotas must be created and referenced from the cluster project config", rule_title=rule_title) }}}

<criteria operator="AND">
<extend_definition comment="project template with ResourceQuotas set" definition_ref="project_template_resource_quota" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="resource_requests_quota" version="1">
{{{ oval_metadata("The sysctl parameter needs to be set before enabling kernel protection") }}}
{{{ oval_metadata("The sysctl parameter needs to be set before enabling kernel protection", rule_title=rule_title) }}}

<criteria operator="OR">
<extend_definition comment="cluster quotas enabled" definition_ref="resource_requests_quota_cluster" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{{% set resourcequota_for_non_ctlplane_namespaces_filter = '[.items[] | select((.metadata.namespace | startswith("openshift") | not) and (.metadata.namespace | startswith("kube-") | not) and .metadata.namespace != "default" and .metadata.namespace != "rhacs-operator" and ({{if ne .var_resource_requests_quota_per_project_exempt_regex "None"}}.metadata.namespace | test("{{.var_resource_requests_quota_per_project_exempt_regex}}") | not{{else}}true{{end}})) | .metadata.namespace] | unique' %}}
{{% set non_ctlplane_namespaces_filter = '[.items[] | select((.metadata.name | startswith("openshift") | not) and (.metadata.name | startswith("kube-") | not) and .metadata.name != "default" and .metadata.name != "rhacs-operator" and ({{if ne .var_resource_requests_quota_per_project_exempt_regex "None"}}.metadata.name | test("{{.var_resource_requests_quota_per_project_exempt_regex}}") | not{{else}}true{{end}}))]' %}}
<definition class="compliance" id="resource_requests_quota_per_project" version="1">
{{{ oval_metadata("Ensure that application Namespaces have Network Policies defined") }}}
{{{ oval_metadata("Ensure that application Namespaces have Network Policies defined", rule_title=rule_title) }}}
<criteria>
<criterion comment="Make sure that the file '{{{ openshift_filtered_path(resourcequota_api_path, resourcequota_for_non_ctlplane_namespaces_filter) }}} exists."
test_ref="test_file_for_resource_requests_quota_per_project"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="machine_volume_encrypted" version="1">
{{{ oval_metadata("Full disk encryption should be enabled, either through the cloud provider or using FIPS") }}}
{{{ oval_metadata("Full disk encryption should be enabled, either through the cloud provider or using FIPS", rule_title=rule_title) }}}

<criteria operator="OR">
<extend_definition comment="Azure disk encryption enabled" definition_ref="azure_disk_encryption_enabled" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="kubelet_enable_protect_kernel_sysctl" version="1">
{{{ oval_metadata("The sysctl parameter needs to be set before enabling kernel protection") }}}
{{{ oval_metadata("The sysctl parameter needs to be set before enabling kernel protection", rule_title=rule_title) }}}
<criteria operator="OR">
<criteria operator="AND">
<extend_definition comment="sysctl kernel_panic" definition_ref="kubelet_enable_protect_kernel_sysctl_kernel_panic" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="{{{ rule_id }}}" version="1"> {{{
oval_metadata("A ClusterlogForwarder should be configured to use tls, doesn't matter from which API") }}} <criteria
oval_metadata("A ClusterlogForwarder should be configured to use tls, doesn't matter from which API", rule_title=rule_title) }}} <criteria
operator="OR">
<extend_definition comment="ClusterlogForwarder from observability.openshift.io (6.0)"
definition_ref="audit_log_forwarding_uses_tls_observability_api" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="{{{ rule_id }}}" version="1"> {{{
oval_metadata("Cluster Logging operator is installed and scanning") }}} <criteria
oval_metadata("Cluster Logging operator is installed and scanning", rule_title=rule_title) }}} <criteria
operator="OR">
<extend_definition comment="Ensure clusterlogforwarder object exists"
definition_ref="cluster_logging_operator_exists_observability_api" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="directory_access_var_log_kube_audit" version="1">
{{{ oval_metadata("Audit rules about the read events to /var/log/kube-apiserver") }}}
{{{ oval_metadata("Audit rules about the read events to /var/log/kube-apiserver", rule_title=rule_title) }}}

<criteria operator="OR">

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="directory_access_var_log_oauth_audit" version="1">
{{{ oval_metadata("Audit rules about the read events to /var/log/oauth-apiserver") }}}
{{{ oval_metadata("Audit rules about the read events to /var/log/oauth-apiserver", rule_title=rule_title) }}}

<criteria operator="OR">

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="directory_access_var_log_ocp_audit" version="1">
{{{ oval_metadata("Audit rules about the read events to /var/log/openshift-apiserver") }}}
{{{ oval_metadata("Audit rules about the read events to /var/log/openshift-apiserver", rule_title=rule_title) }}}

<criteria operator="OR">

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="file_groupowner_ovs_pid" version="1">
{{{ oval_metadata("This test makes sure that /run/openvswitch/ovs-vswitchd.pid is group owned by 800 or 801.") }}}
{{{ oval_metadata("This test makes sure that /run/openvswitch/ovs-vswitchd.pid is group owned by 800 or 801.", rule_title=rule_title) }}}
<criteria operator="OR">
<criterion comment="Check file group ownership of /run/openvswitch/ovs-vswitchd.pid belongs to group 800" test_ref="test_file_groupowner_run_ovs_vswitchd_pid_800" />
<criterion comment="Check file group ownership of /run/openvswitch/ovs-vswitchd.pid belongs to group 801" test_ref="test_file_groupowner_run_ovs_vswitchd_pid_801" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="file_groupowner_ovs_vswitchd_pid" version="1">
{{{ oval_metadata("This test makes sure that /var/run/openvswitch/ovs-vswitchd.pid is group owned by 800 or 801.") }}}
{{{ oval_metadata("This test makes sure that /var/run/openvswitch/ovs-vswitchd.pid is group owned by 800 or 801.", rule_title=rule_title) }}}
<criteria operator="OR">
<criterion comment="Check file group ownership of /var/run/openvswitch/ovs-vswitchd.pid belongs to group 800" test_ref="test_file_groupowner_var_run_ovs_vswitchd_pid_800" />
<criterion comment="Check file group ownership of /var/run/openvswitch/ovs-vswitchd.pid belongs to group 801" test_ref="test_file_groupowner_var_run_ovs_vswitchd_pid_801" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="file_groupowner_ovsdb_server_pid" version="1">
{{{ oval_metadata("This test makes sure that /run/openvswitch/ovsdb-server.pid is group owned by 800 or 801.") }}}
{{{ oval_metadata("This test makes sure that /run/openvswitch/ovsdb-server.pid is group owned by 800 or 801.", rule_title=rule_title) }}}
<criteria operator="OR">
<criterion comment="Check file group ownership of /run/openvswitch/ovsdb-server.pid belongs to group 800" test_ref="test_file_groupowner_ovsdb_server_pid_800" />
<criterion comment="Check file group ownership of /run/openvswitch/ovsdb-server.pid belongs to group 801" test_ref="test_file_groupowner_ovsdb_server_pid_801" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<def-group oval_version="5.11">
<definition class="compliance" id="file_permissions_cni_conf" version="1"> {{{ oval_metadata("One of the permission checks must pass") }}}
<definition class="compliance" id="file_permissions_cni_conf" version="1"> {{{ oval_metadata("One of the permission checks must pass", rule_title=rule_title) }}}
<criteria operator="OR">
<extend_definition comment="cni conf outside s390x" definition_ref="file_permissions_cni_conf_not_s390x" />
<extend_definition comment="cni conf on s390x" definition_ref="file_permissions_cni_conf_s390x" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{{% set networkpolicies_for_non_ctlplane_namespaces_filter = '[.items[] | select((.metadata.namespace | startswith("openshift") | not) and (.metadata.namespace | startswith("kube-") | not) and .metadata.namespace != "default" and ({{if ne .var_network_policies_namespaces_exempt_regex "None"}}.metadata.namespace | test("{{.var_network_policies_namespaces_exempt_regex}}") | not{{else}}true{{end}})) | .metadata.namespace] | unique' %}}
{{% set non_ctlplane_namespaces_filter = '[.items[] | select((.metadata.name | startswith("openshift") | not) and (.metadata.name | startswith("kube-") | not) and .metadata.name != "default" and ({{if ne .var_network_policies_namespaces_exempt_regex "None"}}.metadata.name | test("{{.var_network_policies_namespaces_exempt_regex}}") | not{{else}}true{{end}}))]' %}}
<definition class="compliance" id="configure_network_policies_namespaces" version="1">
{{{ oval_metadata("Ensure that application Namespaces have Network Policies defined") }}}
{{{ oval_metadata("Ensure that application Namespaces have Network Policies defined", rule_title=rule_title) }}}
<criteria>
<criterion comment="Make sure that the file '{{{ openshift_filtered_path(networkpolicies_api_path, networkpolicies_for_non_ctlplane_namespaces_filter) }}} exists."
test_ref="test_file_for_configure_network_policies_namespaces"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="ingress_controller_tls_security_profile" version="1">
{{{ oval_metadata("TLS security profile configured for IngressController must use secure protocols") }}}
{{{ oval_metadata("TLS security profile configured for IngressController must use secure protocols", rule_title=rule_title) }}}

<criteria operator="AND">
<extend_definition comment="IngressController tlsSecurityProfile=Old is not configured" definition_ref="ingress_controller_tls_security_profile_not_old" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group oval_version="5.11">
<definition class="compliance" id="project_config_and_template_network_policy" version="1">
{{{ oval_metadata("A project template with NetworkPolicies must be created and referenced from the cluster project config") }}}
{{{ oval_metadata("A project template with NetworkPolicies must be created and referenced from the cluster project config", rule_title=rule_title) }}}

<criteria operator="AND">
<extend_definition comment="project template with NetworkPolicies set" definition_ref="project_template_network_policy" />
Expand Down
1 change: 1 addition & 0 deletions build-scripts/build_templated_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ def parse_args():

env_yaml = ssg.environment.open_environment(
args.build_config_yaml, args.product_yaml)
ssg.jinja.initialize(env_yaml)
builder = ssg.templates.Builder(
env_yaml, args.resolved_rules_dir, args.templates_dir,
args.remediations_dir, args.checks_dir, args.platforms_dir, args.cpe_items_dir)
Expand Down
1 change: 1 addition & 0 deletions build-scripts/collect_remediations.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ def main():

env_yaml = ssg.environment.open_environment(
args.build_config_yaml, args.product_yaml)
ssg.jinja.initialize(env_yaml)

product = ssg.utils.required_key(env_yaml, "product")
output_dirs = prepare_output_dirs(args.output_dir, args.remediation_type)
Expand Down
2 changes: 2 additions & 0 deletions build-scripts/compile_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import ssg.build_profile
import ssg.build_yaml
import ssg.jinja
import ssg.utils
import ssg.controls
import ssg.products
Expand Down Expand Up @@ -190,6 +191,7 @@ def main():
project_root_abspath = os.path.abspath(args.project_root)

env_yaml = get_env_yaml(args.build_config_yaml, args.product_yaml)
ssg.jinja.initialize(env_yaml)
product_yaml = ssg.products.Product(args.product_yaml)

product_cpes = ProductCPEs()
Expand Down
2 changes: 1 addition & 1 deletion build-scripts/expand_jinja.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import ssg.jinja


SUBS_DICT = ssg.jinja.load_macros()
SUBS_DICT = {}


def expand_jinja(filepath):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="audit_rules_dac_modification_umount" version="1">
{{{ oval_metadata("The changing of file permissions and attributes should be audited.") }}}
{{{ oval_metadata("The changing of file permissions and attributes should be audited.", rule_title=rule_title) }}}
<criteria operator="OR">

<!-- Test the augenrules case -->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="audit_rules_file_deletion_events" version="1">
{{{ oval_metadata("Audit files deletion events.") }}}
{{{ oval_metadata("Audit files deletion events.", rule_title=rule_title) }}}
<criteria operator="AND">
<extend_definition comment="audit rmdir" definition_ref="audit_rules_file_deletion_events_rmdir" />
<extend_definition comment="audit unlink" definition_ref="audit_rules_file_deletion_events_unlink" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="audit_rules_unsuccessful_file_modification" version="1">
{{{ oval_metadata("Audit rules about the unauthorized access attempts to files (unsuccessful) are enabled.") }}}
{{{ oval_metadata("Audit rules about the unauthorized access attempts to files (unsuccessful) are enabled.", rule_title=rule_title) }}}

<criteria operator="AND">
<extend_definition comment="audit creat" definition_ref="audit_rules_unsuccessful_file_modification_creat" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<def-group>
<definition class="compliance" id="audit_rules_kernel_module_loading" version="1">
{{{ oval_metadata("The audit rules should be configured to log information about kernel module loading and unloading.") }}}
{{{ oval_metadata("The audit rules should be configured to log information about kernel module loading and unloading.", rule_title=rule_title) }}}
<criteria operator="AND">
<extend_definition comment="audit init_module" definition_ref="audit_rules_kernel_module_loading_init" />
<extend_definition comment="audit delete_module" definition_ref="audit_rules_kernel_module_loading_delete" />
Expand Down
Loading
Loading