package
0.2.9
Repository: https://github.com/gaia-pipeline/gaia.git
Documentation: pkg.go.dev

# README

Security

Certificates

Gaia, when first started will create a signed certificate in a location defined by the user under gaia.Cfg.CAPath which can be set by the runtime flag -capath=/etc/gaia/cert for example. It is recommended that the certificate is kept separate from the main Gaia work folder and in a secure location.

This certificate is used in two places. First, in the communication between the admin portal and the back-end. Second, by the Vault.

The Vault

The Vault is a secure storage for secret values like, password, tokens and other things that the user would like to pass securly into a Pipeline. The Vault is encrypted using AES cipher technology where the key is derived from the above certificate and the IV is included in the encrypted content.

The Vault file's location can be configured through the runtime variable called VaultPath. For maximum security it is recommended that this file is kept on an encrypted, mounted drive. In case there is a breach the drive can be quickly removed and the file deleted, thus rotating all of the secrets at once, under Gaia.

To create an encrypted MacOSX image follow this guide: Encrypted Secure Disk Image on Mac.

To create an encrypted disk on Linux follow this guide: Encrypted Disk Image on Linux.

The admin will never see the secure values, not when editing, not when adding and not when looking at the list of secrets. Only the Key names are displayed at all times.

It's possible to Add, Delete, Update and List secrets in the system.

# Packages

# Functions

GenerateRandomUUIDV5 will return a 32bit random seeded UUID based on a randomly generated UUID v4.
InitCA setups a new instance of CA and generates a new CA if not already exists.
NewVault creates a vault which is a simple k/v storage medium with AES encryption.

# Structs

CA represents one generated CA.
FileVaultStorer implements VaultStorer as a simple file based storage device.
Vault is a secret storage for data that gaia needs to store encrypted.

# Interfaces

CAAPI represents the interface used to handle certificates.
GaiaVault defines a set of apis that a Vault must provide in order to be a Gaia Vault.
VaultStorer defines a storage medium for the Vault.