Skip to main content

Armory Policy Engine – CD Governed Admission Policy

Aug 5, 2021 by Nate Reid

In this demonstration, I’ve configured OPA policy at the K8s cluster, allowing only the Spinnaker service account to create a deployment via the kube-api server. Additionally, I’ve defined a policy within the pipeline via Armory Policy Engine, requiring all images be specified with a tag other than ‘latest’. This demonstrates the centralization and consolidation of admission policy for K8s.

Safe Continuous Deployment/Delivery (CD) is a key focus for us at Armory. Establishing policy-driven governance as a core part of CD pipelines is one way we enhance this goal. Through policy, elements of a CD pipeline are controlled at a much finer level than with RBAC alone.

Open Policy Agent (a.k.a. OPA) is a well-known project to Kubernetes (K8s) administrators, providing policy governance where K8s RBAC leaves off . The OPA project describes itself as “an open source, general-purpose policy engine that enables unified, context-aware policy enforcement across the entire stack”. So, OPA is is a general purpose policy engine that can integrate with any stack, K8s being one of them.

Armory Policy Engine integrates OPA with the CD stack. Policies are applied consistently before deployment, enabling the CD platform to consider policies specific to pipeline creation and execution, along with admissions policies that a kube-api server might otherwise rely on OPA for.

With OPA, we define allow/deny rules that can be applied to requests (CRUD operations, conditional approvals, etc.). These rules are evaluated within the context of those requests. When used with K8s, we insert OPA as an Admission Controller. The kube-api server checks with OPA before executing any CRUD requests that pass an RBAC privilege check.

For example, a principal might have RBAC privileges to create a pod, but we need to ensure the request only pulls images from a trusted registry. With OPA, we can define the list of allowed registries. The kube-api server checks the request against RBAC and then passes it to OPA. Then, OPA parses the registry/image value and returns either allow or deny based on defined policies.

One model I’ve recently begun contemplating is applying policy at the K8s cluster level to effectively deny all requests unless they originate from a CD pipeline. From the pipeline, we can manage the K8s admission policy.

This can be applied across all target clusters, preventing any direct interaction with resources via the kube-api server while enforcing consistent policy from a single policy set definition. Essentially, you can have a single (non-replicated) policy for potentially thousands of K8s clusters that is immediately consistent. Using CD and K8s RBAC, we can restrict privileges to only update the OPA rules via the same CD platform pattern. The end result is an entirely auditable and secure single-source for all K8s cluster policies.

Recently Published Posts

September 21, 2021
|
by Nikema Prophet

Interview with Guillermo Huerta for National IT Professionals Day

To celebrate National IT Professionals Day, we’re sharing an interview I had with Armory’s Head of IT and Workplace, Guillermo Huerta. The interview is broken into seven parts. There’s a video and transcript for each section. Introductions Nikema Prophet: [00:00:00] I’m Nikema I am the Associate Community Marketing Manager at Armory and I’m talking to […]

Read more

September 7, 2021
|
by Nikema Prophet

Interview with Daniel Ko — Google Summer of Code 2021

I’m personally excited about this year’s Google Summer of Code (GSoC) project try.spinnaker.io. Daniel Ko is the student who worked with Armory mentors and the Continuous Delivery Foundation to complete the project. After his midterm demo, I asked Daniel some questions about the project and why he chose it. Nikema Prophet: What inspired you to […]

Read more

September 7, 2021
|
by Armory

Amazon EKS Anywhere + Armory

Armory is excited to share we are an Amazon EKS Anywhere launch partner. Amazon EKS Anywhere is a new deployment option for Amazon EKS that enables you to easily create and operate Kubernetes clusters on-premises, including on your virtual machines and bare metal servers.  Armory enables enterprises to unlock innovation by reliably deploying software at […]

Read more