Giter VIP home page Giter VIP logo

aegis's Introduction

💁‍♀️ Pssttt… Aegis Has a New Home

We are excited to announce that Aegis has moved to VMware Tanzu GitHub organization, where it will continue its journey under a new name: VMware Secrets Manager for Cloud-Native Apps.

This move is part of our effort to consolidate our projects and provide better support and development speed. Under VMware, the project will gain increased visibility, robust support, and a thriving ecosystem to accelerate its growth.

As a result of this transition, this repository is now archived and will no longer be maintained. All the active issues and pull requests will be migrated to the new repository. If you have any issues that have not been migrated, feel free to open them in the new repository.

Please note that the core functionality remains the same, though under the new organization and project name. Any future updates and enhancements will be carried out in the new repository.

For all future activities, please follow the new repository.

We appreciate your understanding and support as we continue to work towards providing the best secrets management solution for the known universe.

aegis's People

Contributors

abhishek44sharma avatar v0lkan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

aegis's Issues

add documentation to aegis go sdk

this can be part of aegis.z2h.dev too.

if these kinds of contents will increase, it might be time to switch to jeykll or some other static content generator too.

Get rid of the admin token

Here’s the reasoning:

We already secure sentinel-to-safe connectivity using mTLS. So, as long as no one can impersonate sentinel, sentinel can happily authenticate and authorize with safe.

We just need to secure access to sentinel with a role similar to this:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: aegis-system
  name: aegis-admin
rules:
- apiGroups: [""]
  resources: ["pods", "pods/log"]
  verbs: ["get", "list"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create"]

Then, only the users bound to this role (and also cluster admins) can kubectl exec on sentinel.

Since sentinel does not have any external-facing API, that will be the only way to generate secrets on the system.

Then, assuming SPIRE is happy as a clam, creating a secret will be as simple as something like this:

kubectl exec -it aegis-sentinel-aabbcc -- /bin/aegis secret \
--id workloadSvid \
--value "secretValue"

use a simple CI tool (like Ansible) to restore `safe`’s state after it crashes

Things to do:

  1. Use Ansible to talk to safe and fetch the admin token and also the private key
  2. Create some secrets and ensure that the workload sees those secrets.
  3. Manually delete the safe pod to emulate a crash
  4. Ensure that the persistent volume has state info when the new pod initializes.
  5. restore the state using ansible (assuming you have private key stored somewhere from previous steps)
  6. make sure that the workload sees secrets.

Update READMEs

Update the main README, and also READMEs of the child projects.

Make sure you add any missing license information for external dependencies that you leverage.

`sentinel` should be able to fetch admin token from `safe` once (and only once)

safe needs an API endpoint (secured with mTLS leveraging SPIRE SVIDs as certs) to deliver the AdminToken to the (human) operator.

Acceptance Criteria:

  1. safe shall have an AEGIS_ADMIN_SVIDS as an environment variable. Only these svids shall be able to use the token fetch API. (this can be useful to automate the process: CI can create a pod with an allowed SVID, call the admin API, fetch the token, store the token, and then create secrets for pods using that token).
  2. from sentinel call that API to fetch the token.
  3. from sentinel use the token to generate secrets for the demo workload.
  4. ensure that demo workload fetches the secrets.

Note that 4. requires to update sidecar to query safe for secrets over mTLS: Better to start there.

update the website

Right now, safe.z2h.dev is pretty blank. At least add some summary and some minimal design to it.

`safe` should create and store the `AdminToken` in memory

After introducing SPIRE, we retired notary, that also resulted in AdminToken not being delivered to safe anymore.

But the thing is, safe can very well use whatever random token generation logic notary has to create the same toke for itself once the pod starts.

ability to encrypt and backup in-memory data to persistent volume

Aegis stores everything in memory by design because it is the safest way to deal with sensitive data; however, that also means that when safe is evicted or crashed and reboots, all the stored secrets and admin token is gone.

Acceptance Criteria:

  1. safe shall have an API endpoint that only allowed admin svids can call. This API will return a private key and a public key pair.
  2. safe shall create Kubernetes secrets that only safe can reach and store the private and public keys.
  3. safe will encrypt its state to a persistent volume using the public key.
  4. upon restart safe will restore its state into memory using the private key.

Consider using age as an encryption tool https://github.com/FiloSottile/age

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.