nirmata.com Open in urlscan Pro
141.193.213.10  Public Scan

Submitted URL: https://u29818437.ct.sendgrid.net/ls/click?upn=GXfJxXNCOYly-2Bx3gVfFBhNgZOv4fMkmQ1gxnco7wvhuxOWofIFt0T6W5y3vWmWg-2FHmD8cBSjKlCNOi2...
Effective URL: https://nirmata.com/2021/08/12/kubernetes-supply-chain-policy-management-with-cosign-and-kyverno/
Submission: On April 28 via manual from CA — Scanned from CA

Form analysis 2 forms found in the DOM

GET https://nirmata.com/

<form role="search" id="searchform" action="https://nirmata.com/" class="qode_search_form" method="get">
  <div class="container">
    <div class="container_inner clearfix">
      <i class="fa fa-search"></i>
      <input type="text" placeholder="Search" name="s" class="qode_search_field" autocomplete="off">
      <input type="submit" value="Search">
      <div class="qode_search_close">
        <a href="#">
							<i class="fa fa-times"></i>
						</a>
      </div>
    </div>
  </div>
</form>

POST https://nirmata.com/wp-comments-post.php?wpe-comment-post=nirmata

<form action="https://nirmata.com/wp-comments-post.php?wpe-comment-post=nirmata" method="post" id="commentform" class="comment-form"><textarea id="comment" placeholder="Write your comment here..." name="comment" cols="45" rows="8"
    aria-required="true" minlength="15" maxlength="15360"></textarea>
  <div class="three_columns clearfix">
    <div class="column1">
      <div class="column_inner"><input id="author" name="author" placeholder="Your full name" type="text" value="" aria-required="true"></div>
    </div>
    <div class="column2">
      <div class="column_inner"><input id="email" name="email" placeholder="E-mail address" type="text" value="" aria-required="true"></div>
    </div>
    <div class="column3">
      <div class="column_inner"><input id="url" name="url" type="text" placeholder="Website" value=""></div>
    </div>
  </div>
  <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"> <label for="wp-comment-cookies-consent">Save my name, email, and website in this browser for the next time
      I comment.</label></p>
  <p class="form-submit"><input name="submit" type="submit" id="submit_comment" class="submit" value="Submit"> <input type="hidden" name="comment_post_ID" value="7389" id="comment_post_ID">
    <input type="hidden" name="comment_parent" id="comment_parent" value="0">
  </p>
  <noscript><input type="hidden" name="JS04X7" value="NS1"></noscript>
  <noscript>
    <p><strong>Currently you have JavaScript disabled. In order to post comments, please make sure JavaScript and Cookies are enabled, and reload the page.</strong>
      <a href="http://enable-javascript.com/" rel="nofollow external">Click here for instructions on how to enable JavaScript in your browser.</a></p>
  </noscript>
</form>

Text Content

This website stores cookies on your computer. These cookies are used to improve
your website experience and provide more personalized services to you, both on
this website and through other media. To find out more about the cookies we use,
see our Privacy Policy.

We won't track your information when you visit our site. But in order to comply
with your preferences, we'll have to use just one tiny cookie so that you're not
asked to make this choice again.

Accept Decline
 * Get a Demo
 * About
   * Team
   * Partners
   * Press
 * Login

 * Get Started


 * Products
    * Nirmata Enterprise for Kyverno
    * Nirmata Policy Manager
    * Kyverno OSS

 * Use Cases
    * Pod Security
    * Software Supply Chain Security
    * Cluster Multitenancy
    * Continuous Compliance

 * Pricing
 * Blog
 * Resources
    * Case Studies
    * Content Library
    * Documentation
    * Support
    * Kyverno Training & Certification

 * Products
   * Nirmata Enterprise for Kyverno
   * Nirmata Policy Manager
   * Kyverno OSS
 * Use Cases
   * Pod Security
   * Software Supply Chain Security
   * Cluster Multitenancy
   * Continuous Compliance
 * Pricing
 * Blog
 * Resources
   * Case Studies
   * Content Library
   * Documentation
   * Support
   * Kyverno Training & Certification


KUBERNETES SUPPLY CHAIN POLICY MANAGEMENT WITH COSIGN AND KYVERNO

August 12, 2021 In Kyverno By Jim Bugwadia


KUBERNETES SUPPLY CHAIN POLICY MANAGEMENT WITH COSIGN AND KYVERNO

This is a joint blog post from Dan Lorenc (@lorenc_dan), a software engineer at
Google and a maintainer of Cosign, and Jim Bugwadia (@JimBugwadia), co-founder
of Nirmata and a maintainer of Kyverno.


