diff --git a/administration/managing_users/roles_in_kosli.md b/administration/managing_users/roles_in_kosli.md index 7c846df..cda1d22 100644 --- a/administration/managing_users/roles_in_kosli.md +++ b/administration/managing_users/roles_in_kosli.md @@ -43,7 +43,6 @@ Roles apply to service accounts the same way they apply to users. Wherever this | **Attestations & Snapshots** | | | | | Report attestations | ✅ | ✅ | ❌ | ❌ | | Report environment snapshots | ✅ | ✅ | ✅ | ❌ | -| Create and manage approvals | ✅ | ✅ | ❌ | ❌ | | **Actions** | | | | | Create, update, and delete actions | ✅ | ✅ | ❌ | ❌ | | View actions | ✅ | ✅ | ✅ | ✅ | @@ -74,7 +73,7 @@ The following sections provide more details about each Kosli user role, includin - **Service Accounts**: Create and manage service accounts and their API keys - **Integrations**: Configure integrations with external systems (Slack, LaunchDarkly, etc.) - **Resource Management**: Create, update, and delete flows, environments, policies, and attestation types - - **Attestations & Snapshots**: Report attestations, environment snapshots, and manage approvals + - **Attestations & Snapshots**: Report attestations and environment snapshots - **Actions**: Create, update, and delete actions for automated workflows and notifications - **Data Access**: View all trails, artifacts, attestations, and snapshots @@ -101,7 +100,7 @@ The following sections provide more details about each Kosli user role, includin - **Service Accounts**: Create and manage service accounts and their API keys - **Integrations**: Configure integrations with external systems (Slack, LaunchDarkly, etc.) - **Resource Management**: Create, update, and delete flows, environments, policies, and attestation types - - **Attestations & Snapshots**: Report attestations, environment snapshots, and manage approvals + - **Attestations & Snapshots**: Report attestations and environment snapshots - **Actions**: Create, update, and delete actions for automated workflows and notifications - **Data Access**: View all trails, artifacts, attestations, and snapshots @@ -139,7 +138,6 @@ The following sections provide more details about each Kosli user role, includin - Use the dedicated update paths on an environment (PATCH, archive, rename, attach/detach policies). - Create, update, or delete flows, policies, attestation types, or other resources. - Report attestations. - - Manage approvals. - Create or manage actions. - Configure integrations. - Invite users or change settings. @@ -173,7 +171,6 @@ The following sections provide more details about each Kosli user role, includin Readers cannot: - Create, update, or delete any resources - Report attestations or snapshots - - Manage approvals - Create or manage actions - Create or manage service accounts - Configure integrations diff --git a/changelog/index.mdx b/changelog/index.mdx index d5a7321..50935e3 100644 --- a/changelog/index.mdx +++ b/changelog/index.mdx @@ -4,6 +4,28 @@ description: "Release notes for Kosli products." rss: true --- + + +## Breaking changes + +- **Approval commands removed** — `kosli assert approval`, `kosli get approval`, `kosli list approvals`, `kosli report approval`, and `kosli request approval` are gone, along with the `kosli request` parent command, since `request approval` was its only subcommand. They were deprecated in v2.20.0. Use [attestations](/getting_started/attestations) to record approval evidence instead. + +## Updates + +- **k8s-reporter Helm chart (2.6.0)** — the `--auto-environment` flag and its companions (`--environment-description`, `--include-scaling`, `--exclude-scaling`) are now exposed as `reporterConfig.*` values, so the reporter CronJob can auto-create a K8S environment on first run without editing the chart. + +[View on GitHub](https://github.com/kosli-dev/cli/releases/tag/v2.35.0) + + + + + +## Breaking changes + +- **Approval API removed** — the deprecated approval endpoints under `/api/v2/approvals/` no longer exist. Approvals are also gone from custom webhook notification payloads and from artifact responses. Use [attestations](/getting_started/attestations) to record approval evidence instead. + + + ## New features diff --git a/client_reference/kosli_get_trail.md b/client_reference/kosli_get_trail.md index 7ab5028..6ea23ae 100644 --- a/client_reference/kosli_get_trail.md +++ b/client_reference/kosli_get_trail.md @@ -39,7 +39,7 @@ To view a live example of 'kosli get trail' you can run the command below (for t export KOSLI_ORG=cyber-dojo # The API token below is read-only export KOSLI_API_TOKEN=Pj_XT2deaVA6V1qrTlthuaWsmjVt4eaHQwqnwqjRO3A -kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=json +kosli get trail dashboard-ci e4757683b74df7033c95aa544a7824b395c2f8bb --output=json ``` @@ -47,29 +47,31 @@ kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=j ```json { - "name": "1159a6f1193150681b8484545150334e89de6c1c", - "description": "zhelezovartem - ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", + "name": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "description": "", "git_commit_info": { - "sha1": "1159a6f1193150681b8484545150334e89de6c1c", - "message": "ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", - "author": "Artem Zhelezov <36639304+zhelezovartem@users.noreply.github.com>", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "branch": "main", - "timestamp": 1711534976.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/1159a6f1193150681b8484545150334e89de6c1c" + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb" }, - "origin_url": "https://github.com/cyber-dojo/dashboard/actions/runs/8450201221", + "origin_url": "https://github.com/cyber-dojo/dashboard/actions/runs/28969474194", "user_data": {}, - "repo_ids": [], - "last_modified_at": 1714814180.0268202, - "created_at": 1711534991.83214, + "repo_ids": [ + "4c546fde-c5ee-4a39-b399-8c71d7e1" + ], + "last_modified_at": 1783538679.7988548, + "created_at": 1783538535.1534083, "compliance_status": { "status": "COMPLIANT", "is_compliant": true, "attestations_statuses": [ { "attestation_name": "pull-request", - "attestation_type": null, - "attestation_id": "76a44125-eccc-4fb7-8260-d4ff1866", + "attestation_type": "pull_request", + "attestation_id": "60045efd-1851-45f4-9b27-5f7ae946", "overridden_attestation_id": null, "status": "COMPLETE", "is_compliant": true, @@ -78,51 +80,87 @@ kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=j ], "artifacts_statuses": { "dashboard": { - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_id": "8803e410-8ab6-4ba7-af7a-4c769a92", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_id": "cc7c618f-d22e-4d95-b6f1-cea4fded", "status": "COMPLIANT", "is_compliant": true, "attestations_statuses": [ { - "attestation_name": "aws-beta-snyk-scan", - "attestation_type": null, - "attestation_id": "60bde45d-4724-4c46-a963-85fe1972", + "attestation_name": "provenance-facts", + "attestation_type": "custom:provenance-facts", + "attestation_id": "8753765c-0df9-421c-bfe3-c8aa1f8d", + "overridden_attestation_id": null, + "status": "COMPLETE", + "is_compliant": true, + "unexpected": false + }, + { + "attestation_name": "provenance-decision", + "attestation_type": "system:decision", + "attestation_id": "b0786932-6ff7-4359-bb20-1bb43671", "overridden_attestation_id": null, "status": "COMPLETE", "is_compliant": true, - "unexpected": true + "unexpected": false }, { - "attestation_name": "aws-prod-snyk-scan", - "attestation_type": null, - "attestation_id": "333725e9-e82b-4a22-a81c-721adbae", + "attestation_name": "sbom-facts", + "attestation_type": "custom:sbom-facts", + "attestation_id": "7d834d1e-e7de-4890-870c-a783053b", "overridden_attestation_id": null, "status": "COMPLETE", "is_compliant": true, - "unexpected": true + "unexpected": false + }, + { + "attestation_name": "sbom-decision", + "attestation_type": "system:decision", + "attestation_id": "d37cd3aa-3909-4d0d-a8c3-0c623de1", + "overridden_attestation_id": null, + "status": "COMPLETE", + "is_compliant": true, + "unexpected": false }, { "attestation_name": "snyk-container-scan", - "attestation_type": null, - "attestation_id": "70421c36-d79f-4813-8635-e77b760a", + "attestation_type": "system:decision", + "attestation_id": "2e01c56f-18f9-4e75-8b45-f7d5846e", + "overridden_attestation_id": null, + "status": "COMPLETE", + "is_compliant": true, + "unexpected": false + }, + { + "attestation_name": "rubocop-lint", + "attestation_type": "junit", + "attestation_id": "d81b5df8-7c67-42ce-b332-5f10aba5", + "overridden_attestation_id": null, + "status": "COMPLETE", + "is_compliant": true, + "unexpected": false + }, + { + "attestation_name": "sonarcloud-scan", + "attestation_type": "sonar", + "attestation_id": "c955d971-4600-4b45-950f-cd8b3642", "overridden_attestation_id": null, "status": "COMPLETE", "is_compliant": true, "unexpected": false }, { - "attestation_name": "snyk-code-scan", - "attestation_type": null, - "attestation_id": "bb3acddd-5336-4b6a-a7ea-e5b3e972", + "attestation_name": "unit-test", + "attestation_type": "junit", + "attestation_id": "084be09c-f101-4a29-985e-ee305d60", "overridden_attestation_id": null, "status": "COMPLETE", "is_compliant": true, "unexpected": false }, { - "attestation_name": "lint", - "attestation_type": null, - "attestation_id": "d3752b67-aefc-444c-a7dc-8115c5ef", + "attestation_name": "unit-test-coverage", + "attestation_type": "generic", + "attestation_id": "ede0b52b-d56e-474f-b04c-03e6be01", "overridden_attestation_id": null, "status": "COMPLETE", "is_compliant": true, @@ -130,12 +168,12 @@ kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=j } ], "unexpected": false, - "evaluated_at": 1714814180.0264866, - "flow_template_id": null + "evaluated_at": 1783538679.7988548, + "flow_template_id": "cba69d3f-7f48-4e00-9c23-fb63f98d" } }, - "evaluated_at": 1714814180.0265083, - "flow_template_id": "cd1860d5-dc06-41e7-9a3b-be078e7f" + "evaluated_at": 1783538658.411656, + "flow_template_id": "cba69d3f-7f48-4e00-9c23-fb63f98d" }, "template": { "version": 1, @@ -151,22 +189,46 @@ kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=j "name": "dashboard", "attestations": [ { - "name": "lint", - "type": "generic" + "name": "provenance-facts", + "type": "custom:provenance-facts" + }, + { + "name": "provenance-decision", + "type": "decision" }, { - "name": "snyk-code-scan", - "type": "snyk" + "name": "sbom-facts", + "type": "custom:sbom-facts" + }, + { + "name": "sbom-decision", + "type": "decision" }, { "name": "snyk-container-scan", - "type": "snyk" + "type": "decision" + }, + { + "name": "rubocop-lint", + "type": "junit" + }, + { + "name": "sonarcloud-scan", + "type": "sonar" + }, + { + "name": "unit-test", + "type": "junit" + }, + { + "name": "unit-test-coverage", + "type": "generic" } ] } ] }, - "content": "version: 1\n\ntrail:\n attestations:\n - name: pull-request\n type: pull_request\n artifacts:\n - name: dashboard\n attestations:\n - name: lint\n type: generic\n - name: snyk-code-scan\n type: snyk\n - name: snyk-container-scan\n type: snyk\n" + "content": "version: 1\n\ntrail:\n attestations:\n - name: pull-request\n type: pull_request\n artifacts:\n - name: dashboard\n attestations:\n - name: provenance-facts\n type: custom:provenance-facts\n - name: provenance-decision\n type: decision\n\n - name: sbom-facts\n type: custom:sbom-facts\n - name: sbom-decision\n type: decision\n\n - name: snyk-container-scan\n type: decision\n\n - name: rubocop-lint\n type: junit\n - name: sonarcloud-scan\n type: sonar\n - name: unit-test\n type: junit\n - name: unit-test-coverage\n type: generic\n" }, "compliance_state": "COMPLIANT", "is_compliant": true, @@ -174,609 +236,557 @@ kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=j { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711534991.83214, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538535.1534083, "type": "trail_reported", "git_commit_info": { - "sha1": "1159a6f1193150681b8484545150334e89de6c1c", - "message": "ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", - "author": "Artem Zhelezov <36639304+zhelezovartem@users.noreply.github.com>", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, "branch": "main", - "timestamp": 1711534976.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/1159a6f1193150681b8484545150334e89de6c1c", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538535.13884, + "tags": {} + }, "setting_user_id": "da5d4ee8-aec0-4264-ab85-c491040c", "trail_data_json": { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "name": "1159a6f1193150681b8484545150334e89de6c1c", + "name": "e4757683b74df7033c95aa544a7824b395c2f8bb", "creating_user_id": "da5d4ee8-aec0-4264-ab85-c491040c", - "description": "zhelezovartem - ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", + "description": "", "git_commit_info": { - "sha1": "1159a6f1193150681b8484545150334e89de6c1c", - "message": "ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", - "author": "Artem Zhelezov <36639304+zhelezovartem@users.noreply.github.com>", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "branch": "main", - "timestamp": 1711534976.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/1159a6f1193150681b8484545150334e89de6c1c" + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb" }, - "template_id": "cd1860d5-dc06-41e7-9a3b-be078e7f", - "origin_url": "https://github.com/cyber-dojo/dashboard/actions/runs/8450201221", - "user_data": "{}" + "template_id": "cba69d3f-7f48-4e00-9c23-fb63f98d", + "origin_url": "https://github.com/cyber-dojo/dashboard/actions/runs/28969474194", + "user_data": "{}", + "repo_ids": [ + "4c546fde-c5ee-4a39-b399-8c71d7e1" + ] } }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535010.2210565, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538554.443048, "type": "trail_attestation_reported", "git_commit_info": { - "sha1": "1159a6f1193150681b8484545150334e89de6c1c", - "message": "ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", - "author": "Artem Zhelezov <36639304+zhelezovartem@users.noreply.github.com>", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, "branch": "main", - "timestamp": 1711534976.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/1159a6f1193150681b8484545150334e89de6c1c", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538554.4352667, + "tags": {} + }, "attestation_type": "pull_request", "is_compliant": true, - "attestation_id": "76a44125-eccc-4fb7-8260-d4ff1866", + "attestation_id": "60045efd-1851-45f4-9b27-5f7ae946", "template_reference_name": "pull-request" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535018.95352, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538566.412186, "type": "trail_attestation_for_artifact_reported", "git_commit_info": { - "sha1": "1159a6f1193150681b8484545150334e89de6c1c", - "message": "ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", - "author": "Artem Zhelezov <36639304+zhelezovartem@users.noreply.github.com>", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, "branch": "main", - "timestamp": 1711534976.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/1159a6f1193150681b8484545150334e89de6c1c", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "generic", + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538566.275227, + "tags": {} + }, + "attestation_type": "junit", "is_compliant": true, - "attestation_id": "d3752b67-aefc-444c-a7dc-8115c5ef", - "template_reference_name": "lint", + "attestation_id": "d81b5df8-7c67-42ce-b332-5f10aba5", + "template_reference_name": "rubocop-lint", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535027.3128896, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538599.9910955, "type": "artifact_creation_reported", "git_commit_info": { - "sha1": "1159a6f1193150681b8484545150334e89de6c1c", - "message": "ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", - "author": "Artem Zhelezov <36639304+zhelezovartem@users.noreply.github.com>", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, - "branch": "main", - "timestamp": 1711534976.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/1159a6f1193150681b8484545150334e89de6c1c", + "branch": "", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", - "artifact_id": "8803e410-8ab6-4ba7-af7a-4c769a92", + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538599.9776034, + "tags": {} + }, + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:e475768", + "artifact_id": "cc7c618f-d22e-4d95-b6f1-cea4fded", "template_reference_name": "dashboard", - "git_commit": "1159a6f1193150681b8484545150334e89de6c1c" + "git_commit": "e4757683b74df7033c95aa544a7824b395c2f8bb" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535054.2601902, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538601.4830513, "type": "artifact_attestation_reported", "git_commit_info": { - "sha1": "1159a6f1193150681b8484545150334e89de6c1c", - "message": "ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", - "author": "Artem Zhelezov <36639304+zhelezovartem@users.noreply.github.com>", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, - "branch": "main", - "timestamp": 1711534976.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/1159a6f1193150681b8484545150334e89de6c1c", + "branch": "", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "snyk", - "is_compliant": true, - "attestation_id": "bb3acddd-5336-4b6a-a7ea-e5b3e972", - "template_reference_name": "snyk-code-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", - "target_artifact": "dashboard" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535059.1866503, - "type": "artifact_attestation_reported", - "git_commit_info": { - "sha1": "1159a6f1193150681b8484545150334e89de6c1c", - "message": "ci: update gh-workflow-tf-plan-apply action to get rid of deprecations", - "author": "Artem Zhelezov <36639304+zhelezovartem@users.noreply.github.com>", - "author_username": null, - "branch": "main", - "timestamp": 1711534976.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/1159a6f1193150681b8484545150334e89de6c1c", - "parents": null, - "verified": null, - "signature_state": null + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538601.4712045, + "tags": {} }, - "repo_info": null, - "attestation_type": "snyk", + "attestation_type": "custom:provenance-facts", "is_compliant": true, - "attestation_id": "70421c36-d79f-4813-8635-e77b760a", - "template_reference_name": "snyk-container-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", + "attestation_id": "8753765c-0df9-421c-bfe3-c8aa1f8d", + "template_reference_name": "provenance-facts", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:e475768", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535086.4269938, - "type": "artifact_approval_reported", - "git_commit_info": null, - "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "approval_id": "fd9de9dd-37e7-4680-8353-c5082609", - "approval_number": 70, - "environment_id": "e44779bb-311d-4bac-9d19-a64a0843", - "state": "APPROVED", - "reviewer": "external://zhelezovartem" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535216.8064907, - "type": "artifact_started_running", - "git_commit_info": null, - "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "environment_id": "e44779bb-311d-4bac-9d19-a64a0843", - "environment_name": "aws-beta", - "snapshot_index": 3429, - "replica_number": 1, - "template_reference_name": "dashboard" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535375.2659616, - "type": "artifact_approval_reported", - "git_commit_info": null, - "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "approval_id": "2380af36-a5ff-4c52-ba30-a8483bb9", - "approval_number": 71, - "environment_id": "73965c45-e9a1-4bb9-ad01-dc5a526f", - "state": "APPROVED", - "reviewer": "external://zhelezovartem" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711535487.4472156, - "type": "artifact_started_running", - "git_commit_info": null, - "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "environment_id": "73965c45-e9a1-4bb9-ad01-dc5a526f", - "environment_name": "aws-prod", - "snapshot_index": 2509, - "replica_number": 1, - "template_reference_name": "dashboard" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711789650.9179683, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538605.8901985, "type": "artifact_attestation_reported", "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, - "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", + "branch": "", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "snyk", - "is_compliant": true, - "attestation_id": "95e89ff9-077d-4528-a09d-c7898047", - "template_reference_name": "aws-prod-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", - "target_artifact": "dashboard" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1711790067.348031, - "type": "artifact_attestation_reported", - "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", - "author_username": null, - "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "parents": null, - "verified": null, - "signature_state": null + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538605.7439284, + "tags": {} }, - "repo_info": null, - "attestation_type": "snyk", + "attestation_type": "system:decision", "is_compliant": true, - "attestation_id": "0a45d133-25c4-46d2-bc59-27fece47", - "template_reference_name": "aws-beta-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", + "attestation_id": "b0786932-6ff7-4359-bb20-1bb43671", + "template_reference_name": "provenance-decision", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:e475768", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1712394532.589705, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538607.5449562, "type": "artifact_attestation_reported", "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, - "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", + "branch": "", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "snyk", - "is_compliant": true, - "attestation_id": "e616f223-2016-4c28-85c5-00176db6", - "template_reference_name": "aws-prod-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", - "target_artifact": "dashboard" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1712394916.8546758, - "type": "artifact_attestation_reported", - "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", - "author_username": null, - "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "parents": null, - "verified": null, - "signature_state": null + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538607.5226355, + "tags": {} }, - "repo_info": null, - "attestation_type": "snyk", + "attestation_type": "custom:sbom-facts", "is_compliant": true, - "attestation_id": "a7d0fdd4-33a0-4e50-8a3b-d3928e1f", - "template_reference_name": "aws-beta-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", + "attestation_id": "7d834d1e-e7de-4890-870c-a783053b", + "template_reference_name": "sbom-facts", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:e475768", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1712999261.7330244, - "type": "artifact_attestation_reported", + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538609.6176646, + "type": "trail_attestation_for_artifact_reported", "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "snyk", - "is_compliant": true, - "attestation_id": "3e4ef819-db8e-4f1f-b665-1ac0e061", - "template_reference_name": "aws-prod-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", - "target_artifact": "dashboard" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1712999606.647108, - "type": "artifact_attestation_reported", - "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", - "author_username": null, - "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "parents": null, - "verified": null, - "signature_state": null + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538609.6101015, + "tags": {} }, - "repo_info": null, - "attestation_type": "snyk", + "attestation_type": "sonar", "is_compliant": true, - "attestation_id": "d6a3266d-7e43-426f-853c-a2bab6f2", - "template_reference_name": "aws-beta-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", + "attestation_id": "c955d971-4600-4b45-950f-cd8b3642", + "template_reference_name": "sonarcloud-scan", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1713604064.640139, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538612.6819937, "type": "artifact_attestation_reported", "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, - "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", + "branch": "", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "snyk", + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538612.5687785, + "tags": {} + }, + "attestation_type": "system:decision", "is_compliant": true, - "attestation_id": "b7a8fb46-f99e-4228-96a2-7cd55355", - "template_reference_name": "aws-prod-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", + "attestation_id": "d37cd3aa-3909-4d0d-a8c3-0c623de1", + "template_reference_name": "sbom-decision", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:e475768", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1713604482.316237, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538656.9102154, "type": "artifact_attestation_reported", "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "snyk", + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538656.7741516, + "tags": {} + }, + "attestation_type": "junit", "is_compliant": true, - "attestation_id": "a58e5d10-44fa-4918-a732-283d8541", - "template_reference_name": "aws-beta-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", + "attestation_id": "084be09c-f101-4a29-985e-ee305d60", + "template_reference_name": "unit-test", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:e475768", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1714208898.3243415, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538658.411656, "type": "artifact_attestation_reported", "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "snyk", + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538658.4029927, + "tags": {} + }, + "attestation_type": "generic", "is_compliant": true, - "attestation_id": "020b7686-d2f2-4d30-b890-cbfe56c2", - "template_reference_name": "aws-prod-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", + "attestation_id": "ede0b52b-d56e-474f-b04c-03e6be01", + "template_reference_name": "unit-test-coverage", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:e475768", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1714209298.3530078, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538679.7988548, "type": "artifact_attestation_reported", "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", + "sha1": "e4757683b74df7033c95aa544a7824b395c2f8bb", + "message": "Update kosli template with provenance facts+decision (#414)", + "author": "Jon Jagger ", "author_username": null, "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", + "timestamp": 1783538510.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/e4757683b74df7033c95aa544a7824b395c2f8bb", "parents": null, "verified": null, "signature_state": null }, - "repo_info": null, - "attestation_type": "snyk", + "repo_info": { + "inner_id": "4c546fde-c5ee-4a39-b399-8c71d7e1", + "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", + "repo_id": "290597708", + "name": "cyber-dojo/dashboard", + "url": "https://github.com/cyber-dojo/dashboard", + "provider": "github", + "description": null, + "vcs_instance": null, + "namespace_path": null, + "additional_info": null, + "created_at": 1768639963.3866346, + "last_modified_at": 1783538679.7007914, + "tags": {} + }, + "attestation_type": "system:decision", "is_compliant": true, - "attestation_id": "555c60fe-769e-40b9-98df-fc181634", - "template_reference_name": "aws-beta-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", + "attestation_id": "2e01c56f-18f9-4e75-8b45-f7d5846e", + "template_reference_name": "snyk-container-scan", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:e475768", "target_artifact": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1714563833.9450486, - "type": "artifact_stopped_running", + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783538844.1212204, + "type": "artifact_started_running", "git_commit_info": null, "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", "environment_id": "e44779bb-311d-4bac-9d19-a64a0843", "environment_name": "aws-beta", - "snapshot_index": 3510, + "snapshot_index": 7637, + "replica_number": 1, "template_reference_name": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1714564003.09481, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783618198.4632592, "type": "artifact_started_running", "git_commit_info": null, "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "environment_id": "e44779bb-311d-4bac-9d19-a64a0843", - "environment_name": "aws-beta", - "snapshot_index": 3513, + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", + "environment_id": "73965c45-e9a1-4bb9-ad01-dc5a526f", + "environment_name": "aws-prod", + "snapshot_index": 4974, "replica_number": 1, "template_reference_name": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1714813781.150341, - "type": "artifact_attestation_reported", - "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", - "author_username": null, - "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "parents": null, - "verified": null, - "signature_state": null - }, - "repo_info": null, - "attestation_type": "snyk", - "is_compliant": true, - "attestation_id": "333725e9-e82b-4a22-a81c-721adbae", - "template_reference_name": "aws-prod-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", - "target_artifact": "dashboard" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1714814179.9960504, - "type": "artifact_attestation_reported", - "git_commit_info": { - "sha1": "cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "message": "Run ci workflows with fixed Kosli trail-name", - "author": "JonJagger ", - "author_username": null, - "branch": "main", - "timestamp": 1711195944.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/cf3896a8bbd2f74c9e36336b69d8ee64eae1ff25", - "parents": null, - "verified": null, - "signature_state": null - }, - "repo_info": null, - "attestation_type": "snyk", - "is_compliant": true, - "attestation_id": "60bde45d-4724-4c46-a963-85fe1972", - "template_reference_name": "aws-beta-snyk-scan", - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", - "artifact_name": "cyberdojo/dashboard:1159a6f", - "target_artifact": "dashboard" - }, - { - "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", - "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1714832154.1066768, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1783660164.0318449, "type": "artifact_stopped_running", "git_commit_info": null, "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", "environment_id": "e44779bb-311d-4bac-9d19-a64a0843", "environment_name": "aws-beta", - "snapshot_index": 3539, + "snapshot_index": 7657, "template_reference_name": "dashboard" }, { "org_id": "83acb2bc-2c26-48a7-8b87-90dfcce7", "flow_id": "f60c8f3f-67cd-4496-8e17-ed6fdb1e", - "trail_id": "7cc627bd-78ff-4051-b7b8-ef46fa15", - "timestamp": 1714832517.3628683, + "trail_id": "39e622ec-b847-447b-b7f8-7e9ea745", + "timestamp": 1784356018.5146132, "type": "artifact_stopped_running", "git_commit_info": null, "repo_info": null, - "artifact_fingerprint": "dddd83bf5038e81c228b222f01a0184ce2a8492cb45075b66be5baf5be803ca1", + "artifact_fingerprint": "54f6da185cd0f0ef001a0b33c099565fa736546562e0411f706832e72dca47bb", "environment_id": "73965c45-e9a1-4bb9-ad01-dc5a526f", "environment_name": "aws-prod", - "snapshot_index": 2592, + "snapshot_index": 5044, "template_reference_name": "dashboard" } ], @@ -791,7 +801,7 @@ kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=j } }, "external_urls": null, - "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/trails/1159a6f1193150681b8484545150334e89de6c1c" + "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/trails/e4757683b74df7033c95aa544a7824b395c2f8bb" } ``` diff --git a/config/redirects.json b/config/redirects.json index 4f17a4d..cbe6d8a 100644 --- a/config/redirects.json +++ b/config/redirects.json @@ -90,5 +90,25 @@ { "source": "/administration/managing_organizations", "destination": "/user/default_organization" + }, + { + "source": "/client_reference/kosli_assert_approval", + "destination": "/client_reference/overview" + }, + { + "source": "/client_reference/kosli_get_approval", + "destination": "/client_reference/overview" + }, + { + "source": "/client_reference/kosli_list_approvals", + "destination": "/client_reference/overview" + }, + { + "source": "/client_reference/kosli_report_approval", + "destination": "/client_reference/overview" + }, + { + "source": "/client_reference/kosli_request_approval", + "destination": "/client_reference/overview" } ] diff --git a/integrations/kosli_actions.md b/integrations/kosli_actions.md index 04a18d7..30a6190 100644 --- a/integrations/kosli_actions.md +++ b/integrations/kosli_actions.md @@ -62,27 +62,7 @@ Custom webhook notifications empower you to implement automation workflows for " "commit_url": "https://github.com/cyber-dojo/runner/commit/1ac157003dd6fb9ec764daa47726b7bfed65c312", "html_url": "https://app.kosli.com/cyber-dojo/runner/719defb995c86ad7c406ad74258fe98b9ebd71dfa80cd786870c967cb6c1f08d", "api_url": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner/fingerprint/719defb995c86ad7c406ad74258fe98b9ebd71dfa80cd786870c967cb6c1f08d", - "build_url": "https://github.com/cyber-dojo/runner/actions/runs/5891969166", - "deployments": [ - { - "number": "44", - "timestamp": "1692618644", - "build_url": "https://github.com/cyber-dojo/runner/actions/runs/5891969166", - "html_url": "https://app.kosli.com/cyber-dojo/flows/runner/deployments/44", - "api_url": "https://app.kosli.com/api/v2/deployments/cyber-dojo/runner/44" - } - ], - "approvals": [ - { - "number": "42", - "timestamp": "1692617329", - "state": "approved", - "latest_reviewer": "username", - "latest_review_comment": "lgtm", - "html_url": "https://app.kosli.com/cyber-dojo/flows/runner/approvals/42", - "api_url": "https://app.kosli.com/api/v2/approvals/cyber-dojo/runner/42" - } - ] + "build_url": "https://github.com/cyber-dojo/runner/actions/runs/5891969166" } } } diff --git a/scripts/live_docs_modifiers_data.py b/scripts/live_docs_modifiers_data.py index 30a447d..b747196 100644 --- a/scripts/live_docs_modifiers_data.py +++ b/scripts/live_docs_modifiers_data.py @@ -370,42 +370,6 @@ def cis_for(command): }, }, }, - "kosli report approval": { - "github": { - "yaml": { - "repo": "differ", - "workflow": ".github/workflows/main.yml", - "backup": { - "commit": "30dffd09c3f896a322c65029247abcea3019c43a", - "line": 358, - }, - }, - "event": { - "flow": "", - "backup": { - "trail": "", - "attestation_id": "", - }, - }, - }, - "gitlab": { - "yaml": { - "repo": "creator", - "workflow": ".gitlab/workflows/main.yml", - "backup": { - "commit": "48bdbd3b059d45489e8ae5f9f680f48bc6201ad8", - "line": 200, - }, - }, - "event": { - "flow": "", - "backup": { - "trail": "", - "attestation_id": "", - }, - }, - }, - }, "kosli evaluate trail": { "github": { "yaml": { diff --git a/scripts/live_docs_queries_data.py b/scripts/live_docs_queries_data.py index d76db6f..c275120 100644 --- a/scripts/live_docs_queries_data.py +++ b/scripts/live_docs_queries_data.py @@ -15,7 +15,7 @@ "kosli list flows --output=json": "flows/cyber-dojo", "kosli get flow dashboard-ci --output=json": "flows/cyber-dojo/dashboard-ci", "kosli list trails dashboard-ci --output=json": "trails/cyber-dojo/dashboard-ci", - "kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=json": "trails/cyber-dojo/dashboard-ci/1159a6f1193150681b8484545150334e89de6c1c", + "kosli get trail dashboard-ci e4757683b74df7033c95aa544a7824b395c2f8bb --output=json": "trails/cyber-dojo/dashboard-ci/e4757683b74df7033c95aa544a7824b395c2f8bb", "kosli get attestation snyk-container-scan --flow=differ-ci --fingerprint=0cbbe3a6e73e733e8ca4b8813738d68e824badad0508ff20842832b5143b48c0 --output=json": "attestations/cyber-dojo/differ-ci/artifact/0cbbe3a6e73e733e8ca4b8813738d68e824badad0508ff20842832b5143b48c0/snyk-container-scan", "kosli list artifacts --flow=differ-ci --output=json": "artifacts/cyber-dojo/differ-ci", "kosli get artifact differ-ci@0cbbe3a6e73e733e8ca4b8813738d68e824badad0508ff20842832b5143b48c0 --output=json": "artifacts/cyber-dojo/differ-ci/fingerprint/0cbbe3a6e73e733e8ca4b8813738d68e824badad0508ff20842832b5143b48c0", @@ -34,7 +34,7 @@ "kosli diff snapshots": "kosli diff snapshots aws-beta aws-prod --output=json", "kosli list flows": "kosli list flows --output=json", "kosli get flow": "kosli get flow dashboard-ci --output=json", - "kosli get trail": "kosli get trail dashboard-ci 1159a6f1193150681b8484545150334e89de6c1c --output=json", + "kosli get trail": "kosli get trail dashboard-ci e4757683b74df7033c95aa544a7824b395c2f8bb --output=json", "kosli get attestation": "kosli get attestation snyk-container-scan --flow=differ-ci --fingerprint=0cbbe3a6e73e733e8ca4b8813738d68e824badad0508ff20842832b5143b48c0 --output=json", } diff --git a/scripts/test_update_cli_nav.py b/scripts/test_update_cli_nav.py index 4eb40cb..f50c959 100644 --- a/scripts/test_update_cli_nav.py +++ b/scripts/test_update_cli_nav.py @@ -16,8 +16,8 @@ def test_nav_skips_hidden_and_has_no_deprecated_group(): _write(os.path.join(docs_dir, "overview.md"), 'title: "Overview"') _write(os.path.join(docs_dir, "output_and_verbosity.md"), 'title: "Output"') _write(os.path.join(docs_dir, "kosli_attest_generic.md"), 'title: "kosli attest generic"') - _write(os.path.join(docs_dir, "kosli_report_approval.md"), - 'title: "kosli report approval"\ntag: "DEPRECATED"') + _write(os.path.join(docs_dir, "kosli_report_artifact.md"), + 'title: "kosli report artifact"\ntag: "DEPRECATED"') _write(os.path.join(docs_dir, "kosli_attest_decision.md"), 'title: "kosli attest decision"\ntag: "BETA"\nhidden: true') @@ -40,7 +40,7 @@ def test_nav_skips_hidden_and_has_no_deprecated_group(): assert "client_reference/kosli_attest_decision" not in all_pages, "hidden page must be skipped" assert "client_reference/kosli_attest_generic" in all_pages - assert "client_reference/kosli_report_approval" in all_pages, "deprecated page stays in its family group" + assert "client_reference/kosli_report_artifact" in all_pages, "deprecated page stays in its family group" assert "Deprecated" not in group_names, "separate Deprecated group must be removed" diff --git a/tests/test_live_docs_modifiers.py b/tests/test_live_docs_modifiers.py index 893bf37..adc5c10 100644 --- a/tests/test_live_docs_modifiers.py +++ b/tests/test_live_docs_modifiers.py @@ -98,7 +98,7 @@ def test_aefa1410(monkeypatch): yaml_url returns backup-yaml-url when the GitLab HEAD SHA API returns non-200. """ ci = "gitlab" - command = "kosli report approval" + command = "kosli assert artifact" stub_http_get(monkeypatch, [StubResponseStatusCode(400)]) actual_yaml_url = yaml_url(command, ci) assert actual_yaml_url == live_docs_modifiers_data.backup_yaml_url(command, ci) @@ -149,7 +149,7 @@ def test_aefa1419(monkeypatch): event_url returns backup-event-url when the command has no associated Trail event. """ ci = "github" - command = "kosli report approval" + command = "kosli fingerprint" actual_event_url = event_url(command, ci) assert actual_event_url == live_docs_modifiers_data.backup_event_url(command, ci) diff --git a/tutorials/cli_and_http_proxy.md b/tutorials/cli_and_http_proxy.md index 90cc13c..917e4eb 100644 --- a/tutorials/cli_and_http_proxy.md +++ b/tutorials/cli_and_http_proxy.md @@ -99,18 +99,6 @@ kosli attest junit \ --org ``` -**Request an approval through the proxy:** - -```shell -kosli request approval my-app:latest \ - --artifact-type docker \ - --flow my-flow \ - --description "Approve release to production" \ - --http-proxy http://localhost:8888 \ - --api-token \ - --org -``` - ## Persist the proxy configuration Rather than passing `--http-proxy` on every command, save it to your Kosli config: diff --git a/understand_kosli/controls.md b/understand_kosli/controls.md index c61e92f..6a4f42f 100644 --- a/understand_kosli/controls.md +++ b/understand_kosli/controls.md @@ -53,7 +53,7 @@ Release controls validate that software is ready for production. While build con | Code review | Insider threat, Unreviewed changes | Attestation (`pullrequest` type) | | Quality assurance | Vulnerable software in production | Attestation (`junit` type) | | Vulnerability scanning | Vulnerable software in production, Supply chain compromise | Attestation (`snyk` type) | -| Deployment approvals | Unauthorized deployment | Attestation (`approval` type) | +| Deployment approvals | Unauthorized deployment | Attestation (`generic` or custom type) | ### Runtime diff --git a/understand_kosli/glossary.md b/understand_kosli/glossary.md index 8a8d33c..f4d2aa7 100644 --- a/understand_kosli/glossary.md +++ b/understand_kosli/glossary.md @@ -11,7 +11,7 @@ A software deliverable (binary, container image, archive) reported to Kosli and ### Attestation -A record that a specific control or check was performed on an Artifact or Trail, along with its result. Built-in types include `snyk`, `junit`, `sonar`, `pullrequest`, and `approval`. Custom types support jq-based compliance evaluation. +A record that a specific control or check was performed on an Artifact or Trail, along with its result. Built-in types include `snyk`, `junit`, `sonar`, `pullrequest`, and `generic`. Custom types support jq-based compliance evaluation. ### Audit Package