{"success": true,"components": [{"name": "-sha256:de4ec16708c0480d507278b82ec54b6714b1908059ca8e99242931888548c3f9-amd64","containerImage": "quay.io/konflux-ci/ec-golden-image@sha256:de4ec16708c0480d507278b82ec54b6714b1908059ca8e99242931888548c3f9","source": {},"warnings": [{"msg": "Task \"buildah-remote-oci-ta\" is used by pipeline task \"build-container\" is or will be unsupported as of 2026-03-21T00:00:00Z. Upgrade to a newer version of the Task.","metadata": {"code": "tasks.unsupported","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "The Tekton Task used is or will be unsupported. The Task is annotated with `build.appstudio.redhat.com/expires-on` annotation marking it as unsupported after a certain date.","effective_on": "2026-03-21T00:00:00Z","term": "buildah-remote-oci-ta","title": "Task version unsupported"}},{"msg": "The Task \"ecosystem-cert-preflight-checks\" from the build Pipeline reports a failed informative test","metadata": {"code": "test.no_failed_informative_tests","collections": ["redhat"],"depends_on": ["test.test_data_found"],"description": "Produce a warning if any informative tests have their result set to \"FAILED\". The result type is configurable by the \"failed_tests_results\" key, and the list of informative tests is configurable by the \"informative_tests\" key in the rule data.","solution": "There is a test that failed. Make sure that any task in the build pipeline with a result named 'TEST_OUTPUT' does not fail. More information about the test should be available in the logs for the build Pipeline.","term": "ecosystem-cert-preflight-checks","title": "No informative tests failed"}},{"msg": "A newer version of task \"build-image-index\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.2@sha256:05d3d8a5ded44c51b074a56a408ddf5d65c56b4c15e110abb1a99e3aff269d49\" and the latest bundle ref is \"sha256:30989fa1f475bb8f6bda811b26bd4ddf7187288ed5815ce634ba399341852c75\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "build-image-index","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"build-container\" exists. Please update before 2026-03-31T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.7@sha256:2bc9ff8a284b2d4e3069f8537186a227d74752d02306af97809afd1eae202d10\" and the latest bundle ref is \"sha256:60418fd28e3a1e49bac3455e444a324793c2fb745ff00585efb109b4340f4ab6\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "buildah-remote-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"clair-scan\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.3@sha256:dadfea7633d82e4303ba73d5e9c7e2bc16834bde0fd7688880453b26452067eb\" and the latest bundle ref is \"sha256:b01d8e2c58eb407ac23fa07b8e44c4631f0cf7257e87507c829fa2486aff9804\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "clair-scan","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"clamav-scan\" exists. Please update before 2026-03-30T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:671bdcfa566bb3d7981b5bdee107f527f2920c6031ca8c0750cc9e8c422b84f5\" and the latest bundle ref is \"sha256:5b5b31eae9063a00b91acc049b536e548d87c730068e439eefe33ab5238ee118\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "clamav-scan","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"ecosystem-cert-preflight-checks\" exists. Please update before 2026-04-01T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:0c3f9d4707bf742a5209f2e2186211433c83d5fcc538c728e4c7df178b5eafb7\" and the latest bundle ref is \"sha256:40bc4bcc1c52c114139daee60ec2ddeb59921ecef8a68f241d5593c79b2a21d6\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "ecosystem-cert-preflight-checks","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"init\" exists. Please update before 2026-04-07T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:ebf06778aeacbbeb081f9231eafbdfdb8e380ad04e211d7ed80ae9101e37fd82\" and the latest bundle ref is \"sha256:a482890d072df3aff9cf5db0ff2b9ec04fa6bb006cfd9da9817805fdd11a73f5\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "init","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"prefetch-dependencies\" exists. Please update before 2026-04-17T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:c664a6df6514b59c3ce53570b0994b45af66ecc89ba2a8e41834eae0622addf6\" and the latest bundle ref is \"sha256:c07551efbd7fc414ae1245ddd93579b00317fee0734980f539fd8aea3cfcb945\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "prefetch-dependencies-oci-ta","title": "Tasks using the latest versions"}},{ "msg": "A newer version of task \"push-dockerfile\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:08bba4a659ecd48f871bef00b80af58954e5a09fcbb28a1783ddd640c4f6535e\" and the latest bundle ref is \"sha256:2623be4a9bad87ade614b4b24a8f98a4e100042a845e8f162b8237168697294c\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "push-dockerfile-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-shell-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:e7a51575f9188a1461d4520da25aaa4efdd3b896c97dc750941fa22840e55c13\" and the latest bundle ref is \"sha256:f475b4b6b0c1687fa1aafa5ba38813e04f080b185af2975e12b457742d9dd857\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-shell-check-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-snyk-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:a70272ae12f6d7f0da2902158e1bcee756877aa8f71fd1a22ef9afd8b177fb41\" and the latest bundle ref is \"sha256:0c2ab8ce6d419400b63dd67d061052ac51de7b1ebe93f8ae86ed07ac638d756d\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-snyk-check-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-unicode-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.4@sha256:1818a5b3e4fa86c838ae71226a157241967d1f19c5ed377e4b2fddad7a3ceefe\" and the latest bundle ref is \"sha256:b38140b2f0b2163def80e28a792b2702245d38a5610a504f2e56c198f3b8f70b\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-unicode-check-oci-ta","title": "Tasks using the latest versions"}}],"successes": [{"msg": "Pass","metadata": {"code": "attestation_type.deprecated_policy_attestation_format","collections": ["minimal","redhat","redhat_rpms"],"description": "The Conforma CLI now places the attestation data in a different location. This check fails if the expected new format is not found.","effective_on": "2023-08-31T00:00:00Z","title": "Deprecated policy attestation format"}},{"msg": "Pass","metadata": {"code": "attestation_type.known_attestation_type","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["attestation_type.pipelinerun_attestation_found"],"description": "Confirm the attestation found for the image has a known attestation type.","title": "Known attestation type found"}},{"msg": "Pass","metadata": {"code": "attestation_type.known_attestation_types_provided","collections": ["minimal","redhat","redhat_rpms","policy_data"],"description": "Confirm the `known_attestation_types` rule data was provided.","title": "Known attestation types provided"}},{"msg": "Pass","metadata": {"code": "attestation_type.pipelinerun_attestation_found","collections": ["minimal","redhat","redhat_rpms"],"description": "Confirm at least one PipelineRun attestation is present.","title": "PipelineRun attestation found"}},{"msg": "Pass","metadata": {"code": "base_image_registries.allowed_registries_provided","collections": ["minimal","redhat","policy_data"],"description": "Confirm the `allowed_registry_prefixes` rule data was provided, since it's required by the policy rules in this package.","title": "Allowed base image registry prefixes list was provided"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_info_found","collections": ["minimal","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the expected information was provided about which base images were used during the build process. The list of base images comes from any associated CycloneDX or SPDX SBOMs.","title": "Base images provided"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_permitted","collections": ["minimal","redhat"],"depends_on": ["base_image_registries.base_image_info_found","base_image_registries.allowed_registries_provided"],"description": "Verify that the base images used when building a container image come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of permitted registries can be customized by setting the `allowed_registry_prefixes` list in the rule data. Base images that are found in the snapshot being validated are also allowed since EC will also validate those images individually.","title": "Base image comes from permitted registry"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_permitted","collections": ["minimal","redhat"],"depends_on": ["base_image_registries.base_image_info_found","base_image_registries.allowed_registries_provided"],"description": "Verify that the base images used when building a container image come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of permitted registries can be customized by setting the `allowed_registry_prefixes` list in the rule data. Base images that are found in the snapshot being validated are also allowed since EC will also validate those images individually.","title": "Base image comes from permitted registry"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.add_capabilities_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the ADD_CAPABILITIES parameter of a builder Tasks was not used.","effective_on": "2024-08-31T00:00:00Z","title": "ADD_CAPABILITIES parameter"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.buildah_uses_local_dockerfile","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the Dockerfile used in the buildah task was not fetched from an external source.","title": "Buildah task uses a local Dockerfile"}},{"msg": "Pass","metadata": { "code": "buildah_build_task.disallowed_platform_patterns_pattern","collections": ["redhat","policy_data"],"description": "Confirm the `disallowed_platform_patterns` rule data, if provided matches the expected format.","title": "disallowed_platform_patterns format"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.platform_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the value of the PLATFORM parameter of a builder Task is allowed by matching against a list of disallowed patterns. The list of patterns can be customized via the `disallowed_platform_patterns` rule data key. If empty, all values are allowed.","effective_on": "2024-09-01T00:00:00Z","title": "PLATFORM parameter"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.privileged_nested_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the PRIVILEGED_NESTED parameter of a builder Tasks was not set to `true`.","title": "PRIVILEGED_NESTED parameter"}},{"msg": "Pass","metadata": {"code": "builtin.attestation.signature_check","description": "The attestation signature matches available signing materials.","title": "Attestation signature check passed"}},{"msg": "Pass","metadata": {"code": "builtin.attestation.syntax_check","description": "The attestation has correct syntax.","title": "Attestation syntax check passed"}},{"msg": "Pass","metadata": {"code": "builtin.image.signature_check","description": "The image signature matches available signing materials.","title": "Image signature check passed"}},{"msg": "Pass","metadata": {"code": "cve.cve_blockers","collections": ["minimal","redhat"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that have a known fix and meet a certain security level have not been detected. If detected, this policy rule will fail. By default, only CVEs of critical and high security level cause a failure. This is configurable by the rule data key `restrict_cve_security_levels`. The available levels are critical, high, medium, low, and unknown. In addition to that leeway can be granted per severity using the `cve_leeway` rule data key containing days of allowed leeway, measured as time between found vulnerability's public disclosure date and current effective time, per severity level.","title": "Blocking CVE check"}},{"msg": "Pass","metadata": {"code": "cve.cve_warnings","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that have a known fix and meet a certain security level have not been detected. If detected, this policy rule will raise a warning. By default, the list of CVE security levels used by this policy is empty. However, this is configurable by the rule data key `warn_cve_security_levels`. The available levels are critical, high, medium, low, and unknown.","title": "Non-blocking CVE check"}},{"msg": "Pass","metadata": {"code": "cve.rule_data_provided","collections": ["minimal","redhat","redhat_rpms","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `restrict_cve_security_levels`,\t`warn_cve_security_levels`, `restrict_unpatched_cve_security_levels`, and `warn_unpatched_cve_security_levels`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "cve.unpatched_cve_blockers","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that do NOT have a known fix and meet a certain security level have not been detected. If detected, this policy rule will fail. By default, the list of security levels used by this policy is empty. This is configurable by the rule data key `restrict_unpatched_cve_security_levels`. The available levels are critical, high, medium, low, and unknown. In addition to that leeway can be granted per severity using the `cve_leeway` rule data key containing days of allowed leeway, measured as time between found vulnerability's public disclosure date and current effective time, per severity level.","title": "Blocking unpatched CVE check"}},{"msg": "Pass","metadata": {"code": "cve.unpatched_cve_warnings","collections": ["minimal","redhat"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that do NOT have a known fix and meet a certain security level have not been detected. If detected, this policy rule will raise a warning. By default, only CVEs of critical and high security level cause a warning. This is configurable by the rule data key `warn_unpatched_cve_security_levels`. The available levels are critical, high, medium, low, and unknown.","title": "Non-blocking unpatched CVE check"}},{"msg": "Pass","metadata": {"code": "hermetic_task.hermetic","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the task in the PipelineRun attestation was invoked with the proper parameters to make the task execution hermetic.","title": "Task called with hermetic param set"}},{"msg": "Pass","metadata": {"code": "labels.deprecated_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that have been deprecated. Use the rule data key `deprecated_labels` to set the list of labels to check.","title": "Deprecated labels"}},{"msg": "Pass","metadata": {"code": "labels.disallowed_inherited_labels","collections": ["redhat"],"description": "Check that certain labels on the image have different values than the labels from the parent image. If the label is inherited from the parent image but not redefined for the image, it will contain an incorrect value for the image. Use the rule data `disallowed_inherited_labels` key to set the list of labels to check, or the `fbc_disallowed_inherited_labels` key for fbc images.","title": "Disallowed inherited labels"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_config","collections": ["redhat"],"description": "The image config is not accessible.","title": "Inaccessible image config"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_manifest","collections": ["redhat"],"description": "The image manifest is not accessible.","title": "Inaccessible image manifest"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_parent_config","collections": ["redhat"],"description": "The parent image config is not accessible.","title": "Inaccessible parent image config"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_parent_manifest","collections": ["redhat"],"description": "The parent image manifest is not accessible.","title": "Inaccessible parent image manifest"}},{"msg": "Pass","metadata": {"code": "labels.optional_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that are recommended, but not required. Use the rule data `optional_labels` key to set the list of labels to check, or the `fbc_optional_labels` key for fbc images.","title": "Optional labels"}},{"msg": "Pass","metadata": {"code": "labels.required_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that are required. Use the rule data `required_labels` key to set the list of labels to check, or the `fbc_required_labels` key for fbc images.","title": "Required labels"}},{"msg": "Pass","metadata": {"code": "labels.rule_data_provided","collections": ["redhat","policy_data"], "description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `required_labels`,\t`fbc_required_labels`, `optional_labels`, `fbc_optional_labels`, `disallowed_inherited_labels`, `fbc_disallowed_inherited_labels`, and `deprecated_labels`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "olm.allowed_registries","collections": ["redhat"],"description": "Each image referenced by the OLM bundle should match an entry in the list of prefixes defined by the rule data key `allowed_olm_image_registry_prefixes` in your policy configuration.","effective_on": "2024-09-01T00:00:00Z","title": "Images referenced by OLM bundle are from allowed registries"}},{"msg": "Pass","metadata": {"code": "olm.allowed_registries_related","collections": ["redhat"],"description": "Each image indicated as a related image should match an entry in the list of prefixes defined by the rule data key `allowed_olm_image_registry_prefixes` in your policy configuration.","effective_on": "2025-04-15T00:00:00Z","title": "Related images references are from allowed registries"}},{"msg": "Pass","metadata": {"code": "olm.allowed_resource_kinds","collections": ["redhat"],"description": "Every manifest in an OLM bundle must be of an allowed resource kind, as defined by the rule data key `allowed_olm_resource_kinds`.","title": "OLM bundle image manifests contain only allowed resource kinds"}},{"msg": "Pass","metadata": {"code": "olm.csv_semver_format","collections": ["redhat"],"description": "Check the `spec.version` value in the ClusterServiceVersion manifest of the OLM bundle uses a properly formatted semver.","title": "ClusterServiceVersion semver format"}},{"msg": "Pass","metadata": {"code": "olm.feature_annotations_format","collections": ["redhat"],"description": "Check the feature annotations in the ClusterServiceVersion manifest of the OLM bundle. All of required feature annotations must be present and set to either the string `\"true\"` or the string `\"false\"`. The list of feature annotations can be customize via the `required_olm_features_annotations` rule data.","title": "Feature annotations have expected value"}},{"msg": "Pass","metadata": {"code": "olm.inaccessible_related_images","collections": ["redhat"],"description": "Check the input image for the presence of related images. Ensure that all images are accessible.","effective_on": "2025-03-10T00:00:00Z","title": "Unable to access related images for a component"}},{"msg": "Pass","metadata": {"code": "olm.olm_bundle_multi_arch","collections": ["redhat"],"description": "OLM bundle images should be built for a single architecture. They should not be OCI image indexes nor should they be Docker v2s2 manifest lists.","effective_on": "2025-05-01T00:00:00Z","title": "OLM bundle images are not multi-arch"}},{"msg": "Pass","metadata": {"code": "olm.required_olm_features_annotations_provided","collections": ["redhat","policy_data"],"description": "Confirm the `required_olm_features_annotations` rule data was provided, since it's required by the policy rules in this package.","title": "Required OLM feature annotations list provided"}},{"msg": "Pass","metadata": {"code": "olm.subscriptions_annotation_format","collections": ["redhat"],"description": "Check the value of the operators.openshift.io/valid-subscription annotation from the ClusterServiceVersion manifest is in the expected format, i.e. JSON encoded non-empty array of strings.","effective_on": "2024-04-18T00:00:00Z","title": "Subscription annotation has expected value"}},{"msg": "Pass","metadata": {"code": "olm.unmapped_references","collections": ["redhat"],"description": "Check the OLM bundle image for the presence of unmapped image references. Unmapped image pull references are references to images found in link:https://osbs.readthedocs.io/en/latest/users.html#pullspec-locations[varying locations] that are either not in the RPA about to be released or not accessible already.","effective_on": "2024-08-15T00:00:00Z","title": "Unmapped images in OLM bundle"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_references","collections": ["redhat"],"description": "Check the OLM bundle image for the presence of unpinned image references. Unpinned image pull references are references to images found in link:https://osbs.readthedocs.io/en/latest/users.html#pullspec-locations[varying locations] that do not contain a digest -- uniquely identifying the version of the image being pulled.","title": "Unpinned images in OLM bundle"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_related_images","collections": ["redhat"],"description": "Check the input image for the presence of related images. Ensure all related image references include a digest.","title": "Unpinned related images for a component"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_snapshot_references","collections": ["redhat"],"description": "Check the input snapshot for the presence of unpinned image references. Unpinned image pull references are references to images that do not contain a digest -- uniquely identifying the version of the image being pulled.","effective_on": "2024-08-15T00:00:00Z","title": "Unpinned images in input snapshot"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_allowed","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type","base_image_registries.allowed_registries_provided"],"description": "Verify that the images used to run the pre-build script tasks come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of allowed registries can be customized by setting the `allowed_registry_prefixes` list in the rule data.","title": "Script runner image comes from allowed registry"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_allowed","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type","base_image_registries.allowed_registries_provided"],"description": "Verify that the images used to run the pre-build script tasks come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of allowed registries can be customized by setting the `allowed_registry_prefixes` list in the rule data.","title": "Script runner image comes from allowed registry"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_in_results","collections": ["redhat"],"description": "Verify that the image used to run the pre-build script task is listed in the task result SCRIPT_RUNNER_IMAGE_REFERENCE","title": "Script runner image is listed in the task results"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_in_sbom","collections": ["redhat"],"description": "Verify that the image used to run the pre-build script task is included in the SBOM","title": "Script runner image is included in the sbom"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.valid_pre_build_script_task_runner_image_ref","collections": ["redhat"],"description": "Verify that a valid image reference is specified as image being used to run the pre-build script task","title": "Script runner image is a valid image reference"}},{"msg": "Pass","metadata": {"code": "prefetch_dependencies.mode_not_permissive","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the prefetch-dependencies task in the PipelineRun attestation was not invoked with the \"permissive\" mode parameter, which could compromise security.","title": "Prefetch dependencies mode parameter check" }},{"msg": "Pass","metadata": {"code": "provenance_materials.git_clone_source_matches_provenance","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["provenance_materials.git_clone_task_found"],"description": "Confirm that the result of the git-clone task is included in the materials section of the SLSA provenance attestation.","title": "Git clone source matches materials provenance"}},{"msg": "Pass","metadata": {"code": "provenance_materials.git_clone_task_found","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Confirm that the attestation contains a git-clone task with `commit` and `url` task results.","title": "Git clone task found"}},{"msg": "Pass","metadata": {"code": "quay_expiration.expires_label","collections": ["redhat"],"description": "Check the image metadata for the presence of a \"quay.expires-after\" label. If it's present then produce a violation. This check is enforced only for a \"release\", \"production\", or \"staging\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Expires label"}},{"msg": "Pass","metadata": {"code": "rpm_ostree_task.builder_image_param","collections": ["redhat"],"description": "Verify the BUILDER_IMAGE parameter of the rpm-ostree Task uses an image reference that is both pinned to a digest and starts with a pre-defined list of prefixes. By default, the list of prefixes is empty allowing any pinned image reference to be used. This is customizable via the `allowed_rpm_ostree_builder_image_prefixes` rule data.","effective_on": "2024-03-20T00:00:00Z","title": "Builder image parameter"}},{"msg": "Pass","metadata": {"code": "rpm_ostree_task.rule_data","collections": ["redhat"],"description": "Verify the rule data used by this package, `allowed_rpm_ostree_builder_image_prefixes`, is in the expected format.","title": "Rule data"}},{"msg": "Pass","metadata": {"code": "rpm_packages.unique_version","collections": ["redhat"],"description": "Check if a multi-arch build has the same RPM versions installed across each different architecture. This check only applies for Image Indexes, aka multi-platform images. Use the `non_unique_rpm_names` rule data key to ignore certain RPMs.","title": "Unique Version"}},{"msg": "Pass","metadata": {"code": "rpm_repos.ids_known","collections": ["redhat","redhat_rpms"],"description": "Each RPM package listed in an SBOM must specify the repository id that it comes from, and that repository id must be present in the list of known and permitted repository ids. Currently this is rule enforced only for SBOM components created by cachi2.","effective_on": "2024-11-10T00:00:00Z","title": "All rpms have known repo ids"}},{"msg": "Pass","metadata": {"code": "rpm_repos.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "A list of known and permitted repository ids should be available in the rule data.","title": "Known repo id list provided"}},{"msg": "Pass","metadata": {"code": "rpm_signature.allowed","collections": ["redhat","redhat_rpms"],"description": "The SLSA Provenance attestation for the image is inspected to ensure RPMs have been signed by pre-defined set of signing keys. The list of signing keys can be set via the `allowed_rpm_signature_keys` rule data. Use the special value \"unsigned\" to allow unsigned RPMs.","effective_on": "2024-10-05T00:00:00Z","title": "Allowed RPM signature key"}},{"msg": "Pass","metadata": {"code": "rpm_signature.result_format","collections": ["redhat","redhat_rpms"],"description": "Confirm the format of the RPMS_DATA result is in the expected format.","effective_on": "2024-10-05T00:00:00Z","title": "Result format"}},{"msg": "Pass","metadata": {"code": "rpm_signature.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected `allowed_rpm_signature_keys` rule data key has been provided in the expected format.","effective_on": "2024-10-05T00:00:00Z","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "sbom.disallowed_packages_provided","collections": ["redhat","policy_data","redhat_rpms"],"description": "Confirm the `disallowed_packages` and `disallowed_attributes` rule data were provided, since they are required by the policy rules in this package.","title": "Disallowed packages list is provided"}},{"msg": "Pass","metadata": {"code": "sbom.found","collections": ["minimal","redhat"],"description": "Confirm an SBOM attestation exists.","title": "Found"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed","collections": ["redhat","redhat_rpms"],"description": "Confirm the CycloneDX SBOM contains only allowed packages. By default all packages are allowed. Use the \"disallowed_packages\" rule data key to provide a list of disallowed packages.","title": "Allowed"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the CycloneDX SBOM contains only packages with explicitly allowed external references. By default all external references are allowed unless the \"allowed_external_references\" rule data key provides a list of type-pattern pairs that forbid the use of any other external reference of the given type where the reference url matches the given pattern.","title": "Allowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed_package_sources","collections": ["redhat","redhat_rpms","policy_data"],"description": "For each of the components fetched by Hermeto which define externalReferences of type distribution, verify they are allowed based on the allowed_package_sources rule data key. By default, allowed_package_sources is empty, which means no components with such references are allowed.","effective_on": "2024-12-15T00:00:00Z","title": "Allowed package sources"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.disallowed_package_attributes","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the CycloneDX SBOM contains only packages without disallowed attributes. By default all attributes are allowed. Use the \"disallowed_attributes\" rule data key to provide a list of key-value pairs that forbid the use of an attribute set to the given value.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package attributes"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.disallowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the CycloneDX SBOM contains only packages without disallowed external references. By default all external references are allowed. Use the \"disallowed_external_references\" rule data key to provide a list of type-pattern pairs that forbid the use of an external reference of the given type where the reference url matches the given pattern.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.valid","collections": ["minimal","redhat","redhat_rpms"],"description": "Check the CycloneDX SBOM has the expected format. It verifies the CycloneDX SBOM matches the 1.5 version of the schema.","title": "Valid"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed","collections": ["redhat","redhat_rpms"],"description": "Confirm the SPDX SBOM contains only allowed packages. By default all packages are allowed. Use the \"disallowed_packages\" rule data key to provide a list of disallowed packages.","title": "Allowed"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"], "description": "Confirm the SPDX SBOM contains only packages with explicitly allowed external references. By default all external references are allowed unless the \"allowed_external_references\" rule data key provides a list of type-pattern pairs that forbid the use of any other external reference of the given type where the reference url matches the given pattern.","title": "Allowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed_package_sources","collections": ["redhat","redhat_rpms","policy_data"],"description": "For each of the packages fetched by Hermeto which define externalReferences, verify they are allowed based on the allowed_package_sources rule data key. By default, allowed_package_sources is empty, which means no components with such references are allowed.","effective_on": "2025-02-17T00:00:00Z","title": "Allowed package sources"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.disallowed_package_attributes","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the SPDX SBOM contains only packages without disallowed attributes. By default all attributes are allowed. Use the \"disallowed_attributes\" rule data key to provide a list of key-value pairs that forbid the use of an attribute set to the given value.","effective_on": "2025-02-04T00:00:00Z","title": "Disallowed package attributes"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.disallowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the SPDX SBOM contains only packages without disallowed external references. By default all external references are allowed. Use the \"disallowed_external_references\" rule data key to provide a list of type-pattern pairs that forbid the use of an external reference of the given type where the reference url matches the given pattern.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.valid","collections": ["minimal","redhat","redhat_rpms"],"description": "Check the SPDX SBOM has the expected format. It verifies the SPDX SBOM matches the 2.3 version of the schema.","title": "Valid"}},{"msg": "Pass","metadata": {"code": "schedule.date_restriction","collections": ["redhat"],"description": "Check if the current date is not allowed based on the rule data value from the key `disallowed_dates`. By default, the list is empty in which case *any* day is allowed. This check is enforced only for a \"release\" or \"production\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Date Restriction"}},{"msg": "Pass","metadata": {"code": "schedule.rule_data_provided","collections": ["redhat","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `disallowed_weekdays` and `disallowed_dates`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "schedule.weekday_restriction","collections": ["redhat"],"description": "Check if the current weekday is allowed based on the rule data value from the key `disallowed_weekdays`. By default, the list is empty in which case *any* weekday is allowed. This check is enforced only for a \"release\" or \"production\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Weekday Restriction"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.allowed_builder_ids_provided","collections": ["slsa3","redhat","redhat_rpms","policy_data"],"description": "Confirm the `allowed_builder_ids` rule data was provided, since it is required by the policy rules in this package.","title": "Allowed builder IDs provided"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.slsa_builder_id_accepted","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the attestation attribute predicate.builder.id is set to one of the values in the `allowed_builder_ids` rule data, e.g. \"https://tekton.dev/chains/v2\".","title": "SLSA Builder ID is known and accepted"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.slsa_builder_id_found","collections": ["slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the attestation attribute predicate.builder.id is set.","title": "SLSA Builder ID found"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.build_script_used","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the predicate.buildConfig.tasks.steps attribute for the task responsible for building and pushing the image is not empty.","title": "Build task contains steps"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.build_task_image_results_found","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Confirm that a build task exists and it has the expected IMAGE_DIGEST and IMAGE_URL task results.","title": "Build task set image digest and url task results"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.image_built_by_trusted_task","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the digest of the image being validated is reported by a trusted Task in its IMAGE_DIGEST result.","title": "Image built by trusted Task"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.subject_build_task_matches","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the subject of the attestations matches the IMAGE_DIGEST and IMAGE_URL values from the build task.","title": "Provenance subject matches build task image result"}},{"msg": "Pass","metadata": {"code": "slsa_provenance_available.allowed_predicate_types_provided","collections": ["minimal","slsa3","redhat","redhat_rpms","policy_data"],"description": "Confirm the `allowed_predicate_types` rule data was provided, since it is required by the policy rules in this package.","title": "Allowed predicate types provided"}},{"msg": "Pass","metadata": {"code": "slsa_provenance_available.attestation_predicate_type_accepted","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the predicateType field of the attestation indicates the in-toto SLSA Provenance format was used to attest the PipelineRun.","title": "Expected attestation predicate type found"}},{"msg": "Pass","metadata": {"code": "slsa_source_correlated.attested_source_code_reference","collections": ["minimal","slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Attestation contains source reference.","title": "Source reference"}},{"msg": "Pass","metadata": {"code": "slsa_source_correlated.expected_source_code_reference","collections": ["minimal","slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the provided source code reference is the one being attested.","title": "Expected source code reference"}},{"msg": "Pass","metadata": {"code": "slsa_source_correlated.rule_data_provided","collections": ["minimal","slsa3","redhat","redhat_rpms","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_vcs` and `supported_digests`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_format_okay","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"], "description": "Confirm at least one entry in the predicate.materials array of the attestation contains the expected attributes: uri and digest.sha1.","title": "Materials have uri and digest"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_include_git_sha","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure that each entry in the predicate.materials array with a SHA-1 digest includes a valid Git commit SHA.","title": "Materials include git commit shas"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_uri_is_git_repo","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure each entry in the predicate.materials array with a SHA-1 digest includes a valid Git URI.","title": "Material uri is a git repo"}},{"msg": "Pass","metadata": {"code": "source_image.exists","collections": ["redhat"],"description": "Verify the source container image exists.","effective_on": "2024-06-05T00:00:00Z","title": "Exists"}},{"msg": "Pass","metadata": {"code": "source_image.signed","collections": ["redhat"],"depends_on": ["source_image.exists"],"description": "Verify the source container image is signed.","effective_on": "2024-05-04T00:00:00Z","title": "Signed"}},{"msg": "Pass","metadata": {"code": "tasks.data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected data keys have been provided in the expected format. The keys are `pipeline-required-tasks` and `required-tasks`.","title": "Data provided"}},{"msg": "Pass","metadata": {"code": "tasks.future_required_tasks_found","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Produce a warning when a task that will be required in the future was not included in the PipelineRun attestation.","title": "Future required tasks were found"}},{"msg": "Pass","metadata": {"code": "tasks.pinned_task_refs","collections": ["redhat"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that all Tasks in the SLSA Provenance attestation use an immuntable reference to the Task definition.","title": "Pinned Task references"}},{"msg": "Pass","metadata": {"code": "tasks.pipeline_has_tasks","collections": ["minimal","redhat","redhat_rpms","slsa3"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure that at least one Task is present in the PipelineRun attestation.","title": "Pipeline run includes at least one task"}},{"msg": "Pass","metadata": {"code": "tasks.pipeline_required_tasks_list_provided","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Produce a warning if the required tasks list rule data was not provided.","title": "Required tasks list for pipeline was provided"}},{"msg": "Pass","metadata": {"code": "tasks.required_tasks_found","collections": ["redhat"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that the set of required tasks are included in the PipelineRun attestation.","title": "All required tasks were included in the pipeline"}},{"msg": "Pass","metadata": {"code": "tasks.required_tasks_list_provided","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Confirm the `required-tasks` rule data was provided, since it's required by the policy rules in this package.","title": "Required tasks list was provided"}},{"msg": "Pass","metadata": {"code": "tasks.required_untrusted_task_found","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that the all required tasks are resolved from trusted tasks.","title": "All required tasks are from trusted tasks"}},{"msg": "Pass","metadata": {"code": "tasks.successful_pipeline_tasks","collections": ["minimal","redhat","redhat_rpms","slsa3"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that all of the Tasks in the Pipeline completed successfully. Note that skipped Tasks are not taken into account and do not influence the outcome.","title": "Successful pipeline tasks"}},{"msg": "Pass","metadata": {"code": "test.no_erred_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any tests have their result set to \"ERROR\". The result type is configurable by the \"erred_tests_results\" key in the rule data.","title": "No tests erred"}},{"msg": "Pass","metadata": {"code": "test.no_failed_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any non-informative tests have their result set to \"FAILED\". The result type is configurable by the \"failed_tests_results\" key, and the list of informative tests is configurable by the \"informative_tests\" key in the rule data.","title": "No tests failed"}},{"msg": "Pass","metadata": {"code": "test.no_skipped_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any tests have their result set to \"SKIPPED\". A skipped result means a pre-requirement for executing the test was not met, e.g. a license key for executing a scanner was not provided. The result type is configurable by the \"skipped_tests_results\" key in the rule data.","effective_on": "2023-12-08T00:00:00Z","title": "No tests were skipped"}},{"msg": "Pass","metadata": {"code": "test.no_test_warnings","collections": ["redhat"],"depends_on": ["test.test_data_found"],"description": "Produce a warning if any tests have their result set to \"WARNING\". The result type is configurable by the \"warned_tests_results\" key in the rule data.","title": "No tests produced warnings"}},{"msg": "Pass","metadata": {"code": "test.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_tests_results`, `failed_tests_results`, `informative_tests`, `erred_tests_results`, `skipped_tests_results`, and `warned_tests_results`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "test.test_all_images","collections": ["redhat","redhat_rpms"],"description": "Ensure that task producing the IMAGES_PROCESSED result contains the digests of the built image.","effective_on": "2024-05-29T00:00:00Z","title": "Image digest is present in IMAGES_PROCESSED result"}},{"msg": "Pass","metadata": {"code": "test.test_data_found","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure that at least one of the tasks in the pipeline includes a TEST_OUTPUT task result, which is where Conforma expects to find test result data.","title": "Test data found in task results"}},{"msg": "Pass","metadata": {"code": "test.test_results_found","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Each test result is expected to have a `results` key. Verify that the `results` key is present in all of the TEST_OUTPUT task results.","title": "Test data includes results key"}},{"msg": "Pass","metadata": {"code": "test.test_results_known","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Ensure all test data result values are in the set of known/supported result values.","title": "No unsupported test result values found"}},{"msg": "Pass","metadata": {"code": "trusted_task.data","collections": ["redhat","redhat_rpms"],"description": "Confirm the `trusted_tasks` rule data was provided, since it's required by the policy rules in this package.","effective_on": "2024-05-07T00:00:00Z","title": "Task tracking data was provided"}},{"msg": "Pass","metadata": {"code": "trusted_task.data_format","collections": ["redhat","redhat_rpms", "policy_data"],"description": "Confirm the expected `trusted_tasks` data keys have been provided in the expected format.","title": "Data format"}},{"msg": "Pass","metadata": {"code": "trusted_task.future_deny_rule","collections": ["redhat"],"description": "Warn when a task matches a deny rule that has an effective_on date in the future. This provides advance notice that a task will become untrusted when the deny rule takes effect.","title": "Future deny rule will apply"}},{"msg": "Pass","metadata": {"code": "trusted_task.pinned","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.","effective_on": "2024-05-07T00:00:00Z","title": "Task references are pinned"}},{"msg": "Pass","metadata": {"code": "trusted_task.tagged","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks defined with the bundle format contain a tag reference.","effective_on": "2024-05-07T00:00:00Z","title": "Task references are tagged"}},{"msg": "Pass","metadata": {"code": "trusted_task.trusted","collections": ["redhat"],"description": "Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted.","effective_on": "2024-05-07T00:00:00Z","title": "Tasks are trusted"}},{"msg": "Pass","metadata": {"code": "trusted_task.trusted_parameters","collections": ["redhat"],"description": "Confirm certain parameters provided to each builder Task have come from trusted Tasks. Trust can be defined using pattern-based rules (trusted_task_rules) or an explicit allow list with expiry dates (trusted_tasks).","effective_on": "2021-07-04T00:00:00Z","title": "Trusted parameters"}},{"msg": "Pass","metadata": {"code": "trusted_task.valid_trusted_artifact_inputs","collections": ["redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "All input trusted artifacts must be produced on the pipeline. If they are not the artifact could have been injected by a rogue task.","title": "Trusted Artifact produced in pipeline"}},{"msg": "Pass","metadata": {"code": "volatile_config.expired_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has passed its effectiveUntil date. Expired rules are no longer active and should be removed from the policy configuration.","title": "Volatile rule has expired"}},{"msg": "Pass","metadata": {"code": "volatile_config.expiring_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule will expire within the configured warning threshold (default 30 days). This provides advance notice to extend or replace the rule before it expires.","title": "Volatile rule expiring soon"}},{"msg": "Pass","metadata": {"code": "volatile_config.invalid_config","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has invalid date values that cannot be parsed. This indicates a configuration error that should be corrected.","title": "Volatile rule has invalid configuration"}},{"msg": "Pass","metadata": {"code": "volatile_config.no_expiration","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has no effectiveUntil date set. Rules without expiration dates may accumulate over time and should be periodically reviewed.","title": "Volatile rule has no expiration"}},{"msg": "Pass","metadata": {"code": "volatile_config.pending_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has an effectiveOn date in the future, indicating it will become active at that time.","title": "Volatile rule pending activation"}}],"success": true,"signatures": [{"keyid": "","sig": "MEQCIGGdF8FBwsiFIftOhdu1BcscK8KoR64oO1LkKoJz9KtgAiBmubg8ZC4nlHoryx661A7rD/OL0Fw/6KLVvqiJERLCyA=="},{"keyid": "","sig": "MEQCIBFWRntCI4rARMpDN+vYNACYUcgUwV5cNFu2uX2V+vXvAiAVRl6f1H12g5UcEoNJFutT+kv0TZjSQeULASpv+s22Pg=="}],"attestations": [{"type": "https://in-toto.io/Statement/v0.1","predicateType": "https://slsa.dev/provenance/v0.2","predicateBuildType": "tekton.dev/v1/PipelineRun","signatures": [{"keyid": "SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY","sig": "MEQCIFxdKWG2j4uBCJXGN6bl1oiVOiO0y0jpJovHJrX6jCZwAiBKKMiztVMLSSNpFORFTIY7r62R24QD4Grx0snRjSpxqQ=="}]}]},{"name": "","containerImage": "quay.io/konflux-ci/ec-golden-image@sha256:c8680065e3e32be21e3aadaad8a9432a8c6658a42f098224883a7f29c73d58b8","source": {},"warnings": [{"msg": "Task \"buildah-remote-oci-ta\" is used by pipeline task \"build-container\" is or will be unsupported as of 2026-03-21T00:00:00Z. Upgrade to a newer version of the Task.","metadata": {"code": "tasks.unsupported","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "The Tekton Task used is or will be unsupported. The Task is annotated with `build.appstudio.redhat.com/expires-on` annotation marking it as unsupported after a certain date.","effective_on": "2026-03-21T00:00:00Z","term": "buildah-remote-oci-ta","title": "Task version unsupported"}},{"msg": "The Task \"ecosystem-cert-preflight-checks\" from the build Pipeline reports a failed informative test","metadata": {"code": "test.no_failed_informative_tests","collections": ["redhat"],"depends_on": ["test.test_data_found"],"description": "Produce a warning if any informative tests have their result set to \"FAILED\". The result type is configurable by the \"failed_tests_results\" key, and the list of informative tests is configurable by the \"informative_tests\" key in the rule data.","solution": "There is a test that failed. Make sure that any task in the build pipeline with a result named 'TEST_OUTPUT' does not fail. More information about the test should be available in the logs for the build Pipeline.","term": "ecosystem-cert-preflight-checks","title": "No informative tests failed"}},{"msg": "A newer version of task \"build-image-index\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.2@sha256:05d3d8a5ded44c51b074a56a408ddf5d65c56b4c15e110abb1a99e3aff269d49\" and the latest bundle ref is \"sha256:30989fa1f475bb8f6bda811b26bd4ddf7187288ed5815ce634ba399341852c75\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "build-image-index","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"build-container\" exists. Please update before 2026-03-31T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.7@sha256:2bc9ff8a284b2d4e3069f8537186a227d74752d02306af97809afd1eae202d10\" and the latest bundle ref is \"sha256:60418fd28e3a1e49bac3455e444a324793c2fb745ff00585efb109b4340f4ab6\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"], "description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "buildah-remote-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"clair-scan\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.3@sha256:dadfea7633d82e4303ba73d5e9c7e2bc16834bde0fd7688880453b26452067eb\" and the latest bundle ref is \"sha256:b01d8e2c58eb407ac23fa07b8e44c4631f0cf7257e87507c829fa2486aff9804\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "clair-scan","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"clamav-scan\" exists. Please update before 2026-03-30T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:671bdcfa566bb3d7981b5bdee107f527f2920c6031ca8c0750cc9e8c422b84f5\" and the latest bundle ref is \"sha256:5b5b31eae9063a00b91acc049b536e548d87c730068e439eefe33ab5238ee118\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "clamav-scan","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"ecosystem-cert-preflight-checks\" exists. Please update before 2026-04-01T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:0c3f9d4707bf742a5209f2e2186211433c83d5fcc538c728e4c7df178b5eafb7\" and the latest bundle ref is \"sha256:40bc4bcc1c52c114139daee60ec2ddeb59921ecef8a68f241d5593c79b2a21d6\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "ecosystem-cert-preflight-checks","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"init\" exists. Please update before 2026-04-07T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:ebf06778aeacbbeb081f9231eafbdfdb8e380ad04e211d7ed80ae9101e37fd82\" and the latest bundle ref is \"sha256:a482890d072df3aff9cf5db0ff2b9ec04fa6bb006cfd9da9817805fdd11a73f5\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "init","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"prefetch-dependencies\" exists. Please update before 2026-04-17T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:c664a6df6514b59c3ce53570b0994b45af66ecc89ba2a8e41834eae0622addf6\" and the latest bundle ref is \"sha256:c07551efbd7fc414ae1245ddd93579b00317fee0734980f539fd8aea3cfcb945\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "prefetch-dependencies-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"push-dockerfile\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:08bba4a659ecd48f871bef00b80af58954e5a09fcbb28a1783ddd640c4f6535e\" and the latest bundle ref is \"sha256:2623be4a9bad87ade614b4b24a8f98a4e100042a845e8f162b8237168697294c\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "push-dockerfile-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-shell-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:e7a51575f9188a1461d4520da25aaa4efdd3b896c97dc750941fa22840e55c13\" and the latest bundle ref is \"sha256:f475b4b6b0c1687fa1aafa5ba38813e04f080b185af2975e12b457742d9dd857\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-shell-check-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-snyk-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:a70272ae12f6d7f0da2902158e1bcee756877aa8f71fd1a22ef9afd8b177fb41\" and the latest bundle ref is \"sha256:0c2ab8ce6d419400b63dd67d061052ac51de7b1ebe93f8ae86ed07ac638d756d\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-snyk-check-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-unicode-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.4@sha256:1818a5b3e4fa86c838ae71226a157241967d1f19c5ed377e4b2fddad7a3ceefe\" and the latest bundle ref is \"sha256:b38140b2f0b2163def80e28a792b2702245d38a5610a504f2e56c198f3b8f70b\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"], "description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-unicode-check-oci-ta","title": "Tasks using the latest versions"}}],"successes": [{"msg": "Pass","metadata": {"code": "attestation_type.deprecated_policy_attestation_format","collections": ["minimal","redhat","redhat_rpms"],"description": "The Conforma CLI now places the attestation data in a different location. This check fails if the expected new format is not found.","effective_on": "2023-08-31T00:00:00Z","title": "Deprecated policy attestation format"}},{"msg": "Pass","metadata": {"code": "attestation_type.known_attestation_type","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["attestation_type.pipelinerun_attestation_found"],"description": "Confirm the attestation found for the image has a known attestation type.","title": "Known attestation type found"}},{"msg": "Pass","metadata": {"code": "attestation_type.known_attestation_types_provided","collections": ["minimal","redhat","redhat_rpms","policy_data"],"description": "Confirm the `known_attestation_types` rule data was provided.","title": "Known attestation types provided"}},{"msg": "Pass","metadata": {"code": "attestation_type.pipelinerun_attestation_found","collections": ["minimal","redhat","redhat_rpms"],"description": "Confirm at least one PipelineRun attestation is present.","title": "PipelineRun attestation found"}},{"msg": "Pass","metadata": {"code": "base_image_registries.allowed_registries_provided","collections": ["minimal","redhat","policy_data"],"description": "Confirm the `allowed_registry_prefixes` rule data was provided, since it's required by the policy rules in this package.","title": "Allowed base image registry prefixes list was provided"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_info_found","collections": ["minimal","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the expected information was provided about which base images were used during the build process. The list of base images comes from any associated CycloneDX or SPDX SBOMs.","title": "Base images provided"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_permitted","collections": ["minimal","redhat"],"depends_on": ["base_image_registries.base_image_info_found","base_image_registries.allowed_registries_provided"],"description": "Verify that the base images used when building a container image come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of permitted registries can be customized by setting the `allowed_registry_prefixes` list in the rule data. Base images that are found in the snapshot being validated are also allowed since EC will also validate those images individually.","title": "Base image comes from permitted registry"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_permitted","collections": ["minimal","redhat"],"depends_on": ["base_image_registries.base_image_info_found","base_image_registries.allowed_registries_provided"],"description": "Verify that the base images used when building a container image come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of permitted registries can be customized by setting the `allowed_registry_prefixes` list in the rule data. Base images that are found in the snapshot being validated are also allowed since EC will also validate those images individually.","title": "Base image comes from permitted registry"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.add_capabilities_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the ADD_CAPABILITIES parameter of a builder Tasks was not used.","effective_on": "2024-08-31T00:00:00Z","title": "ADD_CAPABILITIES parameter"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.buildah_uses_local_dockerfile","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the Dockerfile used in the buildah task was not fetched from an external source.","title": "Buildah task uses a local Dockerfile"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.disallowed_platform_patterns_pattern","collections": ["redhat","policy_data"],"description": "Confirm the `disallowed_platform_patterns` rule data, if provided matches the expected format.","title": "disallowed_platform_patterns format"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.platform_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the value of the PLATFORM parameter of a builder Task is allowed by matching against a list of disallowed patterns. The list of patterns can be customized via the `disallowed_platform_patterns` rule data key. If empty, all values are allowed.","effective_on": "2024-09-01T00:00:00Z","title": "PLATFORM parameter"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.privileged_nested_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the PRIVILEGED_NESTED parameter of a builder Tasks was not set to `true`.","title": "PRIVILEGED_NESTED parameter"}},{"msg": "Pass","metadata": {"code": "builtin.attestation.signature_check","description": "The attestation signature matches available signing materials.","title": "Attestation signature check passed"}},{"msg": "Pass","metadata": {"code": "builtin.attestation.syntax_check","description": "The attestation has correct syntax.","title": "Attestation syntax check passed"}},{"msg": "Pass","metadata": {"code": "builtin.image.signature_check","description": "The image signature matches available signing materials.","title": "Image signature check passed"}},{"msg": "Pass","metadata": {"code": "cve.cve_blockers","collections": ["minimal","redhat"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that have a known fix and meet a certain security level have not been detected. If detected, this policy rule will fail. By default, only CVEs of critical and high security level cause a failure. This is configurable by the rule data key `restrict_cve_security_levels`. The available levels are critical, high, medium, low, and unknown. In addition to that leeway can be granted per severity using the `cve_leeway` rule data key containing days of allowed leeway, measured as time between found vulnerability's public disclosure date and current effective time, per severity level.","title": "Blocking CVE check"}},{"msg": "Pass","metadata": {"code": "cve.cve_warnings","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that have a known fix and meet a certain security level have not been detected. If detected, this policy rule will raise a warning. By default, the list of CVE security levels used by this policy is empty. However, this is configurable by the rule data key `warn_cve_security_levels`. The available levels are critical, high, medium, low, and unknown.","title": "Non-blocking CVE check"}},{"msg": "Pass","metadata": {"code": "cve.rule_data_provided","collections": ["minimal","redhat","redhat_rpms", "policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `restrict_cve_security_levels`,\t`warn_cve_security_levels`, `restrict_unpatched_cve_security_levels`, and `warn_unpatched_cve_security_levels`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "cve.unpatched_cve_blockers","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that do NOT have a known fix and meet a certain security level have not been detected. If detected, this policy rule will fail. By default, the list of security levels used by this policy is empty. This is configurable by the rule data key `restrict_unpatched_cve_security_levels`. The available levels are critical, high, medium, low, and unknown. In addition to that leeway can be granted per severity using the `cve_leeway` rule data key containing days of allowed leeway, measured as time between found vulnerability's public disclosure date and current effective time, per severity level.","title": "Blocking unpatched CVE check"}},{"msg": "Pass","metadata": {"code": "cve.unpatched_cve_warnings","collections": ["minimal","redhat"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that do NOT have a known fix and meet a certain security level have not been detected. If detected, this policy rule will raise a warning. By default, only CVEs of critical and high security level cause a warning. This is configurable by the rule data key `warn_unpatched_cve_security_levels`. The available levels are critical, high, medium, low, and unknown.","title": "Non-blocking unpatched CVE check"}},{"msg": "Pass","metadata": {"code": "hermetic_task.hermetic","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the task in the PipelineRun attestation was invoked with the proper parameters to make the task execution hermetic.","title": "Task called with hermetic param set"}},{"msg": "Pass","metadata": {"code": "labels.deprecated_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that have been deprecated. Use the rule data key `deprecated_labels` to set the list of labels to check.","title": "Deprecated labels"}},{"msg": "Pass","metadata": {"code": "labels.disallowed_inherited_labels","collections": ["redhat"],"description": "Check that certain labels on the image have different values than the labels from the parent image. If the label is inherited from the parent image but not redefined for the image, it will contain an incorrect value for the image. Use the rule data `disallowed_inherited_labels` key to set the list of labels to check, or the `fbc_disallowed_inherited_labels` key for fbc images.","title": "Disallowed inherited labels"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_config","collections": ["redhat"],"description": "The image config is not accessible.","title": "Inaccessible image config"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_manifest","collections": ["redhat"],"description": "The image manifest is not accessible.","title": "Inaccessible image manifest"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_parent_config","collections": ["redhat"],"description": "The parent image config is not accessible.","title": "Inaccessible parent image config"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_parent_manifest","collections": ["redhat"],"description": "The parent image manifest is not accessible.","title": "Inaccessible parent image manifest"}},{"msg": "Pass","metadata": {"code": "labels.optional_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that are recommended, but not required. Use the rule data `optional_labels` key to set the list of labels to check, or the `fbc_optional_labels` key for fbc images.","title": "Optional labels"}},{"msg": "Pass","metadata": {"code": "labels.required_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that are required. Use the rule data `required_labels` key to set the list of labels to check, or the `fbc_required_labels` key for fbc images.","title": "Required labels"}},{"msg": "Pass","metadata": {"code": "labels.rule_data_provided","collections": ["redhat","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `required_labels`,\t`fbc_required_labels`, `optional_labels`, `fbc_optional_labels`, `disallowed_inherited_labels`, `fbc_disallowed_inherited_labels`, and `deprecated_labels`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "olm.allowed_registries","collections": ["redhat"],"description": "Each image referenced by the OLM bundle should match an entry in the list of prefixes defined by the rule data key `allowed_olm_image_registry_prefixes` in your policy configuration.","effective_on": "2024-09-01T00:00:00Z","title": "Images referenced by OLM bundle are from allowed registries"}},{"msg": "Pass","metadata": {"code": "olm.allowed_registries_related","collections": ["redhat"],"description": "Each image indicated as a related image should match an entry in the list of prefixes defined by the rule data key `allowed_olm_image_registry_prefixes` in your policy configuration.","effective_on": "2025-04-15T00:00:00Z","title": "Related images references are from allowed registries"}},{"msg": "Pass","metadata": {"code": "olm.allowed_resource_kinds","collections": ["redhat"],"description": "Every manifest in an OLM bundle must be of an allowed resource kind, as defined by the rule data key `allowed_olm_resource_kinds`.","title": "OLM bundle image manifests contain only allowed resource kinds"}},{"msg": "Pass","metadata": {"code": "olm.csv_semver_format","collections": ["redhat"],"description": "Check the `spec.version` value in the ClusterServiceVersion manifest of the OLM bundle uses a properly formatted semver.","title": "ClusterServiceVersion semver format"}},{"msg": "Pass","metadata": {"code": "olm.feature_annotations_format","collections": ["redhat"],"description": "Check the feature annotations in the ClusterServiceVersion manifest of the OLM bundle. All of required feature annotations must be present and set to either the string `\"true\"` or the string `\"false\"`. The list of feature annotations can be customize via the `required_olm_features_annotations` rule data.","title": "Feature annotations have expected value"}},{"msg": "Pass","metadata": {"code": "olm.inaccessible_related_images","collections": ["redhat"],"description": "Check the input image for the presence of related images. Ensure that all images are accessible.","effective_on": "2025-03-10T00:00:00Z","title": "Unable to access related images for a component"}},{"msg": "Pass","metadata": {"code": "olm.olm_bundle_multi_arch","collections": ["redhat"],"description": "OLM bundle images should be built for a single architecture. They should not be OCI image indexes nor should they be Docker v2s2 manifest lists.","effective_on": "2025-05-01T00:00:00Z","title": "OLM bundle images are not multi-arch"}},{"msg": "Pass","metadata": {"code": "olm.required_olm_features_annotations_provided","collections": ["redhat","policy_data"],"description": "Confirm the `required_olm_features_annotations` rule data was provided, since it's required by the policy rules in this package.","title": "Required OLM feature annotations list provided"}},{"msg": "Pass","metadata": {"code": "olm.subscriptions_annotation_format","collections": ["redhat"],"description": "Check the value of the operators.openshift.io/valid-subscription annotation from the ClusterServiceVersion manifest is in the expected format, i.e. JSON encoded non-empty array of strings.", "effective_on": "2024-04-18T00:00:00Z","title": "Subscription annotation has expected value"}},{"msg": "Pass","metadata": {"code": "olm.unmapped_references","collections": ["redhat"],"description": "Check the OLM bundle image for the presence of unmapped image references. Unmapped image pull references are references to images found in link:https://osbs.readthedocs.io/en/latest/users.html#pullspec-locations[varying locations] that are either not in the RPA about to be released or not accessible already.","effective_on": "2024-08-15T00:00:00Z","title": "Unmapped images in OLM bundle"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_references","collections": ["redhat"],"description": "Check the OLM bundle image for the presence of unpinned image references. Unpinned image pull references are references to images found in link:https://osbs.readthedocs.io/en/latest/users.html#pullspec-locations[varying locations] that do not contain a digest -- uniquely identifying the version of the image being pulled.","title": "Unpinned images in OLM bundle"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_related_images","collections": ["redhat"],"description": "Check the input image for the presence of related images. Ensure all related image references include a digest.","title": "Unpinned related images for a component"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_snapshot_references","collections": ["redhat"],"description": "Check the input snapshot for the presence of unpinned image references. Unpinned image pull references are references to images that do not contain a digest -- uniquely identifying the version of the image being pulled.","effective_on": "2024-08-15T00:00:00Z","title": "Unpinned images in input snapshot"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_allowed","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type","base_image_registries.allowed_registries_provided"],"description": "Verify that the images used to run the pre-build script tasks come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of allowed registries can be customized by setting the `allowed_registry_prefixes` list in the rule data.","title": "Script runner image comes from allowed registry"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_allowed","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type","base_image_registries.allowed_registries_provided"],"description": "Verify that the images used to run the pre-build script tasks come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of allowed registries can be customized by setting the `allowed_registry_prefixes` list in the rule data.","title": "Script runner image comes from allowed registry"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_in_results","collections": ["redhat"],"description": "Verify that the image used to run the pre-build script task is listed in the task result SCRIPT_RUNNER_IMAGE_REFERENCE","title": "Script runner image is listed in the task results"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_in_sbom","collections": ["redhat"],"description": "Verify that the image used to run the pre-build script task is included in the SBOM","title": "Script runner image is included in the sbom"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.valid_pre_build_script_task_runner_image_ref","collections": ["redhat"],"description": "Verify that a valid image reference is specified as image being used to run the pre-build script task","title": "Script runner image is a valid image reference"}},{"msg": "Pass","metadata": {"code": "prefetch_dependencies.mode_not_permissive","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the prefetch-dependencies task in the PipelineRun attestation was not invoked with the \"permissive\" mode parameter, which could compromise security.","title": "Prefetch dependencies mode parameter check"}},{"msg": "Pass","metadata": {"code": "provenance_materials.git_clone_source_matches_provenance","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["provenance_materials.git_clone_task_found"],"description": "Confirm that the result of the git-clone task is included in the materials section of the SLSA provenance attestation.","title": "Git clone source matches materials provenance"}},{"msg": "Pass","metadata": {"code": "provenance_materials.git_clone_task_found","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Confirm that the attestation contains a git-clone task with `commit` and `url` task results.","title": "Git clone task found"}},{"msg": "Pass","metadata": {"code": "quay_expiration.expires_label","collections": ["redhat"],"description": "Check the image metadata for the presence of a \"quay.expires-after\" label. If it's present then produce a violation. This check is enforced only for a \"release\", \"production\", or \"staging\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Expires label"}},{"msg": "Pass","metadata": {"code": "rpm_ostree_task.builder_image_param","collections": ["redhat"],"description": "Verify the BUILDER_IMAGE parameter of the rpm-ostree Task uses an image reference that is both pinned to a digest and starts with a pre-defined list of prefixes. By default, the list of prefixes is empty allowing any pinned image reference to be used. This is customizable via the `allowed_rpm_ostree_builder_image_prefixes` rule data.","effective_on": "2024-03-20T00:00:00Z","title": "Builder image parameter"}},{"msg": "Pass","metadata": {"code": "rpm_ostree_task.rule_data","collections": ["redhat"],"description": "Verify the rule data used by this package, `allowed_rpm_ostree_builder_image_prefixes`, is in the expected format.","title": "Rule data"}},{"msg": "Pass","metadata": {"code": "rpm_packages.unique_version","collections": ["redhat"],"description": "Check if a multi-arch build has the same RPM versions installed across each different architecture. This check only applies for Image Indexes, aka multi-platform images. Use the `non_unique_rpm_names` rule data key to ignore certain RPMs.","title": "Unique Version"}},{"msg": "Pass","metadata": {"code": "rpm_repos.ids_known","collections": ["redhat","redhat_rpms"],"description": "Each RPM package listed in an SBOM must specify the repository id that it comes from, and that repository id must be present in the list of known and permitted repository ids. Currently this is rule enforced only for SBOM components created by cachi2.","effective_on": "2024-11-10T00:00:00Z","title": "All rpms have known repo ids"}},{"msg": "Pass","metadata": {"code": "rpm_repos.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "A list of known and permitted repository ids should be available in the rule data.","title": "Known repo id list provided"}},{"msg": "Pass","metadata": {"code": "rpm_signature.allowed","collections": ["redhat","redhat_rpms"],"description": "The SLSA Provenance attestation for the image is inspected to ensure RPMs have been signed by pre-defined set of signing keys. The list of signing keys can be set via the `allowed_rpm_signature_keys` rule data. Use the special value \"unsigned\" to allow unsigned RPMs.","effective_on": "2024-10-05T00:00:00Z","title": "Allowed RPM signature key" }},{"msg": "Pass","metadata": {"code": "rpm_signature.result_format","collections": ["redhat","redhat_rpms"],"description": "Confirm the format of the RPMS_DATA result is in the expected format.","effective_on": "2024-10-05T00:00:00Z","title": "Result format"}},{"msg": "Pass","metadata": {"code": "rpm_signature.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected `allowed_rpm_signature_keys` rule data key has been provided in the expected format.","effective_on": "2024-10-05T00:00:00Z","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "sbom.disallowed_packages_provided","collections": ["redhat","policy_data","redhat_rpms"],"description": "Confirm the `disallowed_packages` and `disallowed_attributes` rule data were provided, since they are required by the policy rules in this package.","title": "Disallowed packages list is provided"}},{"msg": "Pass","metadata": {"code": "sbom.found","collections": ["minimal","redhat"],"description": "Confirm an SBOM attestation exists.","title": "Found"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed","collections": ["redhat","redhat_rpms"],"description": "Confirm the CycloneDX SBOM contains only allowed packages. By default all packages are allowed. Use the \"disallowed_packages\" rule data key to provide a list of disallowed packages.","title": "Allowed"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the CycloneDX SBOM contains only packages with explicitly allowed external references. By default all external references are allowed unless the \"allowed_external_references\" rule data key provides a list of type-pattern pairs that forbid the use of any other external reference of the given type where the reference url matches the given pattern.","title": "Allowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed_package_sources","collections": ["redhat","redhat_rpms","policy_data"],"description": "For each of the components fetched by Hermeto which define externalReferences of type distribution, verify they are allowed based on the allowed_package_sources rule data key. By default, allowed_package_sources is empty, which means no components with such references are allowed.","effective_on": "2024-12-15T00:00:00Z","title": "Allowed package sources"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.disallowed_package_attributes","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the CycloneDX SBOM contains only packages without disallowed attributes. By default all attributes are allowed. Use the \"disallowed_attributes\" rule data key to provide a list of key-value pairs that forbid the use of an attribute set to the given value.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package attributes"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.disallowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the CycloneDX SBOM contains only packages without disallowed external references. By default all external references are allowed. Use the \"disallowed_external_references\" rule data key to provide a list of type-pattern pairs that forbid the use of an external reference of the given type where the reference url matches the given pattern.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.valid","collections": ["minimal","redhat","redhat_rpms"],"description": "Check the CycloneDX SBOM has the expected format. It verifies the CycloneDX SBOM matches the 1.5 version of the schema.","title": "Valid"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed","collections": ["redhat","redhat_rpms"],"description": "Confirm the SPDX SBOM contains only allowed packages. By default all packages are allowed. Use the \"disallowed_packages\" rule data key to provide a list of disallowed packages.","title": "Allowed"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the SPDX SBOM contains only packages with explicitly allowed external references. By default all external references are allowed unless the \"allowed_external_references\" rule data key provides a list of type-pattern pairs that forbid the use of any other external reference of the given type where the reference url matches the given pattern.","title": "Allowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed_package_sources","collections": ["redhat","redhat_rpms","policy_data"],"description": "For each of the packages fetched by Hermeto which define externalReferences, verify they are allowed based on the allowed_package_sources rule data key. By default, allowed_package_sources is empty, which means no components with such references are allowed.","effective_on": "2025-02-17T00:00:00Z","title": "Allowed package sources"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.disallowed_package_attributes","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the SPDX SBOM contains only packages without disallowed attributes. By default all attributes are allowed. Use the \"disallowed_attributes\" rule data key to provide a list of key-value pairs that forbid the use of an attribute set to the given value.","effective_on": "2025-02-04T00:00:00Z","title": "Disallowed package attributes"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.disallowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the SPDX SBOM contains only packages without disallowed external references. By default all external references are allowed. Use the \"disallowed_external_references\" rule data key to provide a list of type-pattern pairs that forbid the use of an external reference of the given type where the reference url matches the given pattern.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.valid","collections": ["minimal","redhat","redhat_rpms"],"description": "Check the SPDX SBOM has the expected format. It verifies the SPDX SBOM matches the 2.3 version of the schema.","title": "Valid"}},{"msg": "Pass","metadata": {"code": "schedule.date_restriction","collections": ["redhat"],"description": "Check if the current date is not allowed based on the rule data value from the key `disallowed_dates`. By default, the list is empty in which case *any* day is allowed. This check is enforced only for a \"release\" or \"production\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Date Restriction"}},{"msg": "Pass","metadata": {"code": "schedule.rule_data_provided","collections": ["redhat","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `disallowed_weekdays` and `disallowed_dates`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "schedule.weekday_restriction","collections": ["redhat"],"description": "Check if the current weekday is allowed based on the rule data value from the key `disallowed_weekdays`. By default, the list is empty in which case *any* weekday is allowed. This check is enforced only for a \"release\" or \"production\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Weekday Restriction"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.allowed_builder_ids_provided","collections": ["slsa3","redhat","redhat_rpms","policy_data"], "description": "Confirm the `allowed_builder_ids` rule data was provided, since it is required by the policy rules in this package.","title": "Allowed builder IDs provided"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.slsa_builder_id_accepted","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the attestation attribute predicate.builder.id is set to one of the values in the `allowed_builder_ids` rule data, e.g. \"https://tekton.dev/chains/v2\".","title": "SLSA Builder ID is known and accepted"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.slsa_builder_id_found","collections": ["slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the attestation attribute predicate.builder.id is set.","title": "SLSA Builder ID found"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.build_script_used","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the predicate.buildConfig.tasks.steps attribute for the task responsible for building and pushing the image is not empty.","title": "Build task contains steps"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.build_task_image_results_found","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Confirm that a build task exists and it has the expected IMAGE_DIGEST and IMAGE_URL task results.","title": "Build task set image digest and url task results"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.image_built_by_trusted_task","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the digest of the image being validated is reported by a trusted Task in its IMAGE_DIGEST result.","title": "Image built by trusted Task"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.subject_build_task_matches","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the subject of the attestations matches the IMAGE_DIGEST and IMAGE_URL values from the build task.","title": "Provenance subject matches build task image result"}},{"msg": "Pass","metadata": {"code": "slsa_provenance_available.allowed_predicate_types_provided","collections": ["minimal","slsa3","redhat","redhat_rpms","policy_data"],"description": "Confirm the `allowed_predicate_types` rule data was provided, since it is required by the policy rules in this package.","title": "Allowed predicate types provided"}},{"msg": "Pass","metadata": {"code": "slsa_provenance_available.attestation_predicate_type_accepted","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the predicateType field of the attestation indicates the in-toto SLSA Provenance format was used to attest the PipelineRun.","title": "Expected attestation predicate type found"}},{"msg": "Pass","metadata": {"code": "slsa_source_correlated.attested_source_code_reference","collections": ["minimal","slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Attestation contains source reference.","title": "Source reference"}},{"msg": "Pass","metadata": {"code": "slsa_source_correlated.expected_source_code_reference","collections": ["minimal","slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the provided source code reference is the one being attested.","title": "Expected source code reference"}},{"msg": "Pass","metadata": {"code": "slsa_source_correlated.rule_data_provided","collections": ["minimal","slsa3","redhat","redhat_rpms","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_vcs` and `supported_digests`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_format_okay","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Confirm at least one entry in the predicate.materials array of the attestation contains the expected attributes: uri and digest.sha1.","title": "Materials have uri and digest"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_include_git_sha","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure that each entry in the predicate.materials array with a SHA-1 digest includes a valid Git commit SHA.","title": "Materials include git commit shas"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_uri_is_git_repo","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure each entry in the predicate.materials array with a SHA-1 digest includes a valid Git URI.","title": "Material uri is a git repo"}},{"msg": "Pass","metadata": {"code": "source_image.exists","collections": ["redhat"],"description": "Verify the source container image exists.","effective_on": "2024-06-05T00:00:00Z","title": "Exists"}},{"msg": "Pass","metadata": {"code": "source_image.signed","collections": ["redhat"],"depends_on": ["source_image.exists"],"description": "Verify the source container image is signed.","effective_on": "2024-05-04T00:00:00Z","title": "Signed"}},{"msg": "Pass","metadata": {"code": "tasks.data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected data keys have been provided in the expected format. The keys are `pipeline-required-tasks` and `required-tasks`.","title": "Data provided"}},{"msg": "Pass","metadata": {"code": "tasks.future_required_tasks_found","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Produce a warning when a task that will be required in the future was not included in the PipelineRun attestation.","title": "Future required tasks were found"}},{"msg": "Pass","metadata": {"code": "tasks.pinned_task_refs","collections": ["redhat"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that all Tasks in the SLSA Provenance attestation use an immuntable reference to the Task definition.","title": "Pinned Task references"}},{"msg": "Pass","metadata": {"code": "tasks.pipeline_has_tasks","collections": ["minimal","redhat","redhat_rpms","slsa3"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure that at least one Task is present in the PipelineRun attestation.","title": "Pipeline run includes at least one task"}},{"msg": "Pass","metadata": {"code": "tasks.pipeline_required_tasks_list_provided","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Produce a warning if the required tasks list rule data was not provided.","title": "Required tasks list for pipeline was provided"}},{"msg": "Pass","metadata": {"code": "tasks.required_tasks_found","collections": ["redhat"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that the set of required tasks are included in the PipelineRun attestation.","title": "All required tasks were included in the pipeline"}},{"msg": "Pass","metadata": {"code": "tasks.required_tasks_list_provided","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Confirm the `required-tasks` rule data was provided, since it's required by the policy rules in this package.","title": "Required tasks list was provided"}},{"msg": "Pass","metadata": {"code": "tasks.required_untrusted_task_found","collections": ["redhat","redhat_rpms"],"depends_on": [ "tasks.pipeline_has_tasks"],"description": "Ensure that the all required tasks are resolved from trusted tasks.","title": "All required tasks are from trusted tasks"}},{"msg": "Pass","metadata": {"code": "tasks.successful_pipeline_tasks","collections": ["minimal","redhat","redhat_rpms","slsa3"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that all of the Tasks in the Pipeline completed successfully. Note that skipped Tasks are not taken into account and do not influence the outcome.","title": "Successful pipeline tasks"}},{"msg": "Pass","metadata": {"code": "test.no_erred_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any tests have their result set to \"ERROR\". The result type is configurable by the \"erred_tests_results\" key in the rule data.","title": "No tests erred"}},{"msg": "Pass","metadata": {"code": "test.no_failed_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any non-informative tests have their result set to \"FAILED\". The result type is configurable by the \"failed_tests_results\" key, and the list of informative tests is configurable by the \"informative_tests\" key in the rule data.","title": "No tests failed"}},{"msg": "Pass","metadata": {"code": "test.no_skipped_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any tests have their result set to \"SKIPPED\". A skipped result means a pre-requirement for executing the test was not met, e.g. a license key for executing a scanner was not provided. The result type is configurable by the \"skipped_tests_results\" key in the rule data.","effective_on": "2023-12-08T00:00:00Z","title": "No tests were skipped"}},{"msg": "Pass","metadata": {"code": "test.no_test_warnings","collections": ["redhat"],"depends_on": ["test.test_data_found"],"description": "Produce a warning if any tests have their result set to \"WARNING\". The result type is configurable by the \"warned_tests_results\" key in the rule data.","title": "No tests produced warnings"}},{"msg": "Pass","metadata": {"code": "test.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_tests_results`, `failed_tests_results`, `informative_tests`, `erred_tests_results`, `skipped_tests_results`, and `warned_tests_results`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "test.test_all_images","collections": ["redhat","redhat_rpms"],"description": "Ensure that task producing the IMAGES_PROCESSED result contains the digests of the built image.","effective_on": "2024-05-29T00:00:00Z","title": "Image digest is present in IMAGES_PROCESSED result"}},{"msg": "Pass","metadata": {"code": "test.test_data_found","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure that at least one of the tasks in the pipeline includes a TEST_OUTPUT task result, which is where Conforma expects to find test result data.","title": "Test data found in task results"}},{"msg": "Pass","metadata": {"code": "test.test_results_found","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Each test result is expected to have a `results` key. Verify that the `results` key is present in all of the TEST_OUTPUT task results.","title": "Test data includes results key"}},{"msg": "Pass","metadata": {"code": "test.test_results_known","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Ensure all test data result values are in the set of known/supported result values.","title": "No unsupported test result values found"}},{"msg": "Pass","metadata": {"code": "trusted_task.data","collections": ["redhat","redhat_rpms"],"description": "Confirm the `trusted_tasks` rule data was provided, since it's required by the policy rules in this package.","effective_on": "2024-05-07T00:00:00Z","title": "Task tracking data was provided"}},{"msg": "Pass","metadata": {"code": "trusted_task.data_format","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected `trusted_tasks` data keys have been provided in the expected format.","title": "Data format"}},{"msg": "Pass","metadata": {"code": "trusted_task.future_deny_rule","collections": ["redhat"],"description": "Warn when a task matches a deny rule that has an effective_on date in the future. This provides advance notice that a task will become untrusted when the deny rule takes effect.","title": "Future deny rule will apply"}},{"msg": "Pass","metadata": {"code": "trusted_task.pinned","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.","effective_on": "2024-05-07T00:00:00Z","title": "Task references are pinned"}},{"msg": "Pass","metadata": {"code": "trusted_task.tagged","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks defined with the bundle format contain a tag reference.","effective_on": "2024-05-07T00:00:00Z","title": "Task references are tagged"}},{"msg": "Pass","metadata": {"code": "trusted_task.trusted","collections": ["redhat"],"description": "Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted.","effective_on": "2024-05-07T00:00:00Z","title": "Tasks are trusted"}},{"msg": "Pass","metadata": {"code": "trusted_task.trusted_parameters","collections": ["redhat"],"description": "Confirm certain parameters provided to each builder Task have come from trusted Tasks. Trust can be defined using pattern-based rules (trusted_task_rules) or an explicit allow list with expiry dates (trusted_tasks).","effective_on": "2021-07-04T00:00:00Z","title": "Trusted parameters"}},{"msg": "Pass","metadata": {"code": "trusted_task.valid_trusted_artifact_inputs","collections": ["redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "All input trusted artifacts must be produced on the pipeline. If they are not the artifact could have been injected by a rogue task.","title": "Trusted Artifact produced in pipeline"}},{"msg": "Pass","metadata": {"code": "volatile_config.expired_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has passed its effectiveUntil date. Expired rules are no longer active and should be removed from the policy configuration.","title": "Volatile rule has expired"}},{"msg": "Pass","metadata": {"code": "volatile_config.expiring_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule will expire within the configured warning threshold (default 30 days). This provides advance notice to extend or replace the rule before it expires.","title": "Volatile rule expiring soon"}},{"msg": "Pass","metadata": {"code": "volatile_config.invalid_config","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has invalid date values that cannot be parsed. This indicates a configuration error that should be corrected.","title": "Volatile rule has invalid configuration"}},{ "msg": "Pass","metadata": {"code": "volatile_config.no_expiration","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has no effectiveUntil date set. Rules without expiration dates may accumulate over time and should be periodically reviewed.","title": "Volatile rule has no expiration"}},{"msg": "Pass","metadata": {"code": "volatile_config.pending_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has an effectiveOn date in the future, indicating it will become active at that time.","title": "Volatile rule pending activation"}}],"success": true,"signatures": [{"keyid": "","sig": "MEUCIBZt/mp+hsF2SNSsnESWCHdX95Xd9YyI2B8HjYrvtLAUAiEAzL8eJuJOtkyrreoSErhVwOFbLB3RF2Jf0KUy0nNEIC4="}],"attestations": [{"type": "https://in-toto.io/Statement/v0.1","predicateType": "https://slsa.dev/provenance/v0.2","predicateBuildType": "tekton.dev/v1/PipelineRun","signatures": [{"keyid": "SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY","sig": "MEQCIFxdKWG2j4uBCJXGN6bl1oiVOiO0y0jpJovHJrX6jCZwAiBKKMiztVMLSSNpFORFTIY7r62R24QD4Grx0snRjSpxqQ=="}]}]},{"name": "-sha256:1cbb25f2f0076256d5de77c103937b4de9c5e19e2724ebfdba5016b2eb0664d7-arm64","containerImage": "quay.io/konflux-ci/ec-golden-image@sha256:1cbb25f2f0076256d5de77c103937b4de9c5e19e2724ebfdba5016b2eb0664d7","source": {},"warnings": [{"msg": "Task \"buildah-remote-oci-ta\" is used by pipeline task \"build-container\" is or will be unsupported as of 2026-03-21T00:00:00Z. Upgrade to a newer version of the Task.","metadata": {"code": "tasks.unsupported","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "The Tekton Task used is or will be unsupported. The Task is annotated with `build.appstudio.redhat.com/expires-on` annotation marking it as unsupported after a certain date.","effective_on": "2026-03-21T00:00:00Z","term": "buildah-remote-oci-ta","title": "Task version unsupported"}},{"msg": "The Task \"ecosystem-cert-preflight-checks\" from the build Pipeline reports a failed informative test","metadata": {"code": "test.no_failed_informative_tests","collections": ["redhat"],"depends_on": ["test.test_data_found"],"description": "Produce a warning if any informative tests have their result set to \"FAILED\". The result type is configurable by the \"failed_tests_results\" key, and the list of informative tests is configurable by the \"informative_tests\" key in the rule data.","solution": "There is a test that failed. Make sure that any task in the build pipeline with a result named 'TEST_OUTPUT' does not fail. More information about the test should be available in the logs for the build Pipeline.","term": "ecosystem-cert-preflight-checks","title": "No informative tests failed"}},{"msg": "A newer version of task \"build-image-index\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.2@sha256:05d3d8a5ded44c51b074a56a408ddf5d65c56b4c15e110abb1a99e3aff269d49\" and the latest bundle ref is \"sha256:30989fa1f475bb8f6bda811b26bd4ddf7187288ed5815ce634ba399341852c75\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "build-image-index","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"build-container\" exists. Please update before 2026-03-31T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.7@sha256:2bc9ff8a284b2d4e3069f8537186a227d74752d02306af97809afd1eae202d10\" and the latest bundle ref is \"sha256:60418fd28e3a1e49bac3455e444a324793c2fb745ff00585efb109b4340f4ab6\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "buildah-remote-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"clair-scan\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.3@sha256:dadfea7633d82e4303ba73d5e9c7e2bc16834bde0fd7688880453b26452067eb\" and the latest bundle ref is \"sha256:b01d8e2c58eb407ac23fa07b8e44c4631f0cf7257e87507c829fa2486aff9804\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "clair-scan","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"clamav-scan\" exists. Please update before 2026-03-30T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:671bdcfa566bb3d7981b5bdee107f527f2920c6031ca8c0750cc9e8c422b84f5\" and the latest bundle ref is \"sha256:5b5b31eae9063a00b91acc049b536e548d87c730068e439eefe33ab5238ee118\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "clamav-scan","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"ecosystem-cert-preflight-checks\" exists. Please update before 2026-04-01T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:0c3f9d4707bf742a5209f2e2186211433c83d5fcc538c728e4c7df178b5eafb7\" and the latest bundle ref is \"sha256:40bc4bcc1c52c114139daee60ec2ddeb59921ecef8a68f241d5593c79b2a21d6\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "ecosystem-cert-preflight-checks","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"init\" exists. Please update before 2026-04-07T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:ebf06778aeacbbeb081f9231eafbdfdb8e380ad04e211d7ed80ae9101e37fd82\" and the latest bundle ref is \"sha256:a482890d072df3aff9cf5db0ff2b9ec04fa6bb006cfd9da9817805fdd11a73f5\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.", "solution": "Update the Task reference to a newer version.","term": "init","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"prefetch-dependencies\" exists. Please update before 2026-04-17T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:c664a6df6514b59c3ce53570b0994b45af66ecc89ba2a8e41834eae0622addf6\" and the latest bundle ref is \"sha256:c07551efbd7fc414ae1245ddd93579b00317fee0734980f539fd8aea3cfcb945\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "prefetch-dependencies-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"push-dockerfile\" exists. Please update before 2026-04-05T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:08bba4a659ecd48f871bef00b80af58954e5a09fcbb28a1783ddd640c4f6535e\" and the latest bundle ref is \"sha256:2623be4a9bad87ade614b4b24a8f98a4e100042a845e8f162b8237168697294c\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "push-dockerfile-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-shell-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:e7a51575f9188a1461d4520da25aaa4efdd3b896c97dc750941fa22840e55c13\" and the latest bundle ref is \"sha256:f475b4b6b0c1687fa1aafa5ba38813e04f080b185af2975e12b457742d9dd857\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-shell-check-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-snyk-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:a70272ae12f6d7f0da2902158e1bcee756877aa8f71fd1a22ef9afd8b177fb41\" and the latest bundle ref is \"sha256:0c2ab8ce6d419400b63dd67d061052ac51de7b1ebe93f8ae86ed07ac638d756d\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-snyk-check-oci-ta","title": "Tasks using the latest versions"}},{"msg": "A newer version of task \"sast-unicode-check\" exists. Please update before 2026-04-03T00:00:00Z. The current bundle is \"oci://quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.4@sha256:1818a5b3e4fa86c838ae71226a157241967d1f19c5ed377e4b2fddad7a3ceefe\" and the latest bundle ref is \"sha256:b38140b2f0b2163def80e28a792b2702245d38a5610a504f2e56c198f3b8f70b\"","metadata": {"code": "trusted_task.current","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use the latest known Task reference. When warnings will be reported can be configured using the `task_expiry_warning_days` rule data setting. It holds the number of days before the task is to expire within which the warnings will be reported.","solution": "Update the Task reference to a newer version.","term": "sast-unicode-check-oci-ta","title": "Tasks using the latest versions"}}],"successes": [{"msg": "Pass","metadata": {"code": "attestation_type.deprecated_policy_attestation_format","collections": ["minimal","redhat","redhat_rpms"],"description": "The Conforma CLI now places the attestation data in a different location. This check fails if the expected new format is not found.","effective_on": "2023-08-31T00:00:00Z","title": "Deprecated policy attestation format"}},{"msg": "Pass","metadata": {"code": "attestation_type.known_attestation_type","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["attestation_type.pipelinerun_attestation_found"],"description": "Confirm the attestation found for the image has a known attestation type.","title": "Known attestation type found"}},{"msg": "Pass","metadata": {"code": "attestation_type.known_attestation_types_provided","collections": ["minimal","redhat","redhat_rpms","policy_data"],"description": "Confirm the `known_attestation_types` rule data was provided.","title": "Known attestation types provided"}},{"msg": "Pass","metadata": {"code": "attestation_type.pipelinerun_attestation_found","collections": ["minimal","redhat","redhat_rpms"],"description": "Confirm at least one PipelineRun attestation is present.","title": "PipelineRun attestation found"}},{"msg": "Pass","metadata": {"code": "base_image_registries.allowed_registries_provided","collections": ["minimal","redhat","policy_data"],"description": "Confirm the `allowed_registry_prefixes` rule data was provided, since it's required by the policy rules in this package.","title": "Allowed base image registry prefixes list was provided"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_info_found","collections": ["minimal","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the expected information was provided about which base images were used during the build process. The list of base images comes from any associated CycloneDX or SPDX SBOMs.","title": "Base images provided"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_permitted","collections": ["minimal","redhat"],"depends_on": ["base_image_registries.base_image_info_found","base_image_registries.allowed_registries_provided"],"description": "Verify that the base images used when building a container image come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of permitted registries can be customized by setting the `allowed_registry_prefixes` list in the rule data. Base images that are found in the snapshot being validated are also allowed since EC will also validate those images individually.","title": "Base image comes from permitted registry"}},{"msg": "Pass","metadata": {"code": "base_image_registries.base_image_permitted","collections": ["minimal","redhat"],"depends_on": ["base_image_registries.base_image_info_found","base_image_registries.allowed_registries_provided"], "description": "Verify that the base images used when building a container image come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of permitted registries can be customized by setting the `allowed_registry_prefixes` list in the rule data. Base images that are found in the snapshot being validated are also allowed since EC will also validate those images individually.","title": "Base image comes from permitted registry"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.add_capabilities_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the ADD_CAPABILITIES parameter of a builder Tasks was not used.","effective_on": "2024-08-31T00:00:00Z","title": "ADD_CAPABILITIES parameter"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.buildah_uses_local_dockerfile","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the Dockerfile used in the buildah task was not fetched from an external source.","title": "Buildah task uses a local Dockerfile"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.disallowed_platform_patterns_pattern","collections": ["redhat","policy_data"],"description": "Confirm the `disallowed_platform_patterns` rule data, if provided matches the expected format.","title": "disallowed_platform_patterns format"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.platform_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the value of the PLATFORM parameter of a builder Task is allowed by matching against a list of disallowed patterns. The list of patterns can be customized via the `disallowed_platform_patterns` rule data key. If empty, all values are allowed.","effective_on": "2024-09-01T00:00:00Z","title": "PLATFORM parameter"}},{"msg": "Pass","metadata": {"code": "buildah_build_task.privileged_nested_param","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the PRIVILEGED_NESTED parameter of a builder Tasks was not set to `true`.","title": "PRIVILEGED_NESTED parameter"}},{"msg": "Pass","metadata": {"code": "builtin.attestation.signature_check","description": "The attestation signature matches available signing materials.","title": "Attestation signature check passed"}},{"msg": "Pass","metadata": {"code": "builtin.attestation.syntax_check","description": "The attestation has correct syntax.","title": "Attestation syntax check passed"}},{"msg": "Pass","metadata": {"code": "builtin.image.signature_check","description": "The image signature matches available signing materials.","title": "Image signature check passed"}},{"msg": "Pass","metadata": {"code": "cve.cve_blockers","collections": ["minimal","redhat"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that have a known fix and meet a certain security level have not been detected. If detected, this policy rule will fail. By default, only CVEs of critical and high security level cause a failure. This is configurable by the rule data key `restrict_cve_security_levels`. The available levels are critical, high, medium, low, and unknown. In addition to that leeway can be granted per severity using the `cve_leeway` rule data key containing days of allowed leeway, measured as time between found vulnerability's public disclosure date and current effective time, per severity level.","title": "Blocking CVE check"}},{"msg": "Pass","metadata": {"code": "cve.cve_warnings","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that have a known fix and meet a certain security level have not been detected. If detected, this policy rule will raise a warning. By default, the list of CVE security levels used by this policy is empty. However, this is configurable by the rule data key `warn_cve_security_levels`. The available levels are critical, high, medium, low, and unknown.","title": "Non-blocking CVE check"}},{"msg": "Pass","metadata": {"code": "cve.rule_data_provided","collections": ["minimal","redhat","redhat_rpms","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `restrict_cve_security_levels`,\t`warn_cve_security_levels`, `restrict_unpatched_cve_security_levels`, and `warn_unpatched_cve_security_levels`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "cve.unpatched_cve_blockers","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that do NOT have a known fix and meet a certain security level have not been detected. If detected, this policy rule will fail. By default, the list of security levels used by this policy is empty. This is configurable by the rule data key `restrict_unpatched_cve_security_levels`. The available levels are critical, high, medium, low, and unknown. In addition to that leeway can be granted per severity using the `cve_leeway` rule data key containing days of allowed leeway, measured as time between found vulnerability's public disclosure date and current effective time, per severity level.","title": "Blocking unpatched CVE check"}},{"msg": "Pass","metadata": {"code": "cve.unpatched_cve_warnings","collections": ["minimal","redhat"],"depends_on": ["cve.cve_results_found"],"description": "The SLSA Provenance attestation for the image is inspected to ensure CVEs that do NOT have a known fix and meet a certain security level have not been detected. If detected, this policy rule will raise a warning. By default, only CVEs of critical and high security level cause a warning. This is configurable by the rule data key `warn_unpatched_cve_security_levels`. The available levels are critical, high, medium, low, and unknown.","title": "Non-blocking unpatched CVE check"}},{"msg": "Pass","metadata": {"code": "hermetic_task.hermetic","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the task in the PipelineRun attestation was invoked with the proper parameters to make the task execution hermetic.","title": "Task called with hermetic param set"}},{"msg": "Pass","metadata": {"code": "labels.deprecated_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that have been deprecated. Use the rule data key `deprecated_labels` to set the list of labels to check.","title": "Deprecated labels"}},{"msg": "Pass","metadata": {"code": "labels.disallowed_inherited_labels","collections": ["redhat"],"description": "Check that certain labels on the image have different values than the labels from the parent image. If the label is inherited from the parent image but not redefined for the image, it will contain an incorrect value for the image. Use the rule data `disallowed_inherited_labels` key to set the list of labels to check, or the `fbc_disallowed_inherited_labels` key for fbc images.","title": "Disallowed inherited labels"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_config","collections": ["redhat"],"description": "The image config is not accessible.","title": "Inaccessible image config"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_manifest","collections": ["redhat"],"description": "The image manifest is not accessible.","title": "Inaccessible image manifest"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_parent_config","collections": ["redhat"], "description": "The parent image config is not accessible.","title": "Inaccessible parent image config"}},{"msg": "Pass","metadata": {"code": "labels.inaccessible_parent_manifest","collections": ["redhat"],"description": "The parent image manifest is not accessible.","title": "Inaccessible parent image manifest"}},{"msg": "Pass","metadata": {"code": "labels.optional_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that are recommended, but not required. Use the rule data `optional_labels` key to set the list of labels to check, or the `fbc_optional_labels` key for fbc images.","title": "Optional labels"}},{"msg": "Pass","metadata": {"code": "labels.required_labels","collections": ["redhat"],"description": "Check the image for the presence of labels that are required. Use the rule data `required_labels` key to set the list of labels to check, or the `fbc_required_labels` key for fbc images.","title": "Required labels"}},{"msg": "Pass","metadata": {"code": "labels.rule_data_provided","collections": ["redhat","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `required_labels`,\t`fbc_required_labels`, `optional_labels`, `fbc_optional_labels`, `disallowed_inherited_labels`, `fbc_disallowed_inherited_labels`, and `deprecated_labels`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "olm.allowed_registries","collections": ["redhat"],"description": "Each image referenced by the OLM bundle should match an entry in the list of prefixes defined by the rule data key `allowed_olm_image_registry_prefixes` in your policy configuration.","effective_on": "2024-09-01T00:00:00Z","title": "Images referenced by OLM bundle are from allowed registries"}},{"msg": "Pass","metadata": {"code": "olm.allowed_registries_related","collections": ["redhat"],"description": "Each image indicated as a related image should match an entry in the list of prefixes defined by the rule data key `allowed_olm_image_registry_prefixes` in your policy configuration.","effective_on": "2025-04-15T00:00:00Z","title": "Related images references are from allowed registries"}},{"msg": "Pass","metadata": {"code": "olm.allowed_resource_kinds","collections": ["redhat"],"description": "Every manifest in an OLM bundle must be of an allowed resource kind, as defined by the rule data key `allowed_olm_resource_kinds`.","title": "OLM bundle image manifests contain only allowed resource kinds"}},{"msg": "Pass","metadata": {"code": "olm.csv_semver_format","collections": ["redhat"],"description": "Check the `spec.version` value in the ClusterServiceVersion manifest of the OLM bundle uses a properly formatted semver.","title": "ClusterServiceVersion semver format"}},{"msg": "Pass","metadata": {"code": "olm.feature_annotations_format","collections": ["redhat"],"description": "Check the feature annotations in the ClusterServiceVersion manifest of the OLM bundle. All of required feature annotations must be present and set to either the string `\"true\"` or the string `\"false\"`. The list of feature annotations can be customize via the `required_olm_features_annotations` rule data.","title": "Feature annotations have expected value"}},{"msg": "Pass","metadata": {"code": "olm.inaccessible_related_images","collections": ["redhat"],"description": "Check the input image for the presence of related images. Ensure that all images are accessible.","effective_on": "2025-03-10T00:00:00Z","title": "Unable to access related images for a component"}},{"msg": "Pass","metadata": {"code": "olm.olm_bundle_multi_arch","collections": ["redhat"],"description": "OLM bundle images should be built for a single architecture. They should not be OCI image indexes nor should they be Docker v2s2 manifest lists.","effective_on": "2025-05-01T00:00:00Z","title": "OLM bundle images are not multi-arch"}},{"msg": "Pass","metadata": {"code": "olm.required_olm_features_annotations_provided","collections": ["redhat","policy_data"],"description": "Confirm the `required_olm_features_annotations` rule data was provided, since it's required by the policy rules in this package.","title": "Required OLM feature annotations list provided"}},{"msg": "Pass","metadata": {"code": "olm.subscriptions_annotation_format","collections": ["redhat"],"description": "Check the value of the operators.openshift.io/valid-subscription annotation from the ClusterServiceVersion manifest is in the expected format, i.e. JSON encoded non-empty array of strings.","effective_on": "2024-04-18T00:00:00Z","title": "Subscription annotation has expected value"}},{"msg": "Pass","metadata": {"code": "olm.unmapped_references","collections": ["redhat"],"description": "Check the OLM bundle image for the presence of unmapped image references. Unmapped image pull references are references to images found in link:https://osbs.readthedocs.io/en/latest/users.html#pullspec-locations[varying locations] that are either not in the RPA about to be released or not accessible already.","effective_on": "2024-08-15T00:00:00Z","title": "Unmapped images in OLM bundle"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_references","collections": ["redhat"],"description": "Check the OLM bundle image for the presence of unpinned image references. Unpinned image pull references are references to images found in link:https://osbs.readthedocs.io/en/latest/users.html#pullspec-locations[varying locations] that do not contain a digest -- uniquely identifying the version of the image being pulled.","title": "Unpinned images in OLM bundle"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_related_images","collections": ["redhat"],"description": "Check the input image for the presence of related images. Ensure all related image references include a digest.","title": "Unpinned related images for a component"}},{"msg": "Pass","metadata": {"code": "olm.unpinned_snapshot_references","collections": ["redhat"],"description": "Check the input snapshot for the presence of unpinned image references. Unpinned image pull references are references to images that do not contain a digest -- uniquely identifying the version of the image being pulled.","effective_on": "2024-08-15T00:00:00Z","title": "Unpinned images in input snapshot"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_allowed","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type","base_image_registries.allowed_registries_provided"],"description": "Verify that the images used to run the pre-build script tasks come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of allowed registries can be customized by setting the `allowed_registry_prefixes` list in the rule data.","title": "Script runner image comes from allowed registry"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_allowed","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type","base_image_registries.allowed_registries_provided"],"description": "Verify that the images used to run the pre-build script tasks come from a known set of trusted registries to reduce potential supply chain attacks. By default this policy defines trusted registries as registries that are fully maintained by Red Hat and only contain content produced by Red Hat. The list of allowed registries can be customized by setting the `allowed_registry_prefixes` list in the rule data.","title": "Script runner image comes from allowed registry"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_in_results","collections": ["redhat"], "description": "Verify that the image used to run the pre-build script task is listed in the task result SCRIPT_RUNNER_IMAGE_REFERENCE","title": "Script runner image is listed in the task results"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.pre_build_script_task_runner_image_in_sbom","collections": ["redhat"],"description": "Verify that the image used to run the pre-build script task is included in the SBOM","title": "Script runner image is included in the sbom"}},{"msg": "Pass","metadata": {"code": "pre_build_script_task.valid_pre_build_script_task_runner_image_ref","collections": ["redhat"],"description": "Verify that a valid image reference is specified as image being used to run the pre-build script task","title": "Script runner image is a valid image reference"}},{"msg": "Pass","metadata": {"code": "prefetch_dependencies.mode_not_permissive","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the prefetch-dependencies task in the PipelineRun attestation was not invoked with the \"permissive\" mode parameter, which could compromise security.","title": "Prefetch dependencies mode parameter check"}},{"msg": "Pass","metadata": {"code": "provenance_materials.git_clone_source_matches_provenance","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["provenance_materials.git_clone_task_found"],"description": "Confirm that the result of the git-clone task is included in the materials section of the SLSA provenance attestation.","title": "Git clone source matches materials provenance"}},{"msg": "Pass","metadata": {"code": "provenance_materials.git_clone_task_found","collections": ["minimal","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Confirm that the attestation contains a git-clone task with `commit` and `url` task results.","title": "Git clone task found"}},{"msg": "Pass","metadata": {"code": "quay_expiration.expires_label","collections": ["redhat"],"description": "Check the image metadata for the presence of a \"quay.expires-after\" label. If it's present then produce a violation. This check is enforced only for a \"release\", \"production\", or \"staging\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Expires label"}},{"msg": "Pass","metadata": {"code": "rpm_ostree_task.builder_image_param","collections": ["redhat"],"description": "Verify the BUILDER_IMAGE parameter of the rpm-ostree Task uses an image reference that is both pinned to a digest and starts with a pre-defined list of prefixes. By default, the list of prefixes is empty allowing any pinned image reference to be used. This is customizable via the `allowed_rpm_ostree_builder_image_prefixes` rule data.","effective_on": "2024-03-20T00:00:00Z","title": "Builder image parameter"}},{"msg": "Pass","metadata": {"code": "rpm_ostree_task.rule_data","collections": ["redhat"],"description": "Verify the rule data used by this package, `allowed_rpm_ostree_builder_image_prefixes`, is in the expected format.","title": "Rule data"}},{"msg": "Pass","metadata": {"code": "rpm_packages.unique_version","collections": ["redhat"],"description": "Check if a multi-arch build has the same RPM versions installed across each different architecture. This check only applies for Image Indexes, aka multi-platform images. Use the `non_unique_rpm_names` rule data key to ignore certain RPMs.","title": "Unique Version"}},{"msg": "Pass","metadata": {"code": "rpm_repos.ids_known","collections": ["redhat","redhat_rpms"],"description": "Each RPM package listed in an SBOM must specify the repository id that it comes from, and that repository id must be present in the list of known and permitted repository ids. Currently this is rule enforced only for SBOM components created by cachi2.","effective_on": "2024-11-10T00:00:00Z","title": "All rpms have known repo ids"}},{"msg": "Pass","metadata": {"code": "rpm_repos.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "A list of known and permitted repository ids should be available in the rule data.","title": "Known repo id list provided"}},{"msg": "Pass","metadata": {"code": "rpm_signature.allowed","collections": ["redhat","redhat_rpms"],"description": "The SLSA Provenance attestation for the image is inspected to ensure RPMs have been signed by pre-defined set of signing keys. The list of signing keys can be set via the `allowed_rpm_signature_keys` rule data. Use the special value \"unsigned\" to allow unsigned RPMs.","effective_on": "2024-10-05T00:00:00Z","title": "Allowed RPM signature key"}},{"msg": "Pass","metadata": {"code": "rpm_signature.result_format","collections": ["redhat","redhat_rpms"],"description": "Confirm the format of the RPMS_DATA result is in the expected format.","effective_on": "2024-10-05T00:00:00Z","title": "Result format"}},{"msg": "Pass","metadata": {"code": "rpm_signature.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected `allowed_rpm_signature_keys` rule data key has been provided in the expected format.","effective_on": "2024-10-05T00:00:00Z","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "sbom.disallowed_packages_provided","collections": ["redhat","policy_data","redhat_rpms"],"description": "Confirm the `disallowed_packages` and `disallowed_attributes` rule data were provided, since they are required by the policy rules in this package.","title": "Disallowed packages list is provided"}},{"msg": "Pass","metadata": {"code": "sbom.found","collections": ["minimal","redhat"],"description": "Confirm an SBOM attestation exists.","title": "Found"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed","collections": ["redhat","redhat_rpms"],"description": "Confirm the CycloneDX SBOM contains only allowed packages. By default all packages are allowed. Use the \"disallowed_packages\" rule data key to provide a list of disallowed packages.","title": "Allowed"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the CycloneDX SBOM contains only packages with explicitly allowed external references. By default all external references are allowed unless the \"allowed_external_references\" rule data key provides a list of type-pattern pairs that forbid the use of any other external reference of the given type where the reference url matches the given pattern.","title": "Allowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.allowed_package_sources","collections": ["redhat","redhat_rpms","policy_data"],"description": "For each of the components fetched by Hermeto which define externalReferences of type distribution, verify they are allowed based on the allowed_package_sources rule data key. By default, allowed_package_sources is empty, which means no components with such references are allowed.","effective_on": "2024-12-15T00:00:00Z","title": "Allowed package sources"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.disallowed_package_attributes","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the CycloneDX SBOM contains only packages without disallowed attributes. By default all attributes are allowed. Use the \"disallowed_attributes\" rule data key to provide a list of key-value pairs that forbid the use of an attribute set to the given value.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package attributes"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.disallowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"], "description": "Confirm the CycloneDX SBOM contains only packages without disallowed external references. By default all external references are allowed. Use the \"disallowed_external_references\" rule data key to provide a list of type-pattern pairs that forbid the use of an external reference of the given type where the reference url matches the given pattern.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_cyclonedx.valid","collections": ["minimal","redhat","redhat_rpms"],"description": "Check the CycloneDX SBOM has the expected format. It verifies the CycloneDX SBOM matches the 1.5 version of the schema.","title": "Valid"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed","collections": ["redhat","redhat_rpms"],"description": "Confirm the SPDX SBOM contains only allowed packages. By default all packages are allowed. Use the \"disallowed_packages\" rule data key to provide a list of disallowed packages.","title": "Allowed"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the SPDX SBOM contains only packages with explicitly allowed external references. By default all external references are allowed unless the \"allowed_external_references\" rule data key provides a list of type-pattern pairs that forbid the use of any other external reference of the given type where the reference url matches the given pattern.","title": "Allowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.allowed_package_sources","collections": ["redhat","redhat_rpms","policy_data"],"description": "For each of the packages fetched by Hermeto which define externalReferences, verify they are allowed based on the allowed_package_sources rule data key. By default, allowed_package_sources is empty, which means no components with such references are allowed.","effective_on": "2025-02-17T00:00:00Z","title": "Allowed package sources"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.disallowed_package_attributes","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the SPDX SBOM contains only packages without disallowed attributes. By default all attributes are allowed. Use the \"disallowed_attributes\" rule data key to provide a list of key-value pairs that forbid the use of an attribute set to the given value.","effective_on": "2025-02-04T00:00:00Z","title": "Disallowed package attributes"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.disallowed_package_external_references","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the SPDX SBOM contains only packages without disallowed external references. By default all external references are allowed. Use the \"disallowed_external_references\" rule data key to provide a list of type-pattern pairs that forbid the use of an external reference of the given type where the reference url matches the given pattern.","effective_on": "2024-07-31T00:00:00Z","title": "Disallowed package external references"}},{"msg": "Pass","metadata": {"code": "sbom_spdx.valid","collections": ["minimal","redhat","redhat_rpms"],"description": "Check the SPDX SBOM has the expected format. It verifies the SPDX SBOM matches the 2.3 version of the schema.","title": "Valid"}},{"msg": "Pass","metadata": {"code": "schedule.date_restriction","collections": ["redhat"],"description": "Check if the current date is not allowed based on the rule data value from the key `disallowed_dates`. By default, the list is empty in which case *any* day is allowed. This check is enforced only for a \"release\" or \"production\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Date Restriction"}},{"msg": "Pass","metadata": {"code": "schedule.rule_data_provided","collections": ["redhat","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `disallowed_weekdays` and `disallowed_dates`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "schedule.weekday_restriction","collections": ["redhat"],"description": "Check if the current weekday is allowed based on the rule data value from the key `disallowed_weekdays`. By default, the list is empty in which case *any* weekday is allowed. This check is enforced only for a \"release\" or \"production\" pipeline, as determined by the value of the `pipeline_intention` rule data.","title": "Weekday Restriction"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.allowed_builder_ids_provided","collections": ["slsa3","redhat","redhat_rpms","policy_data"],"description": "Confirm the `allowed_builder_ids` rule data was provided, since it is required by the policy rules in this package.","title": "Allowed builder IDs provided"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.slsa_builder_id_accepted","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the attestation attribute predicate.builder.id is set to one of the values in the `allowed_builder_ids` rule data, e.g. \"https://tekton.dev/chains/v2\".","title": "SLSA Builder ID is known and accepted"}},{"msg": "Pass","metadata": {"code": "slsa_build_build_service.slsa_builder_id_found","collections": ["slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the attestation attribute predicate.builder.id is set.","title": "SLSA Builder ID found"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.build_script_used","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the predicate.buildConfig.tasks.steps attribute for the task responsible for building and pushing the image is not empty.","title": "Build task contains steps"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.build_task_image_results_found","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Confirm that a build task exists and it has the expected IMAGE_DIGEST and IMAGE_URL task results.","title": "Build task set image digest and url task results"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.image_built_by_trusted_task","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the digest of the image being validated is reported by a trusted Task in its IMAGE_DIGEST result.","title": "Image built by trusted Task"}},{"msg": "Pass","metadata": {"code": "slsa_build_scripted_build.subject_build_task_matches","collections": ["slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify the subject of the attestations matches the IMAGE_DIGEST and IMAGE_URL values from the build task.","title": "Provenance subject matches build task image result"}},{"msg": "Pass","metadata": {"code": "slsa_provenance_available.allowed_predicate_types_provided","collections": ["minimal","slsa3","redhat","redhat_rpms","policy_data"],"description": "Confirm the `allowed_predicate_types` rule data was provided, since it is required by the policy rules in this package.","title": "Allowed predicate types provided"}},{"msg": "Pass","metadata": {"code": "slsa_provenance_available.attestation_predicate_type_accepted","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the predicateType field of the attestation indicates the in-toto SLSA Provenance format was used to attest the PipelineRun.","title": "Expected attestation predicate type found"}},{"msg": "Pass","metadata": { "code": "slsa_source_correlated.attested_source_code_reference","collections": ["minimal","slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Attestation contains source reference.","title": "Source reference"}},{"msg": "Pass","metadata": {"code": "slsa_source_correlated.expected_source_code_reference","collections": ["minimal","slsa3","redhat"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Verify that the provided source code reference is the one being attested.","title": "Expected source code reference"}},{"msg": "Pass","metadata": {"code": "slsa_source_correlated.rule_data_provided","collections": ["minimal","slsa3","redhat","redhat_rpms","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_vcs` and `supported_digests`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_format_okay","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Confirm at least one entry in the predicate.materials array of the attestation contains the expected attributes: uri and digest.sha1.","title": "Materials have uri and digest"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_include_git_sha","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure that each entry in the predicate.materials array with a SHA-1 digest includes a valid Git commit SHA.","title": "Materials include git commit shas"}},{"msg": "Pass","metadata": {"code": "slsa_source_version_controlled.materials_uri_is_git_repo","collections": ["minimal","slsa3","redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure each entry in the predicate.materials array with a SHA-1 digest includes a valid Git URI.","title": "Material uri is a git repo"}},{"msg": "Pass","metadata": {"code": "source_image.exists","collections": ["redhat"],"description": "Verify the source container image exists.","effective_on": "2024-06-05T00:00:00Z","title": "Exists"}},{"msg": "Pass","metadata": {"code": "source_image.signed","collections": ["redhat"],"depends_on": ["source_image.exists"],"description": "Verify the source container image is signed.","effective_on": "2024-05-04T00:00:00Z","title": "Signed"}},{"msg": "Pass","metadata": {"code": "tasks.data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected data keys have been provided in the expected format. The keys are `pipeline-required-tasks` and `required-tasks`.","title": "Data provided"}},{"msg": "Pass","metadata": {"code": "tasks.future_required_tasks_found","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Produce a warning when a task that will be required in the future was not included in the PipelineRun attestation.","title": "Future required tasks were found"}},{"msg": "Pass","metadata": {"code": "tasks.pinned_task_refs","collections": ["redhat"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that all Tasks in the SLSA Provenance attestation use an immuntable reference to the Task definition.","title": "Pinned Task references"}},{"msg": "Pass","metadata": {"code": "tasks.pipeline_has_tasks","collections": ["minimal","redhat","redhat_rpms","slsa3"],"depends_on": ["attestation_type.known_attestation_type"],"description": "Ensure that at least one Task is present in the PipelineRun attestation.","title": "Pipeline run includes at least one task"}},{"msg": "Pass","metadata": {"code": "tasks.pipeline_required_tasks_list_provided","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Produce a warning if the required tasks list rule data was not provided.","title": "Required tasks list for pipeline was provided"}},{"msg": "Pass","metadata": {"code": "tasks.required_tasks_found","collections": ["redhat"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that the set of required tasks are included in the PipelineRun attestation.","title": "All required tasks were included in the pipeline"}},{"msg": "Pass","metadata": {"code": "tasks.required_tasks_list_provided","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Confirm the `required-tasks` rule data was provided, since it's required by the policy rules in this package.","title": "Required tasks list was provided"}},{"msg": "Pass","metadata": {"code": "tasks.required_untrusted_task_found","collections": ["redhat","redhat_rpms"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that the all required tasks are resolved from trusted tasks.","title": "All required tasks are from trusted tasks"}},{"msg": "Pass","metadata": {"code": "tasks.successful_pipeline_tasks","collections": ["minimal","redhat","redhat_rpms","slsa3"],"depends_on": ["tasks.pipeline_has_tasks"],"description": "Ensure that all of the Tasks in the Pipeline completed successfully. Note that skipped Tasks are not taken into account and do not influence the outcome.","title": "Successful pipeline tasks"}},{"msg": "Pass","metadata": {"code": "test.no_erred_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any tests have their result set to \"ERROR\". The result type is configurable by the \"erred_tests_results\" key in the rule data.","title": "No tests erred"}},{"msg": "Pass","metadata": {"code": "test.no_failed_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any non-informative tests have their result set to \"FAILED\". The result type is configurable by the \"failed_tests_results\" key, and the list of informative tests is configurable by the \"informative_tests\" key in the rule data.","title": "No tests failed"}},{"msg": "Pass","metadata": {"code": "test.no_skipped_tests","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Produce a violation if any tests have their result set to \"SKIPPED\". A skipped result means a pre-requirement for executing the test was not met, e.g. a license key for executing a scanner was not provided. The result type is configurable by the \"skipped_tests_results\" key in the rule data.","effective_on": "2023-12-08T00:00:00Z","title": "No tests were skipped"}},{"msg": "Pass","metadata": {"code": "test.no_test_warnings","collections": ["redhat"],"depends_on": ["test.test_data_found"],"description": "Produce a warning if any tests have their result set to \"WARNING\". The result type is configurable by the \"warned_tests_results\" key in the rule data.","title": "No tests produced warnings"}},{"msg": "Pass","metadata": {"code": "test.rule_data_provided","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_tests_results`, `failed_tests_results`, `informative_tests`, `erred_tests_results`, `skipped_tests_results`, and `warned_tests_results`.","title": "Rule data provided"}},{"msg": "Pass","metadata": {"code": "test.test_all_images","collections": ["redhat","redhat_rpms"],"description": "Ensure that task producing the IMAGES_PROCESSED result contains the digests of the built image.","effective_on": "2024-05-29T00:00:00Z","title": "Image digest is present in IMAGES_PROCESSED result"}},{"msg": "Pass","metadata": {"code": "test.test_data_found","collections": ["redhat"],"depends_on": ["attestation_type.known_attestation_type"], "description": "Ensure that at least one of the tasks in the pipeline includes a TEST_OUTPUT task result, which is where Conforma expects to find test result data.","title": "Test data found in task results"}},{"msg": "Pass","metadata": {"code": "test.test_results_found","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Each test result is expected to have a `results` key. Verify that the `results` key is present in all of the TEST_OUTPUT task results.","title": "Test data includes results key"}},{"msg": "Pass","metadata": {"code": "test.test_results_known","collections": ["redhat","redhat_rpms"],"depends_on": ["test.test_data_found"],"description": "Ensure all test data result values are in the set of known/supported result values.","title": "No unsupported test result values found"}},{"msg": "Pass","metadata": {"code": "trusted_task.data","collections": ["redhat","redhat_rpms"],"description": "Confirm the `trusted_tasks` rule data was provided, since it's required by the policy rules in this package.","effective_on": "2024-05-07T00:00:00Z","title": "Task tracking data was provided"}},{"msg": "Pass","metadata": {"code": "trusted_task.data_format","collections": ["redhat","redhat_rpms","policy_data"],"description": "Confirm the expected `trusted_tasks` data keys have been provided in the expected format.","title": "Data format"}},{"msg": "Pass","metadata": {"code": "trusted_task.future_deny_rule","collections": ["redhat"],"description": "Warn when a task matches a deny rule that has an effective_on date in the future. This provides advance notice that a task will become untrusted when the deny rule takes effect.","title": "Future deny rule will apply"}},{"msg": "Pass","metadata": {"code": "trusted_task.pinned","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.","effective_on": "2024-05-07T00:00:00Z","title": "Task references are pinned"}},{"msg": "Pass","metadata": {"code": "trusted_task.tagged","collections": ["redhat","redhat_rpms"],"description": "Check if all Tekton Tasks defined with the bundle format contain a tag reference.","effective_on": "2024-05-07T00:00:00Z","title": "Task references are tagged"}},{"msg": "Pass","metadata": {"code": "trusted_task.trusted","collections": ["redhat"],"description": "Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted.","effective_on": "2024-05-07T00:00:00Z","title": "Tasks are trusted"}},{"msg": "Pass","metadata": {"code": "trusted_task.trusted_parameters","collections": ["redhat"],"description": "Confirm certain parameters provided to each builder Task have come from trusted Tasks. Trust can be defined using pattern-based rules (trusted_task_rules) or an explicit allow list with expiry dates (trusted_tasks).","effective_on": "2021-07-04T00:00:00Z","title": "Trusted parameters"}},{"msg": "Pass","metadata": {"code": "trusted_task.valid_trusted_artifact_inputs","collections": ["redhat","redhat_rpms"],"depends_on": ["attestation_type.known_attestation_type"],"description": "All input trusted artifacts must be produced on the pipeline. If they are not the artifact could have been injected by a rogue task.","title": "Trusted Artifact produced in pipeline"}},{"msg": "Pass","metadata": {"code": "volatile_config.expired_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has passed its effectiveUntil date. Expired rules are no longer active and should be removed from the policy configuration.","title": "Volatile rule has expired"}},{"msg": "Pass","metadata": {"code": "volatile_config.expiring_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule will expire within the configured warning threshold (default 30 days). This provides advance notice to extend or replace the rule before it expires.","title": "Volatile rule expiring soon"}},{"msg": "Pass","metadata": {"code": "volatile_config.invalid_config","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has invalid date values that cannot be parsed. This indicates a configuration error that should be corrected.","title": "Volatile rule has invalid configuration"}},{"msg": "Pass","metadata": {"code": "volatile_config.no_expiration","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has no effectiveUntil date set. Rules without expiration dates may accumulate over time and should be periodically reviewed.","title": "Volatile rule has no expiration"}},{"msg": "Pass","metadata": {"code": "volatile_config.pending_rule","collections": ["minimal","redhat"],"description": "Generates a warning when a volatile configuration rule has an effectiveOn date in the future, indicating it will become active at that time.","title": "Volatile rule pending activation"}}],"success": true,"signatures": [{"keyid": "","sig": "MEUCIQC1oZLtKPj16quyrwOw1CzWvwykTC/qNBCHNQcPp/LRagIgY5lmVp8mXf519UkEr4PI2Xl4D2JMW40dulx78Vrvp9U="},{"keyid": "","sig": "MEUCIQC6svg/rS0wHq7hrbLWMpIdVpSrdXM8odsq/vJNIHg0xwIgPeSBWJImyagajBB87oiK+CMVBJF20rEaf8CqftR/Sw4="}],"attestations": [{"type": "https://in-toto.io/Statement/v0.1","predicateType": "https://slsa.dev/provenance/v0.2","predicateBuildType": "tekton.dev/v1/PipelineRun","signatures": [{"keyid": "SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY","sig": "MEQCIFxdKWG2j4uBCJXGN6bl1oiVOiO0y0jpJovHJrX6jCZwAiBKKMiztVMLSSNpFORFTIY7r62R24QD4Grx0snRjSpxqQ=="}]}]}],"key": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZP/0htjhVt2y0ohjgtIIgICOtQtA\nnaYJRuLprwIv6FDhZ5yFjYUEtsmoNcW7rx2KM6FOXGsCX3BNc7qhHELT+g==\n-----END PUBLIC KEY-----\n","policy": {"name": "Red Hat","description": "Includes the full set of rules and policies required internally by Red Hat when building Red Hat products. Source: https://github.com/conforma/config/blob/main/redhat/policy.yaml","sources": [{"name": "Default","policy": ["oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:e60f17f53eae8f4c63ab1a8e4d54d3843b6c498f7022bc0d25ca360bf8229da1"],"data": ["git::github.com/release-engineering/rhtap-ec-policy//data?ref=25b163398303105a539998f1a276f176bf3384b2","oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:59a973d48811ac69152ffba5723004ebdae5e7e5eb3df833b17dbf46a9ecd515","oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea","oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc"],"config": {"exclude": ["slsa_source_correlated.source_code_reference_provided","cve.cve_results_found"],"include": ["@redhat"]}}],"publicKey": "k8s://chains-e2e-qfzn/golden-image-public-keykmmbavbrzq"},"ec-version": "v0.7.111","effective-time": "2026-02-16T18:18:59.206079349Z"}