[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AF6XAE4MM0Y9K0VDZZD2MX":3,"skill-same:01M6AF6XAE4MM0Y9K0VDZZD2MX":126},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":67,"commitSha":68,"skillDirectory":69,"forksCount":70,"repositoryHtmlUrl":71,"repositoryHomepageUrl":72,"ownerHtmlUrl":73,"ownerBlogUrl":74,"ownerDescription":75,"updatedAt":76,"install":77,"resources":90},"01M6AF6XAE4MM0Y9K0VDZZD2MX","implementing-image-provenance-verification-with-cosign",null,"Signs and verifies container image provenance with Sigstore Cosign, covering key-based and keyless OIDC signing (Fulcio, Rekor transparency log), SLSA attestations, and enforcing signature verification through Kubernetes admission control. Use when signing images for supply chain security, setting up keyless OIDC signing, attaching attestations, or enforcing a verified-images-only policy at admission. Keywords: Cosign, Sigstore, Fulcio, Rekor, keyless, attestation, cosign verify, admission policy. Do not use for in-toto layout-based pipeline attestation - use implementing-supply-chain-security-with-in-toto.","mukul975\u002FAnthropic-Cybersecurity-Skills","mukul975","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42860185?v=4","01M6ADEQR8T5M4EEG6C67BQCWF","Mahipal","01M6ADJPMYWG1E5GM1FWBE3128",35990,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"implementing image provenance verification with cosign","verification","image","pipeline","slsa","keyless","provenance","image-signing","cosign","attestation","t1195","supply-chain-security","supply-chain","container-security","pr","supply chain security","cybersecurity","policy","security","kubernetes","2026-11-10 10:12:30",false,"---\nname: implementing-image-provenance-verification-with-cosign\ndescription: >-\n  Signs and verifies container image provenance with Sigstore Cosign, covering key-based and\n  keyless OIDC signing (Fulcio, Rekor transparency log), SLSA attestations, and enforcing\n  signature verification through Kubernetes admission control. Use when signing images for\n  supply chain security, setting up keyless OIDC signing, attaching attestations, or enforcing\n  a verified-images-only policy at admission. Keywords: Cosign, Sigstore, Fulcio, Rekor,\n  keyless, attestation, cosign verify, admission policy. Do not use for in-toto layout-based\n  pipeline attestation - use implementing-supply-chain-security-with-in-toto.\ndomain: cybersecurity\nsubdomain: container-security\ntags:\n- cosign\n- sigstore\n- image-signing\n- supply-chain\n- provenance\n- keyless\n- slsa\nversion: '1.0'\nauthor: mahipal\nlicense: Apache-2.0\nnist_csf:\n- PR.PS-01\n- PR.IR-01\n- ID.AM-08\n- DE.CM-01\nmitre_attack:\n- T1610\n- T1611\n- T1609\n- T1525\n- T1195\n---\n\n# Implementing Image Provenance Verification with Cosign\n\n## Overview\n\nCosign is a Sigstore tool for signing, verifying, and attaching metadata to container images and OCI artifacts. It supports both key-based and keyless (OIDC) signing, integrates with Fulcio (certificate authority) and Rekor (transparency log), and enables supply chain security for container images.\n\n\n## When to Use\n\n- When deploying or configuring implementing image provenance verification with cosign capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n\n- Cosign CLI installed\n- Docker or Podman for building images\n- OCI-compliant container registry (Docker Hub, GHCR, GCR, ECR)\n- OIDC provider account (GitHub, Google, Microsoft) for keyless signing\n\n## Installing Cosign\n\n```bash\n# Install via Go\ngo install github.com\u002Fsigstore\u002Fcosign\u002Fv2\u002Fcmd\u002Fcosign@latest\n\n# Install via Homebrew\nbrew install cosign\n\n# Install via script\ncurl -O -L \"https:\u002F\u002Fgithub.com\u002Fsigstore\u002Fcosign\u002Freleases\u002Flatest\u002Fdownload\u002Fcosign-linux-amd64\"\nsudo mv cosign-linux-amd64 \u002Fusr\u002Flocal\u002Fbin\u002Fcosign\nsudo chmod +x \u002Fusr\u002Flocal\u002Fbin\u002Fcosign\n\n# Verify installation\ncosign version\n```\n\n## Key-Based Signing\n\n### Generate Key Pair\n\n```bash\n# Generate cosign key pair (creates cosign.key and cosign.pub)\ncosign generate-key-pair\n\n# Generate key pair stored in KMS\ncosign generate-key-pair --kms awskms:\u002F\u002F\u002Falias\u002Fcosign-key\ncosign generate-key-pair --kms gcpkms:\u002F\u002Fprojects\u002FPROJECT\u002Flocations\u002FLOCATION\u002FkeyRings\u002FKEYRING\u002FcryptoKeys\u002FKEY\ncosign generate-key-pair --kms hashivault:\u002F\u002Ftransit\u002Fkeys\u002Fcosign\n```\n\n### Sign Image with Key\n\n```bash\n# Sign an image\ncosign sign --key cosign.key ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# Sign with annotations\ncosign sign --key cosign.key \\\n  -a \"build-id=12345\" \\\n  -a \"git-sha=$(git rev-parse HEAD)\" \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n### Verify Image with Key\n\n```bash\n# Verify signature\ncosign verify --key cosign.pub ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# Verify with annotation check\ncosign verify --key cosign.pub \\\n  -a \"build-id=12345\" \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n## Keyless Signing (OIDC)\n\n### Sign with Keyless (Interactive)\n\n```bash\n# Keyless sign - opens browser for OIDC auth\ncosign sign ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# The signature, certificate, and Rekor entry are created automatically\n```\n\n### Sign with Keyless (CI\u002FCD - Non-Interactive)\n\n```bash\n# GitHub Actions (uses OIDC token automatically)\ncosign sign ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --yes\n\n# With explicit identity token\ncosign sign ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --identity-token=$(cat \u002Fvar\u002Frun\u002Fsigstore\u002Fcosign\u002Foidc-token) \\\n  --yes\n```\n\n### Verify Keyless Signature\n\n```bash\n# Verify by email identity\ncosign verify ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --certificate-identity=builder@example.com \\\n  --certificate-oidc-issuer=https:\u002F\u002Faccounts.google.com\n\n# Verify by GitHub Actions workflow\ncosign verify ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --certificate-identity=https:\u002F\u002Fgithub.com\u002Fmyorg\u002Fmyrepo\u002F.github\u002Fworkflows\u002Fbuild.yml@refs\u002Fheads\u002Fmain \\\n  --certificate-oidc-issuer=https:\u002F\u002Ftoken.actions.githubusercontent.com\n\n# Verify with regex matching\ncosign verify ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --certificate-identity-regexp=\".*@example.com\" \\\n  --certificate-oidc-issuer=https:\u002F\u002Faccounts.google.com\n```\n\n## Attestations (SLSA Provenance)\n\n### Attach SBOM Attestation\n\n```bash\n# Generate SBOM\nsyft ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 -o cyclonedx-json > sbom.cdx.json\n\n# Attach SBOM as attestation\ncosign attest --key cosign.key \\\n  --type cyclonedx \\\n  --predicate sbom.cdx.json \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# Verify attestation\ncosign verify-attestation --key cosign.pub \\\n  --type cyclonedx \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n### Attach Vulnerability Scan Attestation\n\n```bash\n# Run scan and save results\ngrype ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 -o json > vuln-scan.json\n\n# Attach scan results as attestation\ncosign attest --key cosign.key \\\n  --type vuln \\\n  --predicate vuln-scan.json \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n### SLSA Provenance Attestation\n\n```bash\n# Attach SLSA provenance\ncosign attest --key cosign.key \\\n  --type slsaprovenance \\\n  --predicate provenance.json \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# Verify SLSA provenance\ncosign verify-attestation --key cosign.pub \\\n  --type slsaprovenance \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n## CI\u002FCD Integration\n\n### GitHub Actions\n\n```yaml\nname: Sign and Publish\non:\n  push:\n    tags: ['v*']\n\npermissions:\n  contents: read\n  packages: write\n  id-token: write  # Required for keyless signing\n\njobs:\n  build-sign:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - uses: sigstore\u002Fcosign-installer@v3\n\n      - name: Login to GHCR\n        uses: docker\u002Flogin-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Build and push\n        id: build\n        uses: docker\u002Fbuild-push-action@v5\n        with:\n          push: true\n          tags: ghcr.io\u002F${{ github.repository }}:${{ github.ref_name }}\n\n      - name: Sign image (keyless)\n        run: |\n          cosign sign --yes \\\n            ghcr.io\u002F${{ github.repository }}@${{ steps.build.outputs.digest }}\n\n      - name: Generate and attach SBOM\n        run: |\n          syft ghcr.io\u002F${{ github.repository }}@${{ steps.build.outputs.digest }} -o cyclonedx-json > sbom.json\n          cosign attest --yes \\\n            --type cyclonedx \\\n            --predicate sbom.json \\\n            ghcr.io\u002F${{ github.repository }}@${{ steps.build.outputs.digest }}\n```\n\n## Kubernetes Admission Enforcement\n\n### Policy Controller (Sigstore)\n\n```bash\n# Install policy-controller\nhelm repo add sigstore https:\u002F\u002Fsigstore.github.io\u002Fhelm-charts\nhelm install policy-controller sigstore\u002Fpolicy-controller \\\n  --namespace cosign-system --create-namespace\n```\n\n```yaml\n# Enforce signed images in namespace\napiVersion: policy.sigstore.dev\u002Fv1beta1\nkind: ClusterImagePolicy\nmetadata:\n  name: require-signed-images\nspec:\n  images:\n    - glob: \"ghcr.io\u002Fmyorg\u002F**\"\n  authorities:\n    - keyless:\n        url: https:\u002F\u002Ffulcio.sigstore.dev\n        identities:\n          - issuer: https:\u002F\u002Ftoken.actions.githubusercontent.com\n            subjectRegExp: \"https:\u002F\u002Fgithub.com\u002Fmyorg\u002F.*\"\n      ctlog:\n        url: https:\u002F\u002Frekor.sigstore.dev\n```\n\n### Kyverno Integration\n\n```yaml\napiVersion: kyverno.io\u002Fv1\nkind: ClusterPolicy\nmetadata:\n  name: verify-image-signature\nspec:\n  validationFailureAction: Enforce\n  rules:\n    - name: verify-cosign-signature\n      match:\n        any:\n          - resources:\n              kinds: [\"Pod\"]\n      verifyImages:\n        - imageReferences:\n            - \"ghcr.io\u002Fmyorg\u002F*\"\n          attestors:\n            - entries:\n                - keyless:\n                    subject: \"https:\u002F\u002Fgithub.com\u002Fmyorg\u002F*\"\n                    issuer: \"https:\u002F\u002Ftoken.actions.githubusercontent.com\"\n                    rekor:\n                      url: https:\u002F\u002Frekor.sigstore.dev\n```\n\n## Transparency Log (Rekor)\n\n```bash\n# Search Rekor for image signatures\nrekor-cli search --email builder@example.com\n\n# Get specific entry\nrekor-cli get --uuid \u003Centry-uuid>\n\n# Verify entry inclusion\ncosign verify ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --certificate-identity=builder@example.com \\\n  --certificate-oidc-issuer=https:\u002F\u002Faccounts.google.com\n```\n\n## Best Practices\n\n1. **Use keyless signing** in CI\u002FCD for automated pipelines\n2. **Sign by digest** not by tag for immutable references\n3. **Attach SBOM attestations** alongside signatures\n4. **Enforce signatures** at admission with policy-controller or Kyverno\n5. **Use OIDC identity** verification instead of just key verification\n6. **Store keys in KMS** (AWS KMS, GCP KMS, HashiCorp Vault) for key-based signing\n7. **Verify the full chain**: signature + certificate + Rekor inclusion\n8. **Include build metadata** as annotations on signatures\n","# Implementing Image Provenance Verification with Cosign\n\n## Overview\n\nCosign is a Sigstore tool for signing, verifying, and attaching metadata to container images and OCI artifacts. It supports both key-based and keyless (OIDC) signing, integrates with Fulcio (certificate authority) and Rekor (transparency log), and enables supply chain security for container images.\n\n\n## When to Use\n\n- When deploying or configuring implementing image provenance verification with cosign capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n\n- Cosign CLI installed\n- Docker or Podman for building images\n- OCI-compliant container registry (Docker Hub, GHCR, GCR, ECR)\n- OIDC provider account (GitHub, Google, Microsoft) for keyless signing\n\n## Installing Cosign\n\n```bash\n# Install via Go\ngo install github.com\u002Fsigstore\u002Fcosign\u002Fv2\u002Fcmd\u002Fcosign@latest\n\n# Install via Homebrew\nbrew install cosign\n\n# Install via script\ncurl -O -L \"https:\u002F\u002Fgithub.com\u002Fsigstore\u002Fcosign\u002Freleases\u002Flatest\u002Fdownload\u002Fcosign-linux-amd64\"\nsudo mv cosign-linux-amd64 \u002Fusr\u002Flocal\u002Fbin\u002Fcosign\nsudo chmod +x \u002Fusr\u002Flocal\u002Fbin\u002Fcosign\n\n# Verify installation\ncosign version\n```\n\n## Key-Based Signing\n\n### Generate Key Pair\n\n```bash\n# Generate cosign key pair (creates cosign.key and cosign.pub)\ncosign generate-key-pair\n\n# Generate key pair stored in KMS\ncosign generate-key-pair --kms awskms:\u002F\u002F\u002Falias\u002Fcosign-key\ncosign generate-key-pair --kms gcpkms:\u002F\u002Fprojects\u002FPROJECT\u002Flocations\u002FLOCATION\u002FkeyRings\u002FKEYRING\u002FcryptoKeys\u002FKEY\ncosign generate-key-pair --kms hashivault:\u002F\u002Ftransit\u002Fkeys\u002Fcosign\n```\n\n### Sign Image with Key\n\n```bash\n# Sign an image\ncosign sign --key cosign.key ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# Sign with annotations\ncosign sign --key cosign.key \\\n  -a \"build-id=12345\" \\\n  -a \"git-sha=$(git rev-parse HEAD)\" \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n### Verify Image with Key\n\n```bash\n# Verify signature\ncosign verify --key cosign.pub ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# Verify with annotation check\ncosign verify --key cosign.pub \\\n  -a \"build-id=12345\" \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n## Keyless Signing (OIDC)\n\n### Sign with Keyless (Interactive)\n\n```bash\n# Keyless sign - opens browser for OIDC auth\ncosign sign ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# The signature, certificate, and Rekor entry are created automatically\n```\n\n### Sign with Keyless (CI\u002FCD - Non-Interactive)\n\n```bash\n# GitHub Actions (uses OIDC token automatically)\ncosign sign ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --yes\n\n# With explicit identity token\ncosign sign ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --identity-token=$(cat \u002Fvar\u002Frun\u002Fsigstore\u002Fcosign\u002Foidc-token) \\\n  --yes\n```\n\n### Verify Keyless Signature\n\n```bash\n# Verify by email identity\ncosign verify ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --certificate-identity=builder@example.com \\\n  --certificate-oidc-issuer=https:\u002F\u002Faccounts.google.com\n\n# Verify by GitHub Actions workflow\ncosign verify ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --certificate-identity=https:\u002F\u002Fgithub.com\u002Fmyorg\u002Fmyrepo\u002F.github\u002Fworkflows\u002Fbuild.yml@refs\u002Fheads\u002Fmain \\\n  --certificate-oidc-issuer=https:\u002F\u002Ftoken.actions.githubusercontent.com\n\n# Verify with regex matching\ncosign verify ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --certificate-identity-regexp=\".*@example.com\" \\\n  --certificate-oidc-issuer=https:\u002F\u002Faccounts.google.com\n```\n\n## Attestations (SLSA Provenance)\n\n### Attach SBOM Attestation\n\n```bash\n# Generate SBOM\nsyft ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 -o cyclonedx-json > sbom.cdx.json\n\n# Attach SBOM as attestation\ncosign attest --key cosign.key \\\n  --type cyclonedx \\\n  --predicate sbom.cdx.json \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# Verify attestation\ncosign verify-attestation --key cosign.pub \\\n  --type cyclonedx \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n### Attach Vulnerability Scan Attestation\n\n```bash\n# Run scan and save results\ngrype ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 -o json > vuln-scan.json\n\n# Attach scan results as attestation\ncosign attest --key cosign.key \\\n  --type vuln \\\n  --predicate vuln-scan.json \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n### SLSA Provenance Attestation\n\n```bash\n# Attach SLSA provenance\ncosign attest --key cosign.key \\\n  --type slsaprovenance \\\n  --predicate provenance.json \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n\n# Verify SLSA provenance\ncosign verify-attestation --key cosign.pub \\\n  --type slsaprovenance \\\n  ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0\n```\n\n## CI\u002FCD Integration\n\n### GitHub Actions\n\n```yaml\nname: Sign and Publish\non:\n  push:\n    tags: ['v*']\n\npermissions:\n  contents: read\n  packages: write\n  id-token: write  # Required for keyless signing\n\njobs:\n  build-sign:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - uses: sigstore\u002Fcosign-installer@v3\n\n      - name: Login to GHCR\n        uses: docker\u002Flogin-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Build and push\n        id: build\n        uses: docker\u002Fbuild-push-action@v5\n        with:\n          push: true\n          tags: ghcr.io\u002F${{ github.repository }}:${{ github.ref_name }}\n\n      - name: Sign image (keyless)\n        run: |\n          cosign sign --yes \\\n            ghcr.io\u002F${{ github.repository }}@${{ steps.build.outputs.digest }}\n\n      - name: Generate and attach SBOM\n        run: |\n          syft ghcr.io\u002F${{ github.repository }}@${{ steps.build.outputs.digest }} -o cyclonedx-json > sbom.json\n          cosign attest --yes \\\n            --type cyclonedx \\\n            --predicate sbom.json \\\n            ghcr.io\u002F${{ github.repository }}@${{ steps.build.outputs.digest }}\n```\n\n## Kubernetes Admission Enforcement\n\n### Policy Controller (Sigstore)\n\n```bash\n# Install policy-controller\nhelm repo add sigstore https:\u002F\u002Fsigstore.github.io\u002Fhelm-charts\nhelm install policy-controller sigstore\u002Fpolicy-controller \\\n  --namespace cosign-system --create-namespace\n```\n\n```yaml\n# Enforce signed images in namespace\napiVersion: policy.sigstore.dev\u002Fv1beta1\nkind: ClusterImagePolicy\nmetadata:\n  name: require-signed-images\nspec:\n  images:\n    - glob: \"ghcr.io\u002Fmyorg\u002F**\"\n  authorities:\n    - keyless:\n        url: https:\u002F\u002Ffulcio.sigstore.dev\n        identities:\n          - issuer: https:\u002F\u002Ftoken.actions.githubusercontent.com\n            subjectRegExp: \"https:\u002F\u002Fgithub.com\u002Fmyorg\u002F.*\"\n      ctlog:\n        url: https:\u002F\u002Frekor.sigstore.dev\n```\n\n### Kyverno Integration\n\n```yaml\napiVersion: kyverno.io\u002Fv1\nkind: ClusterPolicy\nmetadata:\n  name: verify-image-signature\nspec:\n  validationFailureAction: Enforce\n  rules:\n    - name: verify-cosign-signature\n      match:\n        any:\n          - resources:\n              kinds: [\"Pod\"]\n      verifyImages:\n        - imageReferences:\n            - \"ghcr.io\u002Fmyorg\u002F*\"\n          attestors:\n            - entries:\n                - keyless:\n                    subject: \"https:\u002F\u002Fgithub.com\u002Fmyorg\u002F*\"\n                    issuer: \"https:\u002F\u002Ftoken.actions.githubusercontent.com\"\n                    rekor:\n                      url: https:\u002F\u002Frekor.sigstore.dev\n```\n\n## Transparency Log (Rekor)\n\n```bash\n# Search Rekor for image signatures\nrekor-cli search --email builder@example.com\n\n# Get specific entry\nrekor-cli get --uuid \u003Centry-uuid>\n\n# Verify entry inclusion\ncosign verify ghcr.io\u002Fmyorg\u002Fmyapp:v1.0.0 \\\n  --certificate-identity=builder@example.com \\\n  --certificate-oidc-issuer=https:\u002F\u002Faccounts.google.com\n```\n\n## Best Practices\n\n1. **Use keyless signing** in CI\u002FCD for automated pipelines\n2. **Sign by digest** not by tag for immutable references\n3. **Attach SBOM attestations** alongside signatures\n4. **Enforce signatures** at admission with policy-controller or Kyverno\n5. **Use OIDC identity** verification instead of just key verification\n6. **Store keys in KMS** (AWS KMS, GCP KMS, HashiCorp Vault) for key-based signing\n7. **Verify the full chain**: signature + certificate + Rekor inclusion\n8. **Include build metadata** as annotations on signatures\n",{"name":5,"tags":52,"author":54,"domain":43,"license":15,"version":55,"nist_csf":56,"subdomain":40,"description":7,"mitre_attack":61},[35,53,34,39,33,32,31],"sigstore","mahipal","1.0",[57,58,59,60],"PR.PS-01","PR.IR-01","ID.AM-08","DE.CM-01",[62,63,64,65,66],"T1610","T1611","T1609","T1525","T1195","main","54a798831d2266a3ca61ce68a7acb80b81160d57","skills\u002Fimplementing-image-provenance-verification-with-cosign",4395,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills","https:\u002F\u002Fmahipal.engineer\u002FAnthropic-Cybersecurity-Skills\u002F","https:\u002F\u002Fgithub.com\u002Fmukul975","Mahipal.engineer","🔐 Cybersecurity | 💻 Dev | 📷 Street Photographer\r\n🎓 MSc | 📚 Research & AI Security","2026-08-31 12:32:44",{"source":8,"skillName":5,"commands":78,"prompt":88,"zipAvailable":89},[79,82,85],{"tool":80,"command":81},"npx","npx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill implementing-image-provenance-verification-with-cosign",{"tool":83,"command":84},"bunx","bunx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill implementing-image-provenance-verification-with-cosign",{"tool":86,"command":87},"pnpm","pnpm dlx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill implementing-image-provenance-verification-with-cosign","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002FSKILL.md",true,[91,97,102,108,112,116,122],{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"assets\u002Ftemplate.md","ASSET","资产文件",1358,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002Fassets\u002Ftemplate.md",{"path":98,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":100,"sourceHtmlUrl":101},"LICENSE","许可证",11255,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002FLICENSE",{"path":103,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fapi-reference.md","REFERENCE","参考文档",1939,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002Freferences\u002Fapi-reference.md",{"path":109,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":110,"sourceHtmlUrl":111},"references\u002Fstandards.md",1361,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002Freferences\u002Fstandards.md",{"path":113,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":114,"sourceHtmlUrl":115},"references\u002Fworkflows.md",1245,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002Freferences\u002Fworkflows.md",{"path":117,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Fagent.py","SCRIPT","脚本",7704,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002Fscripts\u002Fagent.py",{"path":123,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":124,"sourceHtmlUrl":125},"scripts\u002Fprocess.py",6157,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-image-provenance-verification-with-cosign\u002Fscripts\u002Fprocess.py",[127,144,166,194,220,247],{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":136,"publishedAt":47},"01M6AGDM3HJXTKXX15ZZ0ZVCJ3","verifying-build-provenance-with-slsa-sigstore","Verifies artifact signatures and SLSA provenance using Sigstore's cosign (verify, verify-attestation, verify-blob-attestation) and slsa-verifier (verify-artifact), enforcing keyless OIDC builder identity and source repo against SLSA Build levels. Use in CI\u002FCD before deploying artifacts, when consuming third-party attestations, establishing a SLSA Build L3 pipeline, or confirming provenance during incident response or admission control.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fverifying-build-provenance-with-slsa-sigstore\u002FSKILL.md",[133],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[53,33,31,137,45,43,138,139,41,140,141,142,39,30,38,37,36,143,35,32],"verifying build provenance with slsa sigstore","incident response","identity","code","artifacts","ci","code-signing",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":151,"publishedAt":47},"01M6AGDGBPWYVZ2F11GFKJ4HZ9","validating-tpm-measured-boot-attestation","Verifies TPM 2.0 measured-boot integrity and remote attestation with tpm2-tools -- reading PCRs (tpm2_pcrread), replaying the boot event log, generating and checking signed quotes (tpm2_quote\u002Ftpm2_checkquote), and sealing secrets to a PCR policy. Use to confirm a system booted trusted firmware\u002Fkernel for Zero Trust device posture, detect boot-chain tampering via PCR drift, or build a golden-value baseline for fleet attestation.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fvalidating-tpm-measured-boot-attestation\u002FSKILL.md",[150],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},[152,36,153,154,45,44,43,41,28,155,156,157,158,159,160,161,162,163,164,165],"boot","TPM","validating tpm measured boot attestation","ZeRO","firmware","Tools","measured-boot","PCR","integrity","secrets","remote-attestation","tpm2-tools","integrity-verification","trusted-computing",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":176,"publishedAt":47},"01M6AGDCW0Y4FXZ3362GT1941M","validating-backup-integrity-for-recovery","Validates backup integrity through cryptographic hash verification, automated restore testing, corruption detection, and recoverability checks to confirm backups are reliable for disaster recovery and ransomware response. Use before relying on backups for recovery, when building post-backup validation pipelines, auditing backup infrastructure for compliance, or checking immutable\u002Fair-gapped backups for silent corruption or tampering.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fvalidating-backup-integrity-for-recovery\u002FSKILL.md",[172,175],{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},[160,177,178,179,180,43,181,182,28,183,184,185,186,187,188,189,190,191,192,193],"backup","recovery","validating backup integrity for recovery","testing","infrastructure","validation","compliance","hash-verification","incident-response","ransomware","cryptocurrency","detection","t1078","t1490","immutable","disaster-recovery","restore-testing",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":201,"publishedAt":47},"01M6AGD9GBG2KZ336AE763J3WH","triaging-windows-with-kape","Runs KAPE (Kroll Artifact Parser and Extractor) to collect targeted forensic artifacts (registry hives, $MFT, event logs, prefetch, browser data) via Targets and parse them with Modules wrapping Eric Zimmerman's EZ Tools (PECmd, MFTECmd, RECmd). Use during early incident containment\u002Ftriage when full disk imaging is impractical but a defensible, parseable Windows artifact set is needed quickly, including at-scale remote collection.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-windows-with-kape\u002FSKILL.md",[200],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},[202,203,204,43,205,206,207,208,209,210,211,212,213,214,215,216,157,217,218,219],"windows","kape","triaging windows with kape","registry","browser","logs","windows-forensics","dfir","mft","mftecmd","data","prefetch","eric-zimmerman","digital-forensics","SET","collection","pecmd","artifact-collection",{"skillNo":221,"name":222,"nameZh":6,"description":223,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":224,"categories":225,"keywords":227,"publishedAt":47},"01M6AGD5PW5J4EVZM958WD74ZQ","triaging-vulnerabilities-with-ssvc-framework","Triages and prioritizes vulnerabilities with CISA's Stakeholder-Specific Vulnerability Categorization (SSVC) decision tree, weighing exploitation status (via the CISA KEV catalog and FIRST EPSS API), technical impact, automatability, and mission prevalence to output Track\u002FTrack*\u002FAttend\u002FAct decisions. Use when prioritizing vulnerability scan results (OpenVAS, Nessus, Qualys) for remediation planning beyond raw CVSS scores.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-vulnerabilities-with-ssvc-framework\u002FSKILL.md",[226],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},[228,229,230,43,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246],"vulnerabilities","framework","triaging vulnerabilities with ssvc framework","status","planning","CISA","vulnerability-management","risk-management","nessus","qualys","openvas","cvss","remediation","risk","vulnerability","api","prioritization","ssvc","decision-tree",{"skillNo":248,"name":249,"nameZh":6,"description":250,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":251,"categories":252,"keywords":254,"publishedAt":47},"01M6AGD24TTQQM4CXG69E3B9TJ","triaging-security-incident","Performs initial triage of security incidents using the NIST SP 800-61r3 and SANS PICERL frameworks, classifying incident type, assigning priority by business impact, and routing to the appropriate response team. Use when a SIEM\u002FEDR alert needs human classification, concurrent alerts must be prioritized, or a user report or threat-intel IOC match requires initial incident categorization.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-security-incident\u002FSKILL.md",[253],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},[45,255,43,256,257,258,259,260,261,262,263,189,264,190,265,266,267,268,269,270],"triaging security incident","siem","file","ioc","soc","NIST-800-61","NIST","severity","edr","execution","analysis","classification","severity-classification","incident-triage","SANS-PICERL","SOC-operations"]