<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Procedural on</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/tags/procedural/</link><description>Recent content in Procedural on</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Copyright (c) 2023 Chainguard</copyright><lastBuildDate>Fri, 15 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/tags/procedural/index.xml" rel="self" type="application/rss+xml"/><item><title>How to Install Sigstore Policy Controller</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/how-to-install-policy-controller/</link><pubDate>Tue, 21 Feb 2023 13:11:29 +0829</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/how-to-install-policy-controller/</guid><description>&lt;p&gt;The &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; is a Kubernetes &lt;a href="https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/"&gt;admission controller&lt;/a&gt; that can verify image signatures and policies. You can define policies using the &lt;a href="https://cuelang.org/"&gt;CUE&lt;/a&gt; or &lt;a href="https://www.openpolicyagent.org/docs/latest/policy-language/"&gt;Rego&lt;/a&gt; policy languages.&lt;/p&gt;
&lt;p&gt;This guide will demonstrate how to install the Policy Controller in your Kubernetes cluster and enable policy enforcement.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow along with this guide, you will need the following:&lt;/p&gt;</description></item><item><title>How to Install the Rekor CLI</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/how-to-install-rekor/</link><pubDate>Sat, 20 Aug 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/how-to-install-rekor/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@e785fae1be184e2c929db62dbe7444fa/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@a48c33126e2c4ee6ad3bfa6b7bc9c957"&gt;Rekor chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Follow this tutorial for an overview of how to install &lt;code&gt;rekor-cli&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To install the Rekor command line interface (rekor-cli) with Go, you will need Go version 1.16 or greater. For Go installation instructions, see the &lt;a href="https://go.dev/doc/install"&gt;official Go documentation&lt;/a&gt;. If you have Go installed already, you can check your Go version via this command.&lt;/p&gt;
&lt;pre class="highlight" data-language="sh"&gt;&lt;code class="language-sh" data-lang="sh"&gt;go version&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If Go is installed, you&amp;rsquo;ll receive output similar to the following.&lt;/p&gt;</description></item><item><title>How to Install Cosign</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-install-cosign/</link><pubDate>Wed, 13 Jul 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-install-cosign/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@204b98f35bca48c194d1868e0356bef1/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@2f0ad9cb8f124a39ab555ac8bf1a114c"&gt;Cosign chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cosign supports software artifact signing, verification, and storage in an OCI (Open Container Initiative) registry. By signing software, you can authenticate that you are who you say you are, which can in turn enable a trust root so that developers and consumers who leverage your software can verify that you created the software artifact that you have said you’ve created. They can also ensure that that artifact was not tampered with by a third party. As someone who may use software libraries, containers, or other artifacts as part of your development lifecycle, a signed artifact can give you greater assurance that the code or container you are incorporating is from a trusted source.&lt;/p&gt;</description></item><item><title>How to Query Rekor</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/how-to-query-rekor/</link><pubDate>Sat, 20 Aug 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/how-to-query-rekor/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@e785fae1be184e2c929db62dbe7444fa/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@a48c33126e2c4ee6ad3bfa6b7bc9c957"&gt;Rekor chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Rekor is the transparency log of Sigstore, which stores records of artifact metadata. Before querying Rekor, you should have the &lt;code&gt;rekor-cli&lt;/code&gt; installed, which you can achieve by following the &amp;ldquo;&lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/how-to-install-rekor/"&gt;How to Install the Rekor CLI&lt;/a&gt;&amp;rdquo; tutorial.&lt;/p&gt;
&lt;p&gt;In order to access the data stored in Rekor, the &lt;code&gt;rekor-cli&lt;/code&gt; requires either the log index of an entry or the UUID of a software artifact.&lt;/p&gt;</description></item><item><title>How to Sign a Container with Cosign</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-sign-a-container-with-cosign/</link><pubDate>Wed, 13 Jul 2022 13:26:54 +0100</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-sign-a-container-with-cosign/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@204b98f35bca48c194d1868e0356bef1/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@2f0ad9cb8f124a39ab555ac8bf1a114c"&gt;Cosign chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cosign is a tool you can use to sign software artifacts, which in turn allows you to verify that you are who you say you are, instilling trust across the software ecosystem. Signing software also allows people to understand the provenance of the software, and prevents tampering.&lt;/p&gt;
&lt;p&gt;Let’s step through signing a container with Cosign. We are using a container to provide a sense of how you may use Sigstore with containerized workloads, but the steps we are taking to sign a container are very similar to the steps that we would take to sign any other software artifact that can be published in a container registry, and we will discuss signing blobs a little later.&lt;/p&gt;</description></item><item><title>How to Sign and Upload Metadata to Rekor</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/how-to-sign-and-upload-metadata-to-rekor/</link><pubDate>Sat, 20 Aug 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/how-to-sign-and-upload-metadata-to-rekor/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@e785fae1be184e2c929db62dbe7444fa/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@a48c33126e2c4ee6ad3bfa6b7bc9c957"&gt;Rekor chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This tutorial will walk you through signing and uploading metadata to the Rekor transparency log, which is a project of Sigstore. In order to follow along, you&amp;rsquo;ll need the &lt;code&gt;rekor-cli&lt;/code&gt; installed, which you can accomplish by following the &amp;ldquo;&lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/how-to-install-rekor/"&gt;How to Install the Rekor CLI&lt;/a&gt;&amp;rdquo; tutorial.&lt;/p&gt;
&lt;p&gt;We will use SSH to sign a text document. SSH is often used to communicate securely over an unsecured network and can also be used to generate public and private keys appropriate for signing an artifact.&lt;/p&gt;</description></item><item><title>How to Sign Blobs and Standard Files with Cosign</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-sign-blobs-with-cosign/</link><pubDate>Wed, 13 Jul 2022 15:22:20 +0100</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-sign-blobs-with-cosign/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@204b98f35bca48c194d1868e0356bef1/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@2f0ad9cb8f124a39ab555ac8bf1a114c"&gt;Cosign chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cosign can sign more than just containers. Blobs, or binary large objects, and standard files can be signed in a similar way. You can publish a blob or other artifact to an OCI (Open Container Initiative) registry with Cosign. This tutorial assumes you have a Cosign key pair set up, which you can achieve by following our &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/an-introduction-to-cosign/"&gt;Introduction to Cosign&lt;/a&gt; guide.&lt;/p&gt;</description></item><item><title>How to Set Up An Instance of Rekor Instance Locally</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/install-a-rekor-instance/</link><pubDate>Sat, 20 Aug 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/rekor/install-a-rekor-instance/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@e785fae1be184e2c929db62dbe7444fa/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@a48c33126e2c4ee6ad3bfa6b7bc9c957"&gt;Rekor chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;While individual developers may not generally need to set up their own instance of Rekor, it may be worthwhile to set up your own local instance in order to further understand how Rekor works under the hood. We will have multiple terminal sessions running to set up the Rekor server. You may want to use a tool such as &lt;a href="https://github.com/tmux/tmux/wiki"&gt;tmux&lt;/a&gt; to keep terminal sessions running in the background within the same window.&lt;/p&gt;</description></item><item><title>How to Sign an SBOM with Cosign</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-sign-an-sbom-with-cosign/</link><pubDate>Wed, 13 Jul 2022 15:22:20 +0100</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-sign-an-sbom-with-cosign/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@204b98f35bca48c194d1868e0356bef1/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@2f0ad9cb8f124a39ab555ac8bf1a114c"&gt;Cosign chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/sigstore/cosign"&gt;Cosign&lt;/a&gt;, developed as part of the &lt;a href="https://www.sigstore.dev/"&gt;Sigstore project&lt;/a&gt;, is a command line utility for signing, verifying, storing, and retrieving software artifacts through interface with an OCI (Open Container Initiative) registry. Cosign can be used to sign attestations, or a verifiable assertion or statement about a software artifact.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;What is an Attestation?&lt;/summary&gt;
&lt;p&gt;An attestation is a cryptographically verifiable statement about a software artifact. Attestations include a subject, a software artifact or artifacts to which the attestation applies, and a predicate, a claim or proposition about the subject. For example, an attestation might assert that a specific container image was built on a specific date using a specific configuration, and that assertion could be cryptographically verified as issuing from a specific organization or entity.&lt;/p&gt;</description></item><item><title>Disallowing Non-Default Capabilities</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/disallowing-non-default-capabilities-with-policy-controller/</link><pubDate>Thu, 02 Mar 2023 13:11:29 +0829</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/disallowing-non-default-capabilities-with-policy-controller/</guid><description>&lt;p&gt;This guide demonstrates how to use the &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; to prevent running containers with extra capabilities. You will create a &lt;code&gt;ClusterImagePolicy&lt;/code&gt; that uses the &lt;a href="https://cuelang.org/"&gt;CUE&lt;/a&gt; language to examine a pod spec, and only allow admission into a cluster if the pod is running with one or many &lt;a href="https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container"&gt;Linux capabilities&lt;/a&gt; from defined set of safe capabilities flags.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow along with this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Disallowing Privileged Pods</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/disallowing-privileged-containers-with-policy-controller/</link><pubDate>Thu, 02 Mar 2023 13:11:29 +0829</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/disallowing-privileged-containers-with-policy-controller/</guid><description>&lt;p&gt;This guide demonstrates how to use the &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; to prevent running containers with elevated privileges. You will create a &lt;code&gt;ClusterImagePolicy&lt;/code&gt; that uses the &lt;a href="https://cuelang.org/"&gt;CUE&lt;/a&gt; language to examine a pod spec, and only allow admission into a cluster if the pod is running without the &lt;code&gt;privileged: true&lt;/code&gt; setting.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow along with this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Disallowing Run as Root User</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/disallowing-run-as-root-user-with-policy-controller/</link><pubDate>Thu, 02 Mar 2023 13:11:29 +0829</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/disallowing-run-as-root-user-with-policy-controller/</guid><description>&lt;p&gt;This guide demonstrates how to use the &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; to prevent running containers as the &lt;code&gt;root&lt;/code&gt; user in a Kubernetes cluster. You will create a &lt;code&gt;ClusterImagePolicy&lt;/code&gt; that uses the &lt;a href="https://cuelang.org/"&gt;CUE&lt;/a&gt; language to examine a pod spec, and only allow admission into a cluster if the pod is running as a non-root user.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow along with this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Maximum Container Image Age</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/maximum-image-age-policy-controller/</link><pubDate>Thu, 02 Mar 2023 13:11:29 +0829</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/maximum-image-age-policy-controller/</guid><description>&lt;p&gt;This guide demonstrates how to use the &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; to verify image signatures before admitting an image into a Kubernetes cluster. In this guide, you will create a &lt;code&gt;ClusterImagePolicy&lt;/code&gt; that checks the maximum age of a container image verifying that isn’t older than 30 days. For that, we’ll attempt to create two distroless images one older than 30 days and a fresh one.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow along with this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Disallowing Unsafe sysctls</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/disallowing-unsafe-sysctls-with-policy-controller/</link><pubDate>Wed, 01 Mar 2023 13:11:29 +0829</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/disallowing-unsafe-sysctls-with-policy-controller/</guid><description>&lt;p&gt;This guide demonstrates how to use the &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; to only allow pods that use &lt;code&gt;sysctls&lt;/code&gt; to modify kernel behaviour to run with the &lt;a href="https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/#safe-and-unsafe-sysctls"&gt;safe set&lt;/a&gt; of parameters. You will create a &lt;code&gt;ClusterImagePolicy&lt;/code&gt; that uses the &lt;a href="https://cuelang.org/"&gt;CUE&lt;/a&gt; language to examine a pod spec that uses sysctls, and only allow admission into a cluster if the pod is running a safe set parameters.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow along with this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Verify Signed Chainguard Containers</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/using-policy-controller-to-verify-signed-chainguard-images/</link><pubDate>Wed, 22 Feb 2023 13:11:29 +0829</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/using-policy-controller-to-verify-signed-chainguard-images/</guid><description>&lt;p&gt;This guide demonstrates how to use the &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; to verify image signatures before admitting an image into a Kubernetes cluster. In this guide, you will create a &lt;code&gt;ClusterImagePolicy&lt;/code&gt; that checks for a keyless Cosign image signature, and then test the admission controller by running a signed &lt;code&gt;nginx&lt;/code&gt; image.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To follow along with this guide, you will need the following:&lt;/p&gt;</description></item><item><title>How to Verify File Signatures with Cosign</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-verify-file-signatures-with-cosign/</link><pubDate>Wed, 21 Dec 2022 15:22:20 +0100</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-verify-file-signatures-with-cosign/</guid><description>&lt;p&gt;Cosign can be used to verify binary artifacts (&amp;ldquo;blobs&amp;rdquo;) using provided signatures as long as they are published to an OCI registry. In this tutorial, we’ll verify a binary artifact — in this case, a release of &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/apko/overview/"&gt;&lt;code&gt;apko&lt;/code&gt;&lt;/a&gt;, a command-line tool for building container images using a declarative language based on YAML. The methods in this tutorial apply to any blob file Cosign has signed with a keyless signature.&lt;/p&gt;
&lt;p&gt;This tutorial assumes you &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-install-cosign/"&gt;have Cosign installed&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Using chainctl to Manage Custom Assembly Resources</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-chainctl/</link><pubDate>Thu, 01 May 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-chainctl/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/"&gt;Custom Assembly&lt;/a&gt; is a tool that allows customers to create customized containers with extra packages and annotations added. This enables customers to reduce their risk exposure by creating container images that are tailored to their internal organization and application requirements while still having few-to-zero CVEs.&lt;/p&gt;
&lt;p&gt;You can use &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainctl/"&gt;&lt;code&gt;chainctl&lt;/code&gt;, Chainguard&amp;rsquo;s command-line interface tool&lt;/a&gt;, to further customize your Custom Assembly builds and retrieve information about them. This guide provides an overview of the relevant &lt;code&gt;chainctl&lt;/code&gt; commands and outlines how you can edit the configuration of Custom Assembly containers, as well as retrieve a list of a customized image&amp;rsquo;s builds and its build logs.&lt;/p&gt;</description></item><item><title>Subscribing to Chainguard CloudEvents</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/cloudevents/events-example/</link><pubDate>Thu, 24 Apr 2025 15:22:20 +0100</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/cloudevents/events-example/</guid><description>&lt;p&gt;Chainguard implements &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/cloudevents/events-reference/"&gt;CloudEvents&lt;/a&gt;, a specification for a standard format for events data. This means developers can use events (generated based on interactions with Chainguard resources) to initiate processes and thus automate certain actions. For example, you could set up infrastructure to listen for push events to an organization&amp;rsquo;s private registry and &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/cloudevents/image-copy-gcr/"&gt;mirror any new Chainguard Containers in the registry to a third-party repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This article includes an example of how to use &lt;code&gt;chainctl&lt;/code&gt; to create an event subscription. It also includes details on how to validate events from Chainguard and highlights some potential use cases for them. This article is primarily focused on Registry &lt;code&gt;push&lt;/code&gt; and &lt;code&gt;pull&lt;/code&gt; events. &lt;em&gt;Push&lt;/em&gt; events occur when an image in your entitlement is added or updated. &lt;em&gt;Pull&lt;/em&gt; events occur when an image is pulled from your Chainguard repository. Be aware, though, that there are also events related to IAM, such as user creation and adding identity providers.&lt;/p&gt;</description></item><item><title>How to Pull Packages from Chainguard Package Repositories through Artifactory</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/artifactory/artifactory-packages-pull-through/</link><pubDate>Thu, 14 Nov 2024 15:56:52 -0700</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/chainguard-registry/pull-through-guides/artifactory/artifactory-packages-pull-through/</guid><description>&lt;p&gt;This tutorial details how to set up remote Alpine package (apk) repositories with &lt;a href="https://jfrog.com/artifactory/"&gt;JFrog Artifactory&lt;/a&gt;, which can provide pull-through caches for Chainguard package repositories. Specifically, this guide walks you through how to set up remote Artifactory repositories to serve as pull-through caches for a &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/private-apk-repos/"&gt;Chainguard Private APK Repository&lt;/a&gt; as well as Chainguard&amp;rsquo;s public package repositories. The guide also outlines how to configure a container image build to pull APK packages from these remote repositories using tokens generated by Artifactory.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a GitLab CI/CD Pipeline</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/gitlab-identity/</link><pubDate>Wed, 28 Jun 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/gitlab-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines two methods for how to create a Chainguard identity: &lt;code&gt;chainctl&lt;/code&gt; and Terraform. It then walks through how to create a GitLab CI/CD pipeline that will assume the identity to interact with Chainguard resources.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following.&lt;/p&gt;</description></item><item><title>Create Role-bindings for a GitHub Team Using Terraform</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/iam-organizations/roles-role-bindings/rolebinding-terraform-gh/</link><pubDate>Sat, 10 Jun 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/iam-organizations/roles-role-bindings/rolebinding-terraform-gh/</guid><description>&lt;p&gt;There may be cases where an organization will want multiple users to have access to the same Chainguard organization. Chainguard allows you to grant other users access to Chainguard by &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/how-to-manage-iam-organizations-in-chainguard/#inviting-others-to-an-organization"&gt;generating an invite link or code&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition, you can now grant access to users using Terraform and identity providers like GitHub, GitLab, and Google. You can also manage access through these providers&amp;rsquo; existing group structures, like GitHub Teams or GitLab Groups. Granting access through Terraform helps to reduce the risk of unwanted users gaining access to Chainguard.&lt;/p&gt;</description></item><item><title>How To Integrate Okta SSO with Chainguard</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/custom-idps/idp-providers/okta/</link><pubDate>Mon, 17 Apr 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/custom-idps/idp-providers/okta/</guid><description>&lt;p&gt;The Chainguard platform supports Single sign-on (SSO) authentication for users. By default, users can log in with GitHub, GitLab and Google, but SSO support allows users to bring their own identity provider for authentication.&lt;/p&gt;
&lt;p&gt;This guide outlines how to create an Okta application and integrate it with Chainguard. After completing this guide, you&amp;rsquo;ll be able to log in to Chainguard using Okta and will no longer be limited to the default SSO options.&lt;/p&gt;</description></item><item><title>Rego Policies</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/chainguard-enforce-rego-policies/</link><pubDate>Thu, 12 Jan 2023 15:56:52 -0700</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/chainguard-enforce-rego-policies/</guid><description>&lt;p&gt;The &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; supports the &lt;a href="https://www.openpolicyagent.org/docs/latest/policy-language/"&gt;Rego Policy Language&lt;/a&gt;, which is a declarative policy language that is used to evaluate structured input data such as Kubernetes manifests and JSON documents. This feature enables users to apply policies that can evaluate Kubernetes admission requests and object metadata to make comprehensive decisions about the workloads that are admitted to their clusters. Rego support also enables users to enhance existing cloud-native policies by adding additional software supply chain security checks.&lt;/p&gt;</description></item><item><title>How to Manage Chainguard IAM Organizations</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/iam-organizations/how-to-manage-iam-organizations-in-chainguard/</link><pubDate>Fri, 15 Jul 2022 15:22:20 +0100</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/iam-organizations/how-to-manage-iam-organizations-in-chainguard/</guid><description>&lt;p&gt;Chainguard provides a rich Identity and Access Management (IAM) model similar to those used by AWS and GCP. This guide outlines how to manage Chainguard&amp;rsquo;s IAM structures with the &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainctl/"&gt;&lt;code&gt;chainctl&lt;/code&gt; command line tool&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: You should work with Chainguard&amp;rsquo;s Customer Success team to create or delete organizations. This will help to ensure that no users lose access to resources and that your IAM structure is configured correctly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="logging-in" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Logging in&lt;/span&gt;
&lt;a href="#logging-in" class="anchor" aria-label="Link to Logging in" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To authenticate into the Chainguard platform, run the following login command.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity to Authenticate from Azure</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/azure-identity/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/azure-identity/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you&amp;rsquo;re authenticating from a workload running in Azure
Kubernetes Service (AKS), refer to the
&lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/kubernetes-identity/"&gt;Kubernetes identity guide&lt;/a&gt;
instead.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt;
are identities that can be assumed by external applications or workflows in
order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity that can be assumed
by an Azure workload — such as a VM, Container App, or Function — using an
&lt;a href="https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview"&gt;Azure managed identity&lt;/a&gt;
and then used to interact with the Chainguard API.&lt;/p&gt;</description></item><item><title>Using GitOps to Manage Custom Assembly Resources</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-gitops/</link><pubDate>Thu, 29 Jan 2026 11:07:52 +0200</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-gitops/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/"&gt;Custom Assembly&lt;/a&gt; is a tool that allows customers to create customized container images with extra packages and annotations added. This enables customers to reduce their risk exposure by creating container images that are tailored to their internal organization and application requirements while still having few-to-zero CVEs. It can be managed in the &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-console/"&gt;Chainguard Console&lt;/a&gt;, &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-chainctl/"&gt;with chainctl&lt;/a&gt;, &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-api-demo/"&gt;with the API&lt;/a&gt;, or via CI/CD.&lt;/p&gt;
&lt;p&gt;This guide shows how to use Chainguard Custom Assembly as code via CI/CD, storing your configuration in Git and using automation to apply changes and trigger builds. The examples in this guide focus on GitHub Actions, as seen in &lt;a href="https://github.com/chainguard-demo/custom-assembly-as-code"&gt;Chainguard&amp;rsquo;s custom-assembly-as-code demo repository&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a Kubernetes Pod</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/kubernetes-identity/</link><pubDate>Thu, 07 Aug 2025 13:00:00 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/kubernetes-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt;
are identities that can be assumed by external applications or workflows in
order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity that can be assumed
by a Kubernetes pod and then used to interact with the Chainguard API.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following.&lt;/p&gt;</description></item><item><title>Getting Started with OpenVEX and vexctl</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sbom/getting-started-openvex-vexctl/</link><pubDate>Mon, 30 Jan 2023 15:21:01 +0200</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sbom/getting-started-openvex-vexctl/</guid><description>&lt;p&gt;The &lt;code&gt;vexctl&lt;/code&gt; CLI is a tool to make VEX work. As part of the open source &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sbom/what-is-openvex/"&gt;OpenVex&lt;/a&gt; project, &lt;code&gt;vexctl&lt;/code&gt; enables you to create, apply, and attest VEX (Vulnerability Exploitability eXchange) data in order to filter out false positive security alerts.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;vexctl&lt;/code&gt; tool was built to help with the creation and management of VEX documents, communicate transparently to users as time progresses, and enable the &amp;ldquo;turning off&amp;rdquo; of security scanner alerts of vulnerabilities known not to affect a given product. Using VEX, software authors can communicate to their users that an otherwise vulnerable component has no security implications for their product.&lt;/p&gt;</description></item><item><title>Using the Chainguard API to Manage Custom Assembly Resources</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-api-demo/</link><pubDate>Thu, 01 May 2025 11:07:52 +0200</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-api-demo/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/custom-assembly/"&gt;Custom Assembly&lt;/a&gt; is a tool that allows customers to create customized containers with extra packages added. This enables customers to reduce their risk exposure by creating container images that are tailored to their internal organization and application requirements while still having few-to-zero CVEs.&lt;/p&gt;
&lt;p&gt;You can use the Chainguard API to further customize your Custom Assembly builds and retrieve information about them. This tutorial highlights a demo application (which can be found in &lt;a href="https://github.com/chainguard-dev/edu-images-demos/tree/main"&gt;Chainguard Academy&amp;rsquo;s Demo Applications repository&lt;/a&gt;) which, when run, updates a Custom Assembly container&amp;rsquo;s configuration based on a provided YAML file.&lt;/p&gt;</description></item><item><title>Mirror new Containers to Google Artifact Registry with Chainguard CloudEvents</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/cloudevents/image-copy-gcr/</link><pubDate>Fri, 24 May 2024 15:22:20 +0100</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/cloudevents/image-copy-gcr/</guid><description>&lt;p&gt;Certain interactions with Chainguard resources will emit &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/cloudevents/events-reference/"&gt;CloudEvents&lt;/a&gt; that you or an application can subscribe to. This allows you to do things like receive alerts when a user downloads one or more of your organization&amp;rsquo;s private container images or when a new image gets added to your organization&amp;rsquo;s registry.&lt;/p&gt;
&lt;p&gt;This tutorial is meant to serve as a companion to the &lt;a href="https://github.com/chainguard-dev/platform-examples/tree/main/image-copy-gcp"&gt;Image Copy GCP&lt;/a&gt; example application. It will guide you through setting up infrastructure to listen for &lt;code&gt;push&lt;/code&gt; events on an organization&amp;rsquo;s private registry and mirror any new Chainguard Containers in the registry to a repository in a GCP Artifact Registry repository.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a Buildkite Pipeline</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/buildkite-identity/</link><pubDate>Wed, 17 May 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/buildkite-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This tutorial outlines how to create an identity using Terraform, and then how to update a Buildkite pipeline so that it can assume the identity and interact with Chainguard resources.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you must have the following in place:&lt;/p&gt;</description></item><item><title>How To Integrate Ping Identity SSO with Chainguard</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/custom-idps/idp-providers/ping-id/</link><pubDate>Mon, 17 Apr 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/custom-idps/idp-providers/ping-id/</guid><description>&lt;p&gt;The Chainguard platform supports Single sign-on (SSO) authentication for users. By default, users can log in with GitHub, GitLab and Google, but SSO support allows users to bring their own identity provider for authentication.&lt;/p&gt;
&lt;p&gt;This guide outlines how to create a Ping Identity Application and integrate it with Chainguard. After completing this guide, you&amp;rsquo;ll be able to log in to Chainguard using Ping and will no longer be limited to the default SSO options.&lt;/p&gt;</description></item><item><title>Adding Custom Certificates with Custom Assembly</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-certs/</link><pubDate>Thu, 12 Mar 2026 11:07:52 +0200</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly-certs/</guid><description>&lt;p&gt;Many enterprise environments use internal certificate authorities (CAs) to issue certificates for internal services. These custom certificates need to be trusted by containers that communicate with the internal services. Custom Assembly allows you to build custom certificates directly into your container images, ensuring they trust your organization&amp;rsquo;s internal services without requiring manual certificate mounting at runtime.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you are looking for a way to embed certificates at build time, refer to our guide on &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/incert-custom-certs/"&gt;How To Use incert to Create Container Images with Built-in Custom Certificates&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How To Integrate Keycloak with Chainguard</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/custom-idps/idp-providers/keycloak/</link><pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/custom-idps/idp-providers/keycloak/</guid><description>&lt;p&gt;By default, the Chainguard platform supports Single sign-on (SSO) authentication for users with GitHub, GitLab, and Google.&lt;/p&gt;
&lt;p&gt;This guide outlines how to create a Keycloak Client on your existing Keycloak instance and integrate it with Chainguard. After completing this guide, you&amp;rsquo;ll be able to log in to Chainguard using Keycloak and will no longer be limited to the default SSO options.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following:&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a Bitbucket Pipeline</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/bitbucket-identity/</link><pubDate>Wed, 17 May 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/bitbucket-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity using Terraform, and then how to update a Bitbucket pipeline so that it can assume the identity and interact with Chainguard resources.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following.&lt;/p&gt;</description></item><item><title>How To Integrate Microsoft Entra ID SSO with Chainguard</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/custom-idps/idp-providers/ms-entra-id/</link><pubDate>Mon, 17 Apr 2023 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/custom-idps/idp-providers/ms-entra-id/</guid><description>&lt;p&gt;The Chainguard platform supports Single sign-on (SSO) authentication for users. By default, users can log in with GitHub, GitLab and Google, but SSO support allows users to bring their own identity provider for authentication.&lt;/p&gt;
&lt;p&gt;This guide outlines how to create a Microsoft Entra ID (formerly Azure Active Directory) application and integrate it with Chainguard. After completing this guide, you&amp;rsquo;ll be able to log in to Chainguard using Entra ID and will no longer be limited to the default SSO options.&lt;/p&gt;</description></item><item><title>Use chainctl to Create an Assumable Identity for a Jenkins Pipeline</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/jenkins-chainctl/</link><pubDate>Sun, 07 Sep 2025 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/jenkins-chainctl/</guid><description>&lt;p&gt;&lt;a href="https://www.jenkins.io/"&gt;Jenkins&lt;/a&gt; is an open source automation server that supports building, deploying, and automating projects.&lt;/p&gt;
&lt;p&gt;This guide explains how to use &lt;code&gt;chainctl&lt;/code&gt; to create an assumable identity and configure Jenkins to use that identity to authenticate to Chainguard. To accomplish this, create an OIDC token credential in Jenkins and a matching Chainguard identity that uses the Jenkins OIDC URL, then put the process into an example Jenkins build pipeline.&lt;/p&gt;
&lt;p&gt;To do this using Terraform, follow the instructions in &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/jenkins-terraform/"&gt;Use Terraform to Create an Assumable Identity for a Jenkins Pipeline&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Chainguard API v2 Tutorial</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/api/api-v2-tutorial/</link><pubDate>Mon, 30 Mar 2026 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/api/api-v2-tutorial/</guid><description>&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The Chainguard API v2 is in beta.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/p&gt;
&lt;p&gt;The v2 API introduces cursor-based pagination, server-side ordering, consistent resource patterns, and structured error responses across all endpoints.&lt;/p&gt;
&lt;p&gt;This guide walks through the v2 API using real &lt;code&gt;curl&lt;/code&gt; commands.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The example output in this guide was captured from a development environment. Your organization&amp;rsquo;s resource names, UIDs, timestamps, and counts will differ. The response structure and field names are the same across all environments.&lt;/p&gt;</description></item><item><title>Use Terraform to Create an Assumable Identity for a Jenkins Pipeline</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/jenkins-terraform/</link><pubDate>Sun, 07 Sep 2025 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/jenkins-terraform/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity using Terraform, and then how to update a Jenkins pipeline so that it can assume the identity and interact with Chainguard resources. If you would like to follow this guide using &lt;code&gt;chainctl&lt;/code&gt;, Chainguard&amp;rsquo;s command line tool, you can review &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/identity-examples/jenkins-chainctl/"&gt;Use chainctl to Create an Assumable Identity for a Jenkins Pipeline&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Create an Assumable Identity for a CLI session authenticated with Keycloak</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/keycloak-identity/</link><pubDate>Tue, 26 Mar 2024 08:48:45 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/administration/assumable-ids/identity-examples/keycloak-identity/</guid><description>&lt;p&gt;Chainguard&amp;rsquo;s &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/iam-organizations/assumable-ids/"&gt;&lt;em&gt;assumable identities&lt;/em&gt;&lt;/a&gt; are identities that can be assumed by external applications or workflows in order to perform certain tasks that would otherwise have to be done by a human.&lt;/p&gt;
&lt;p&gt;This procedural tutorial outlines how to create an identity using Terraform, and then assume the identity with the CLI to interact with Chainguard resources.&lt;/p&gt;
&lt;h2 id="prerequisites" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Prerequisites&lt;/span&gt;
&lt;a href="#prerequisites" class="anchor" aria-label="Link to Prerequisites" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;To complete this guide, you will need the following.&lt;/p&gt;</description></item><item><title>Can anybody build Chainguard Containers themselves?</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/can-anybody-build-containers/</link><pubDate>Sat, 02 Aug 2025 16:00:00 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/about/can-anybody-build-containers/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5WGfroCpyn0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Transcript&lt;/span&gt;
&lt;a href="#transcript" class="anchor" aria-label="Link to Transcript" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Interviewer&lt;/strong&gt;: But everything is open source—can anybody build the images themselves?&lt;/p&gt;</description></item><item><title>Authenticating with the Chainguard SDK</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/api/authentication/</link><pubDate>Wed, 04 Jun 2025 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/platform/api/authentication/</guid><description>&lt;p&gt;There are several ways for users to interact with the Chainguard platform, with &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainctl/"&gt;&lt;code&gt;chainctl&lt;/code&gt;&lt;/a&gt; (Chainguard&amp;rsquo;s command-line tool) and the &lt;a href="https://console.chainguard.dev/overview"&gt;Chainguard Console&lt;/a&gt; (Chainguard&amp;rsquo;s web interface) being the two most commonly-used methods. However, both of these require a human user to authenticate, and aren&amp;rsquo;t useful for working with Chainguard resources programmatically.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/chainguard-dev/sdk"&gt;Chainguard SDK&lt;/a&gt; serves to ease programmatic integration with the Chainguard platform. This guide highlights two examples from the SDK repository that show how to authenticate to the &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-registry/overview/"&gt;Chainguard registry&lt;/a&gt; using the &lt;code&gt;chainguard.dev/sdk/auth&lt;/code&gt; and &lt;code&gt;chainguard.dev/sdk/auth/ggcr&lt;/code&gt; packages. The first has you authenticate as a local user, while the second has you authenticate as an &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/administration/assumable-ids/assumable-ids/"&gt;assumed identity&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Example Policies</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/chainguard-enforce-policy-examples/</link><pubDate>Fri, 15 Jul 2022 15:22:20 +0100</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/policy-controller/policies/chainguard-enforce-policy-examples/</guid><description>&lt;p&gt;The &lt;a href="https://docs.sigstore.dev/policy-controller/overview/"&gt;Sigstore Policy Controller&lt;/a&gt; allows users to create their own security policies that they can be enforced on Kubernetes clusters. Here are a few example policies to help you get started.&lt;/p&gt;
&lt;p&gt;You may also review the &lt;a href="https://docs.sigstore.dev/policy-controller/overview"&gt;Sigstore Policy Controller documentation&lt;/a&gt;. In particular, we encourage you to review the Policy Controller documentation relating to the &lt;a href="https://docs.sigstore.dev/policy-controller/overview/#admission-of-images"&gt;Admission of images&lt;/a&gt; to learn how to admit images through the cluster image policy.&lt;/p&gt;
&lt;h2 id="policy-enforcing-signed-containers" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Policy enforcing signed containers&lt;/span&gt;
&lt;a href="#policy-enforcing-signed-containers" class="anchor" aria-label="Link to Policy enforcing signed containers" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;pre class="highlight" data-language=""&gt;&lt;code class="language-" data-lang=""&gt;apiVersion: policy.sigstore.dev/v1beta1
kind: ClusterImagePolicy
metadata:
name: signed-keyless
spec:
images:
# All images
- glob: &amp;#34;**&amp;#34;
authorities:
- keyless:
url: https://fulcio.sigstore.dev
ctlog:
url: https://rekor.sigstore.dev&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example using Chainguard Containers from Chainguard&amp;rsquo;s registry:&lt;/p&gt;</description></item><item><title>Getting Started with melange</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/build-tools/melange/getting-started-with-melange/</link><pubDate>Thu, 21 Jul 2022 15:21:01 +0200</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/build-tools/melange/getting-started-with-melange/</guid><description>&lt;p&gt;&lt;a href="https://github.com/chainguard-dev/melange"&gt;melange&lt;/a&gt; is an &lt;a href="https://wiki.alpinelinux.org/wiki/Package_management"&gt;apk&lt;/a&gt; builder tool that uses declarative pipelines to create apk packages. From a single YAML file, users are able to generate multi-architecture apks that can be injected directly into &lt;a href="https://github.com/chainguard-dev/apko"&gt;apko&lt;/a&gt; builds.&lt;/p&gt;
&lt;p&gt;Understanding melange can help you better understand the &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/wolfi/"&gt;Wolfi&lt;/a&gt; operating system and how &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/"&gt;Chainguard Containers&lt;/a&gt; are made to be minimal and secure, but it is not necessary to have a background in melange in order to use Chainguard Containers.&lt;/p&gt;
&lt;p&gt;In this guide, you&amp;rsquo;ll learn how to build a software package with melange. To demonstrate the versatile combination of melange and apko builds, we&amp;rsquo;ll package a small command-line PHP script and build a minimalist container image based on Wolfi with the generated apk. All files used in this demo are open source and available at the &lt;a href="https://github.com/chainguard-dev/melange-php-demos/tree/main/hello-minicli"&gt;melange-php-demos&lt;/a&gt; repository.&lt;/p&gt;</description></item><item><title>Getting Started with apko</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/build-tools/apko/getting-started-with-apko/</link><pubDate>Wed, 06 Jul 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/build-tools/apko/getting-started-with-apko/</guid><description>&lt;p&gt;&lt;a href="http://github.com/chainguard-dev/apko"&gt;apko&lt;/a&gt; is a command-line tool to build container images using a declarative language based on YAML. apko is so named as it uses the &lt;a href="https://wiki.alpinelinux.org/wiki/Package_management"&gt;apk&lt;/a&gt; package format and is inspired by the &lt;a href="https://github.com/google/ko"&gt;ko&lt;/a&gt; build tool. It is part of the open source tooling Chainguard developed to create the &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/wolfi/"&gt;Wolfi&lt;/a&gt; operating system which is used in &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/"&gt;Chainguard Containers&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="why-apko" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Why apko&lt;/span&gt;
&lt;a href="#why-apko" class="anchor" aria-label="Link to Why apko" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Container images are typically assembled in multiple steps. A tool like Docker, for example, combines building steps (as in, running commands to copy files, build and deploy applications) and composition (as in, composing a base image with pre-built packages) in a single piece of software. apko, on the other hand, is solely a &lt;strong&gt;composition&lt;/strong&gt; tool that focuses on producing lightweight, &amp;ldquo;flat&amp;rdquo; base images that are fully reproducible and contain auto generated &lt;a href="https://www.cisa.gov/sbom"&gt;SBOM&lt;/a&gt; files for every successful build.&lt;/p&gt;</description></item><item><title>Using Init Containers with Chainguard Containers</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/init-containers/</link><pubDate>Mon, 04 Aug 2025 15:21:01 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/how-to-use/init-containers/</guid><description>&lt;p&gt;Chainguard Containers are designed with minimalism and security in mind. By including fewer packages and tools, Chainguard Containers have a smaller attack surface than their counterparts. However, there are cases where the external counterparts have certain desirable features, like useful startup scripts or configuration defaults.&lt;/p&gt;
&lt;p&gt;There are several ways to customize Chainguard Containers. For example, you can use &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/chainguard/chainguard-images/features/ca-docs/custom-assembly/"&gt;Custom Assembly&lt;/a&gt; to add packages to an otherwise minimal Chainguard container image. Changing a Chainguard container image&amp;rsquo;s configuration — such as updating its entrypoint or adding startup scripts — requires a different strategy. One method for doing so in Kubernetes deployments is to use &lt;em&gt;init containers&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Building a Wolfi Package</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/wolfi/building-a-wolfi-package/</link><pubDate>Mon, 21 Aug 2023 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/wolfi/building-a-wolfi-package/</guid><description>&lt;p&gt;Wolfi is a Linux distro created specifically for building stripped-down container images that only include the essential packages needed to run applications in containers. This makes it more secure, as there are fewer potential attack vectors due to the reduced surface area.&lt;/p&gt;
&lt;p&gt;Thanks to a fine-tuned maintenance process combining top-notch automation and established best practices from maintainers, Wolfi packages are updated quickly. This ensures that Wolfi users get patches and latest versions of packages at a much faster pace than other distributions. Additionally, Wolfi includes a number of features that help to ensure the provenance and authenticity of packages. For example, all packages are built directly from source and signed with cryptographic signatures. This helps to prevent malicious code from being introduced into the system. Wolfi also provides a high-quality build-time &lt;a href="https://edu.chainguard.dev/open-source/sbom/what-is-an-sbom/"&gt;SBOM&lt;/a&gt; as standard for all packages.&lt;/p&gt;</description></item><item><title>Creating Wolfi Images with Dockerfiles</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/wolfi/wolfi-with-dockerfiles/</link><pubDate>Mon, 19 Dec 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/wolfi/wolfi-with-dockerfiles/</guid><description>&lt;h2 id="introduction" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;Introduction&lt;/span&gt;
&lt;a href="#introduction" class="anchor" aria-label="Link to Introduction" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/wolfi/overview/"&gt;Wolfi&lt;/a&gt; is a minimal open source Linux distribution created specifically for cloud workloads, with an emphasis on software supply chain security. Using &lt;a href="https://wiki.alpinelinux.org/wiki/Package_management"&gt;apk&lt;/a&gt; for package management, Wolfi differs from Alpine in a few important aspects, most notably the use of glibc instead of musl and the fact that Wolfi doesn&amp;rsquo;t have a kernel as it is intended to be used with a container runtime. This minimal footprint makes Wolfi an ideal base for both &lt;em&gt;distroless&lt;/em&gt; images and fully-featured builder images.&lt;/p&gt;</description></item><item><title>How to Keyless Sign a Container Image with Sigstore</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/how-to-keyless-sign-a-container-with-sigstore/</link><pubDate>Wed, 24 Aug 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/how-to-keyless-sign-a-container-with-sigstore/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@5fb8482a3b764ce0903e2c424842d32f/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@2e3388391d6040f5beb5bacbf19f96f5"&gt;lab in chapter 5&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This tutorial will bring some of the components of Sigstore together in an example project. In this demonstration, we’ll be using GitHub Actions to perform keyless signing on a sample container. In this example, we’ll use a Django container that displays a generic “Hello, World” style landing page. Django is a Python web framework.&lt;/p&gt;</description></item><item><title>How to Generate a Fulcio Certificate</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/fulcio/how-to-generate-a-fulcio-certificate/</link><pubDate>Fri, 19 Aug 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/fulcio/how-to-generate-a-fulcio-certificate/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@2fbe6328019c4b1fbf934bd3bfb7e308/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@1f71fcbe8219471fb82e25731b18be11"&gt;Fulcio chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In this tutorial, we are going to create and examine a Fulcio certificate to demonstrate how Fulcio can work in practice. To follow along, you will need Cosign installed on your local system. If you haven&amp;rsquo;t installed Cosign yet, you can follow the instructions described in &lt;a href="https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/cosign/how-to-install-cosign/"&gt;How to Install Cosign&lt;/a&gt;, or you can follow one of the installation methods described in the &lt;a href="https://docs.sigstore.dev/cosign/system_config/installation/"&gt;official documentation&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to Inspect and Verify Fulcio Certificates</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/fulcio/how-to-inspect-and-verify-fulcio-certificates/</link><pubDate>Fri, 19 Aug 2022 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/sigstore/fulcio/how-to-inspect-and-verify-fulcio-certificates/</guid><description>&lt;p&gt;&lt;em&gt;An earlier version of this material was published in the &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@sequential&amp;#43;block@2fbe6328019c4b1fbf934bd3bfb7e308/block-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022&amp;#43;type@vertical&amp;#43;block@1f71fcbe8219471fb82e25731b18be11"&gt;Fulcio chapter&lt;/a&gt; of the Linux Foundation &lt;a href="https://learning.edx.org/course/course-v1:LinuxFoundationX&amp;#43;LFS182x&amp;#43;2T2022/home"&gt;Sigstore course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To inspect a certificate generated by Fulcio, we will first decode it with the &lt;code&gt;base64&lt;/code&gt; command line tool, which is used for encoding and decoding binary to text. Base64 is widely used on the world wide web for binary-to-text encoding. You can check whether the tool is installed by checking whether &lt;code&gt;base64 --help&lt;/code&gt; will run. If not, install Base64 with the package manager of your choice, such as apt or &lt;a href="https://formulae.brew.sh/formula/base64"&gt;Homebrew for macOS&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Bazel Rules for apko</title><link>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/build-tools/apko/bazel-rules/</link><pubDate>Mon, 23 Oct 2023 08:49:31 +0000</pubDate><guid>https://deploy-preview-3407--ornate-narwhal-088216.netlify.app/open-source/build-tools/apko/bazel-rules/</guid><description>&lt;p&gt;&lt;code&gt;rules_apko&lt;/code&gt; is an open source plugin for Bazel that makes it possible to build
secure, minimal Wolfi-based container images using the Bazel build system. It
wraps the &lt;a href="https://github.com/chainguard-dev/apko"&gt;apko&lt;/a&gt; tool for use under
Bazel, providing hermetic, reproducible image builds with full Bazel caching
support.&lt;/p&gt;
&lt;p&gt;By the end of this guide you will have a working Bazel project that builds a
minimal Wolfi-based container image using &lt;code&gt;rules_apko&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="how-to-build-a-container-with-bazel-using-rules_apko" class="heading-2" data-heading-level="2"&gt;
&lt;span class="heading-text"&gt;How to build a container with Bazel using &lt;code&gt;rules_apko&lt;/code&gt;&lt;/span&gt;
&lt;a href="#how-to-build-a-container-with-bazel-using-rules_apko" class="anchor" aria-label="Link to How to build a container with Bazel using rules_apko" title="Link to this section"&gt;
&lt;svg width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"&gt;
&lt;path d="M6.833 8.125H4C3 8.125 2.146 7.77067 1.438 7.062C0.729333 6.354 0.375 5.5 0.375 4.5C0.375 3.5 0.729333 2.646 1.438 1.938C2.146 1.22933 3 0.875 4 0.875H6.833V1.958H4C3.30533 1.958 2.708 2.208 2.208 2.708C1.708 3.208 1.458 3.80533 1.458 4.5C1.458 5.19467 1.708 5.792 2.208 6.292C2.708 6.792 3.30533 7.042 4 7.042H6.833V8.125ZM5.208 5.042V3.958H10.792V5.042H5.208ZM9.167 8.125V7.042H12C12.6947 7.042 13.292 6.792 13.792 6.292C14.292 5.792 14.542 5.19467 14.542 4.5C14.542 3.80533 14.292 3.208 13.792 2.708C13.292 2.208 12.6947 1.958 12 1.958H9.167V0.875H12C13 0.875 13.854 1.22933 14.562 1.938C15.2707 2.646 15.625 3.5 15.625 4.5C15.625 5.5 15.2707 6.354 14.562 7.062C13.854 7.77067 13 8.125 12 8.125H9.167Z" fill="currentColor"/&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;This page covers &lt;code&gt;rules_apko&lt;/code&gt; version &lt;code&gt;1.5.37&lt;/code&gt; with Bazel &lt;code&gt;9.0.1&lt;/code&gt; using
&lt;strong&gt;Bzlmod&lt;/strong&gt;, which is the only supported dependency management method in Bazel 9.
If you are on an earlier version of Bazel, you should upgrade to Bazel 9 before
following this guide.&lt;/p&gt;</description></item></channel></rss>