Skip to content

Development

Design principles

Trousseau is built against the following principles:

  • zero trust security model
  • develop in Golang
  • respectful of Kubernetes native API and the Kubernetes KMS provider plugin framework
  • integrate with multiple KMS provider solutions

Zero Trust security model

Starting with version 1.1.0, Trousseau introduced a Zero trust security model addressing 5 out 6 key principles:

Principle Trousseau Status
single strong source of user identity integrate with a remote KMS
user authentication support separation of duties
machine authentication Kubernetes ServiceAccount & KMS Kubernetes Auth method
additional context check, such as policy compliance and device health a GitHub issues
authorization policies to access an application KMS policy & role
access control policies within an application dedicated token recovered via ConfigMap

Develop in Golang

The development language has been chosen based on the ecosystem in which Kubernetes resources are developped.

Kubernetes native

To provide the maximum flexibility when being integrated within an end-to-end DevOps journey, using a native Kubernetes API approach allows to reduce the next to call for custom API or run extra CLI tooling in runners.
As an extra benefit, this will reduce the need for a DevOps team to learn new niche skills and have a clear separation of duties with the Security team.

To support the above, Trousseau is leveraging the native Kubernetes KMS provider framework to secure secrets with a remote KMS while still being safe locally within the Kubernetes etcd by acting as a KMS broker between the DevOps team, the kube-apiserver and the remote KMS.

KMS providers

Trousseau aims to provide support for multiple KMS providers. As per version 1.1.0 of Trousseau, the following KMS providers are supported:

KMS Provider Version Status
HashiCorp Vault (Community & Enterprise) 1.x
HashiCorp Cloud Vault Enterprise n/a