/secretfacade

Primary LanguageGoApache License 2.0Apache-2.0

Facade for reading and writing to secret stores for Go

Introduction

In order to work with an ever increasing number of secret stores and providers this library provides a basic interface to allow client applications to read and write secrets. It optionally provides idiomatic authentication mechanisms for each of the various secret stores.

Installation and usage

To install, run:

$ go get github.com/jenkins-x-plugins/secretfacade

And import using:

import "github.com/jenkins-x-plugins/secretfacade"

Usage:

package main

import (
	"fmt"

	"github.com/jenkins-x-plugins/secretfacade/pkg/secretstore"
	"github.com/jenkins-x-plugins/secretfacade/pkg/secretstore/factory"
)

func main() {
	factory := factory.SecretManagerFactory{}
	mgr, err := factory.NewSecretManager(secretstore.SecretStoreTypeGoogle)
	if err != nil {
		panic("error creating google secret manager from factory")
	}

	err = mgr.SetSecret("projectId", "myDatabaseConnectionString", &secretstore.SecretValue{Value: "superSecret"})
	if err != nil {
		panic("error setting myDatabaseConnectionString secret")
	}

	connectionStringSecret, err := mgr.GetSecret("projectId", "myDatabaseConnectionString", "")
	if err != nil {
		panic("error getting myDatabaseConnectionString secret")
	}

	fmt.Printf("Please don't print out secrets like %s", connectionStringSecret)
}