INTRODUCTION

Modern software applications are built on decades of prior art and can have
hundreds of dependencies across open source, internal, and other 3rd party
components. Hence, securing software supply chains is complex. Rapid adoption of
DevOps and cloud-native technologies like containers and Kubernetes also add
complexity, but have the potential of bringing new best practices and automation
tools. In this post we will demonstrate how Cosign, an image signing and
verification tool, can be used with Kyverno, a Kubernetes policy engine. 


IMAGE SIGNING WITH COSIGN

Supply chains can be modeled as a series of links where source code, metadata.
and artifacts change hands from producer to consumer, making their way from
keyboard to production deployment. Unfortunately each of these links is a
potential place for something to go wrong, either by accident or on purpose from
an attacker!

One method for protecting these links against attacks (and mistakes!) is to use
digital signatures, which can help detect if an artifact or metadata has been
tampered with. Artifact publishers can generate a cryptographic keypair, and use
the private key to sign the artifact. They then distribute the public key
widely, and consumers can use that to verify the signature and artifact. When
these pieces all get put together, they can be used to protect the links in a
software supply chain.

Unfortunately these pieces are often harder to put together than they need to
be, which is what the Sigstore project aims to help fix! Sigstore is a set of
open source projects and shared community-driven infrastructure to help make key
distribution, certificate verification and signature discovery easy and
transparent. While Sigstore is aimed at all types of software artifacts, the
cosign sub-project is specifically targeted at signing and verifying container
images. You can get up and running quickly with cosign by following the getting
started guide here, where you can generate a keypair, sign images and verify
them on the command line.

Or, you can follow the rest of this blog post to see how to automatically verify
images before they’re deployed using Kyverno!


COSIGN IMAGE SIGNATURE VERIFICATION WITH KYVERNO

Kyverno is a policy management solution built for Kubernetes. Kyverno enables
managing policies and policy results as Kubernetes resources. Kyverno runs as an
admission controller and can allow or deny API requests based on configured
policies. Kyverno policies can also be used to mutate resources and be used to
trigger the automatic generation of new resources.

To add support for Cosign, a new type of policy rule was introduced. The new
“verifyImages” rule performs the following actions:

 1. It validate signatures for matching images using Cosign
 2. It mutates image references with the digest returned by Cosign

Using an image digest guarantees immutability of images and hence improves
security.

The rule is executed in the mutating admission controller, but runs after
resources are mutated to allow policies to mutate image registries and other
configurations, before the image signature is verified.

Here is a policy that verifies all images from the repository “ghcr.io/kyverno/”
that start with the name “test-verify-image” are signed with the provided public
key:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: check-image
spec:
  validationFailureAction: enforce
  background: false
  rules:
    - name: check-image
      match:
        resources:
          kinds:
            - Pod
      verifyImages:
      - image: "ghcr.io/kyverno/test-verify-image:*"
        key: |-
          -----BEGIN PUBLIC KEY-----
          MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nXRh950IZbRj8Ra/N9sbqOPZrfM
          5/KAQN0/KjHcorm/J5yctVd7iEcnessRQjU917hmKO6JWVGHpDguIyakZA==
          -----END PUBLIC KEY-----  

The Kyverno policy rule definition allows for multiple entries, and the all
matching rules are executed as a logical AND operation i.e. they must all be
successful for the policy check to pass. This allows for use cases where an
image is signed by a build automation tool, as well as a system administrator. 

While it’s best to write policies that operate on a pod specification at the pod
level, pods are almost always managed using pod controllers such as a Deployment
or StatefulSet. Kyverno automatically generates policy rules for pod controllers
via the auto-gen feature to provide early enforcement of policies and a better
user experience.

The Kyverno auto-gen feature also works for the “verifyImages” rule. This means
that a Deployment, or any other controller, with a pod template that references
a matching image will be validated and the pod template will be updated with the
image digest! 

Let’s take a look at this in action with a step-by-step demonstration:

1. Install the latest version of Kyverno (the Kyverno docs have detailed
installation instructions from command line and the Helm chart):

kubectl create -f https://raw.githubusercontent.com/kyverno/kyverno/main/definitions/release/install.yaml

2. Patch the Kyverno webhook, to allow time for calling the OCI registry (future
releases of Kyverno will automatically adjust the defaults):

kubectl patch mutatingwebhookconfigurations kyverno-resource-mutating-webhook-cfg \
--type json \
-p='[{"op": "replace", "path": "/webhooks/0/failurePolicy", "value": "Ignore"},{"op": "replace", "path": "/webhooks/0/timeoutSeconds", "value": 15}]'

3. Install a sample image validation policy:

kubectl apply -f https://raw.githubusercontent.com/kyverno/policies/main/other/verify_image.yaml

4. Try running a signed test image as a Deployment from the Kyverno repository:

kubectl create deployment signed \
--image=ghcr.io/kyverno/test-verify-image:signed

5. Check the image reference in the deployment.

kubectl get deploy signed -o yaml | grep image

Note that the image digest was automatically added:

  - image: ghcr.io/kyverno/test-verify-image:signed@sha256:b31bfb4d0213f254d361e0079deaaebefa4f82ba7aa76ef82e90b4935ad5b105
    imagePullPolicy: IfNotPresent
    name: test-verify-image

6. Try running an unsigned image that matches the configured rule:

kubectl create deployment unsigned \
--image=ghcr.io/kyverno/test-verify-image:unsigned

This will be blocked:

error: failed to create deployment: admission webhook "mutate.kyverno.svc" denied the request:

resource Deployment/default/unsigned was blocked due to the following policies

verify-image:
  autogen-verify-image: 'image verification failed for ghcr.io/kyverno/test-verify-image:unsigned:
    signature not found'

7. Try running an image signed using a different private key that matches the
configured rule:

kubectl create deployment signed-other \
--image=ghcr.io/kyverno/test-verify-image:signed-by-someone-else

This will be blocked as well:

error: failed to create deployment: admission webhook "mutate.kyverno.svc" denied the request:

resource Deployment/default/signed-other was blocked due to the following policies

verify-image:
  autogen-verify-image: 'image verification failed for ghcr.io/kyverno/test-verify-image:signed-by-someone-else:
    invalid signature'

8. Finally try running a bare pod, with an unsigned image:

kubectl run unsigned \
--image=ghcr.io/kyverno/test-verify-image:unsigned

This verifies that Kyverno policies are applied at the pod controller and pod
levels:

Error from server: admission webhook "mutate.kyverno.svc" denied the request:

resource Pod/default/unsigned was blocked due to the following policies

verify-image:
  verify-image: 'image verification failed for ghcr.io/kyverno/test-verify-image:unsigned:
    signature not found'

Kyverno also supports Cosign integration with private OCI registries. Refer to
the Kyverno documentation for details, and to test this feature with your own
images.


WHAT THIS INTEGRATION PROVIDES

While Kubernetes supply chain security is a large topic, the ability to easily
sign and verify container images provides a foundational strategy you can
implement today. Establishing a baseline level of trust and awareness of
everything you’re running in production is a great first step in securing your
overall software supply chain. Signing your images, either manually or as part
of a build pipeline, and then verifying them before deployment, is one way to
get started on the path to more robust Kubernetes supply chain security.

As standards and tools evolve, a more comprehensive strategy would be to use
richer attestations that contain data about how an image was built and what
source code was used inside of it. These attestations should be generated
automatically by a CI/CD pipeline and can be used to write and enforce powerful
policies using engines like Kyverno.  The In-Toto project contains a large set
of metadata formats that are useful here. More on this topic at: Policy and
Attestations. Best Practices for Supply Chain… | by Dan Lorenc | Jul, 2021 |
Medium.  


WHAT’S NEXT FOR COSIGN

This is a fast moving space, and these tools are changing rapidly! Up next in
Sigstore, we’re working on firming up our APIs and specifications so more
tooling can be built on top of our infrastructure. Our signature transparency
log and code signing CA are currently Experimental, but we’re aiming to get
these up to production quality early this fall. We’re also working to integrate
Cosign signatures directly into build systems, so they can be created in CI
systems and verified in policy engines from end-to-end, automatically!


WHAT’S NEXT FOR KYVERNO

The Kyverno 1.4.2 verify images policy rule provides a simple yet powerful way
to verify container images verified by Cosign during admission controls. The
feature in Kyverno is currently in “alpha” status and the current focus is to
make this production ready. This will include adding Kyverno CLI support for
image verification via policies outside a cluster (e.g. in a CI/CD pipeline) and
metrics support. A full list of open issues is available on the Kyverno GitHub.
Learn more about Kyverno as a policy manager for Kubernetes while you’re here.

Beyond verifying image signatures, Kyverno will continue to expand support for
other supply chain security use cases, such as verify in-toto attestations as
these standards mature.


GET INVOLVED

Cosign and Kyverno are both fast moving projects with growing communities. Come
say hello in the slack channels (Cosign slack, Kyverno slack) and follow our
GitHub repositories (Cosign GitHub, Kyverno GitHub) to stay updated. We’d love
to hear from you!

Meanwhile, Nirmata will continue to update readers (and developers) here on
important DevOps topics like Kubernetes supply chain security, including Cosign
security for Kubernetes. Feel free to contact us here with any specific
questions you may have, or sign-up for our free monthly newsletter at the top
right of this page to stay informed on all things Kubernetes and Kyverno!

--------------------------------------------------------------------------------

Photo by boris misevic on Unsplash

Introducing Kyverno 1.4.2: Trusted And More Efficient!
How to Successfully Migrate from OPA to Kyverno

 * 
 * 
 * 
 * 

TAGS:

CosignDevSecOpsKubernetesKyvernoSoftware Supply Chain SecuritySupply Chain
Security

NO COMMENTS





POST A COMMENT

Cancel Reply

Save my name, email, and website in this browser for the next time I comment.



Currently you have JavaScript disabled. In order to post comments, please make
sure JavaScript and Cookies are enabled, and reload the page. Click here for
instructions on how to enable JavaScript in your browser.



PRODUCT

 * Enterprise for Kyverno
 * Policy Manager
 * Kyverno OSS
 * Pricing

USE CASES

 * Pod Security
 * Software Supply Chain Security
 * Cluster Multitenancy
 * Continuous Compliance

RESOURCES

 * Blog
 * Videos
 * Webinars
 * Datasheets
 * Whitepapers
 * All Case Studies

COMPANY

 * Our Team
 * Careers
 * About Us
 * Partners
 * Get a Demo

Terms of UsePrivacy PolicySecurity Policy
6203 San Ignacio Avenue
Suite 110,
San Jose, CA 95119© Nirmata 2023, All Right Reserved.



Follow us

X



CLOSE



CLOSE



CLOSE



CLOSE

CLOSE
Radhesh Kanumury

Radhesh is Managing Partner of Arka Venture Labs. Arka Venture Labs is an
Accelerator fund which assists Indian B2B Startups to foray into US by providing
a combination of Funding, Mentoring and access to Silicon Valley Ecosystem. Arka
Venture Labs was formed in August 2018 and has made 9 investments so far. Prior
to starting Arka, Radhesh was Venture Advisor to Blume Ventures, focusing on
early stage B2B Startups investments. Before this he was leading the Global
Entrepreneur Program, for IBM India and South Asia. He exhibited strong
leadership in steering the Startup initiative of IBM from scratch to one of the
companies to be reckoned by the Startup ecosystem in India and generating strong
revenues for IBM India Cloud business. He has helped many B2B startups scale in
their journey by mentoring them, facilitating access to funds and customers.

He has core competency in evaluating startups leveraging technology and advising
them on areas of improvement from business and technology standpoint. He
conceptualized IBM India`s Startup challenge called IBM India Smartcamp and
successfully executed the same. Radhesh has personally curated the startups for
the finals, many of whom got funding either for the first time or for their
subsequent rounds.He also worked with large enterprises in assisting them in
identifying the next generation innovations through joint hackathons and startup
challenges.

Prior to this role at IBM he was working as a Software Architect where he was
designing Software solutions for Enterprise Clients, ISVs and System
Integrators. He created many First of its kind solutions and led several key
Sales wins for IBM. Radhesh has strong skills in building strategic
relationships with Partner organizations.

CLOSE

Cloud Edition

Best for line of business
teams

GET STARTED

Private Edition

Built for large enterprises
with multiple teams

GET STARTED
X
Anubhav Sharma, VP of Business Development

Anubhav is VP of Business Development and Customer Success. He has 20+ years of
experience in building and growing businesses across service provider,
enterprise and commercial sectors. He has led functions in business development,
product management, marketing, delivery and operations through his career, and
most recently served as GM for the $250M Web-scale Services business at Cisco.

Anubhav is passionate about building new solutions and teams, and growing new
market segments. At Cisco, he grew business 30-40% annually for many years while
also building new offers, a world class team and a global delivery model.

Throughout his career, Anubhav has straddled technical, operational and business
domains to bring new solutions around real-time analytics, operational
assessments and network lifecycle management. Most recently, he was involved in
bringing in new offers around recently launched Business Critical Services, a
$2.5B business for Cisco. Before leaving Cisco, Anubhav signed off with a $350M
multi-year deal built entirely around new solutions and engagement model with an
innovative commercial structure.

Anubhav brings to Nirmata’s product development and organization an extensive
experience developing both custom and standard subscription services, which was
significantly formed by his time spent building analytics solutions at Cisco.
This perspective on building bleeding edge solutions is evident in his business
outlook, which recognizes that best solutions are built with the customers, by
listening to them and partnering in risk taking when breaking new ground.

Anubhav holds bachelor’s degrees in both physics and electronics and
telecommunications from Mumbai University and an MBA from San Jose State
University.

CLOSE
Ritesh Patel, Founder & VP of Products

Ritesh Patel is co-founder of Nirmata and has 20+ years experience building and
delivering enterprise software solutions and has led highly successful software
and business development teams. Ritesh began his career in engineering for high
tech firms, and has since migrated to the business side of the operation. In his
founding of Nirmata, Ritesh sought to bring his broad spectrum of experience to
a single previously unaddressed industry problem through the creation of a new
business. To Nirmata’s leadership, Ritesh brings a rare skill set incorporating
experience with the entire chain of software development activities. This
background has contributed to Nirmata’s commitment to empowering all employees
to do the hard work required to deliver tools that solve tough problems.

Prior to Nirmata, Ritesh led business development at Brocade, where he was
responsible for defining the firm’s cloud strategy, and oversaw developments
that advanced the entire cloud “as-a-service” market. Through cloud and
security-related initiatives, Ritesh and his team at Brocade were able to
package Brocade’s plethora of IT infrastructure products into enterprise-ready
solutions including OpenStack and CloudStack that pioneered widespread cloud
computing implementation. In addition to these technical achievements, Ritesh
succeeded in creating an extensive partner ecosystem to efficiently match these
solutions with urgent customer needs.

Ritesh has also held key technical positions at Trapeze Networks (where he
created industry award-winning products), Nortel, and Motorola. Ritesh holds an
MBA from UC Berkeley and a master’s degree in computer engineering from Michigan
State University.

CLOSE
Damien Toledo, Founder & VP of Engineering

Damien Toledo is Co-Founder and Vice President of Engineering, overseeing
research and development, operations, maintenance, and delivery of Nirmata
products. Damien brings over 20 years experience leading global engineering
teams and delivering Enterprise grade solutions.

Since 1998 when he arrived in Silicon Valley from France to pursue the
possibilities of US startup culture, Damien has held a number of engineering
positions at high tech firms, each of which playing a role in the concept
development for Nirmata. Building on lessons learned in management
transformation at Jetstream Communications in the early 2000s, Damien built the
Meru Networks Network Management team and Network Management solution from the
ground up as one of the firm’s original members. Meru Networks went public in
2010 (NASDAQ:MERU).

Subsequent to his work at Meru, Damien led the transformation of the engineering
team at Netscout to build an agile organization. At Netscout, he championed the
adoption of Continuous Integration best practices across a team of 200+
engineers and 7 development sites, which resulted in reducing the software
release cycles by 300%. While at Netscout and together with Nirmata co-founder
Jim Bugwadia, Damien oversaw the adoption of microservices while searching for
solutions to operating quickly in the cloud, and developed the foundations for
what would become Nirmata.

Damien holds a master’s degree in computer science from University of Technology
of Compiègne.

CLOSE
Jim Bugwadia, Founder & CEO

Jim Bugwadia has 20+ years experience building and leading effective teams and
has created software that powers communications systems around the world.

Jim was among the original architects and business leaders within Cisco’s cloud
automation practice, where he helped grow revenues to over $250M. During Jim’s
tenure, IDC recognized the practice as #1 in global cloud services.

Prior to his work at Cisco, Jim led engineering teams at startups including Pano
Logic, a desktop virtualization startup recognized for its innovative design by
Wired magazine; Trapeze Networks, a wireless pioneer; and Jetstream
Communications, a telecom equipment manufacturer. Jim started his career
developing C++ software at Motorola for cellular network infrastructure where
his team launched the world’s first cellular telephony that used code division
multiplexing to optimize radio frequency usage.

Jim’s passion is to simplify the use of complex systems by providing well
designed products that drive mass adoption of new technologies. As software has
become mission critical to all businesses, Jim and his co-founders started
Nirmata to help enterprises automate the delivery and management of
applications. Jim currently develops software in Java, Golang, and Javascript,
and is a Certified Kubernetes Administrator who actively participates in
Nirmata’s full product lifecycle.

Over the course of his career, Jim has logged over $1.3B in revenue, 6 patent
filings, 8 major product launches, and 29 years experience coding.

Jim holds a bachelor’s degree in engineering from Chicago State University and a
master’s degree in computer science from the University of Illinois at Chicago.

CLOSE