Go to file
Sam Salisbury 25137a1702
ci/packagespec (#9653)
* add packagespec build system

- The majority of changes in this commit are files generated
  by packagespec (everything in the packages-oss.lock directory).

* add .yamllint

* update to packagespec@fd54aea4

* ci: bust packagespec cache

- Change to packagespec results in package IDs that can use
  git tag refs, not just commit refs.

* update to packagepsec@5fc121d0

- This busts all caches, because of a change to the way we
  no longer traverse from tag refs to commit refs, due to
  the potential confusion this can cause.
- See fd54aea482
  for the original change to packagespec necessitating this.

* update to packagespec@5e6c87b6

- This completes the change to allowing git tag refs
  to be used for source IDs, begun in f130b940a8fbe3e9398225b08ea1d63420bef7b6

* update to packagespec@4d3c9e8b

- This busts cache, needed to apply previous change.

* remove RELEASE_BUILD_WORKFLOW_NAME

* update packagespec, add watch-ci target

* fix package names (do not refer to EDITION)

* remove EDITION input from packages-oss.yml

* bump package cache, update packagespec

* update packagespec, add 'aliases' target

* update packagespec; less output noise

* ci: give release bundle file a better name

- When performing a release build, this will include the build ID
  as part of the name, making it easier to distinguish from other
  builds.

* ci: create aliases tarball artifact

* ci: cache package metadata files

* ci: add metadata artifact

* ci: bust circleci package cache

* Revert "ci: bust circleci package cache"

This reverts commit 1320d182613466f0999d63f5742db12ac17f8e92.

* ci: remove aliases artifact

* ci: use buildID not workflowName to id artifacts

* packages: add BUNDLE_NAME metadata

* do not cache package metadata with binaries

* ci: bump package cache

* ci: debugging

* ci: fix package cache; update packagespec

* ci: update packagespec to 10e7beb2

* ci: write package metadata and aliases

* ci: switch to .zip artifacts

* switch package bundle back to tar.gz (from zip)

- Because of the way zip works, the zip archive was over 2GB rather than under 750MB as with tar.gz.

* bump packagespec, adds list-staged-builds

* update packagespec

* add publish stub + general tidy up

* bump packagespec

* bump packagespec; add make publish-config

* Makefile: tidy up packagespec targets

* pass PRODUCT_REPO_ROOT to packagespec

* bump go to 1.14.6

* packages-oss.yml: use more explicit base image

* bump packagespec to b899b7c1

* bump packagespec to f040ce8f

* packages-oss.yml: pin base image to digest

- This digest is pointed to by debian:buster-20200720
- Using a specific digest ensures that builds use the same
  base image in all contexts

* add release-repo; bump packagespec

* remove BUILD_TAGS and -tags flag

* bump packagespec to e444f742

* bump to go1.14.7

* ci: bump to go1.14.7
2020-08-11 10:00:59 +01:00
.circleci ci/packagespec (#9653) 2020-08-11 10:00:59 +01:00
.github Update bug_report.md (#9385) 2020-07-02 08:55:33 -07:00
.hooks pre-commit: no fail if circleci missing or too old (#6990) 2019-06-26 15:49:42 +01:00
api Upgrade to newer okta lib for pagination, fetch all groups using it (#9580) 2020-07-24 09:05:08 -04:00
audit Add backend type to audit logs (#9167) 2020-06-16 07:22:33 -05:00
builtin fixing a spelling error (#9693) 2020-08-09 06:17:02 -07:00
command adding new config flag disable_sentinel_trace (#9696) 2020-08-10 06:23:44 -04:00
helper Ensure that perf standbys can perform seal migrations. (#9690) 2020-08-10 08:35:57 -04:00
http adding new config flag disable_sentinel_trace (#9696) 2020-08-10 06:23:44 -04:00
internalshared Fix parsing of seal stanzas that have an array for `purpose` (#9589) 2020-07-27 16:28:52 -04:00
packages-oss.lock ci/packagespec (#9653) 2020-08-11 10:00:59 +01:00
physical raft: Fix some snapshot restore issues (#9533) 2020-07-21 10:59:07 -07:00
plugins/database Merge writeOpts and tlsAuthOpts after call to ApplyURI (#9519) 2020-07-22 12:09:02 -04:00
scripts Bundle couchbase database plugin with vault (#9664) 2020-08-07 11:01:04 +01:00
sdk adding support for ed25519 public keys (#9703) 2020-08-10 22:14:17 -07:00
serviceregistration Ensure "initialized" service registration tag is also present whenever Vault is unsealed, on both Consul and K8s (#8990) 2020-06-29 16:02:49 -04:00
shamir fix typo in comment (#5843) 2018-11-26 09:27:31 -05:00
terraform remove terraform/aws; replace with readme (#9686) 2020-08-07 18:40:48 +01:00
tools Switch bootstrap (except CI) over to using pinned versions from go.mod (#9000) 2020-05-14 13:45:12 -04:00
ui Add -dr-token flag to shamir-modal-flow used on DR Operation token in replication (#9675) 2020-08-10 15:46:32 -05:00
vault Ensure that perf standbys can perform seal migrations. (#9690) 2020-08-10 08:35:57 -04:00
vendor update go-limiter to v0.3.0 (#9697) 2020-08-10 17:04:50 +01:00
website Updates URLs to match new paths at Learn (#9679) 2020-08-10 13:40:09 -07:00
.gitattributes
.gitignore sys/config: config state endpoint (#7424) 2019-10-08 10:57:15 -07:00
.yamllint ci/packagespec (#9653) 2020-08-11 10:00:59 +01:00
CHANGELOG.md changelog++ 2020-08-10 13:50:52 -05:00
CONTRIBUTING.md Update contribution guidelines 2020-06-11 09:34:25 -07:00
LICENSE
Makefile ci/packagespec (#9653) 2020-08-11 10:00:59 +01:00
README.md Updates URLs to match new paths at Learn (#9679) 2020-08-10 13:40:09 -07:00
go.mod update go-limiter to v0.3.0 (#9697) 2020-08-10 17:04:50 +01:00
go.sum update go-limiter to v0.3.0 (#9697) 2020-08-10 17:04:50 +01:00
main.go Drop cli and meta packages 2017-10-24 09:27:19 -04:00
main_test.go
make.bat Spelling (#4119) 2018-03-20 14:54:10 -04:00
packages-oss.yml ci/packagespec (#9653) 2020-08-11 10:00:59 +01:00

README.md

Vault CircleCI vault enterprise


Please note: We take Vault's security and our users' trust very seriously. If you believe you have found a security issue in Vault, please responsibly disclose by contacting us at security@hashicorp.com.


Vault Logo

Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, and more. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log.

A modern system requires access to a multitude of secrets: database credentials, API keys for external services, credentials for service-oriented architecture communication, etc. Understanding who is accessing what secrets is already very difficult and platform-specific. Adding on key rolling, secure storage, and detailed audit logs is almost impossible without a custom solution. This is where Vault steps in.

The key features of Vault are:

  • Secure Secret Storage: Arbitrary key/value secrets can be stored in Vault. Vault encrypts these secrets prior to writing them to persistent storage, so gaining access to the raw storage isn't enough to access your secrets. Vault can write to disk, Consul, and more.

  • Dynamic Secrets: Vault can generate secrets on-demand for some systems, such as AWS or SQL databases. For example, when an application needs to access an S3 bucket, it asks Vault for credentials, and Vault will generate an AWS keypair with valid permissions on demand. After creating these dynamic secrets, Vault will also automatically revoke them after the lease is up.

  • Data Encryption: Vault can encrypt and decrypt data without storing it. This allows security teams to define encryption parameters and developers to store encrypted data in a location such as SQL without having to design their own encryption methods.

  • Leasing and Renewal: All secrets in Vault have a lease associated with it. At the end of the lease, Vault will automatically revoke that secret. Clients are able to renew leases via built-in renew APIs.

  • Revocation: Vault has built-in support for secret revocation. Vault can revoke not only single secrets, but a tree of secrets, for example all secrets read by a specific user, or all secrets of a particular type. Revocation assists in key rolling as well as locking down systems in the case of an intrusion.

Documentation, Getting Started, and Certification Exams

Documentation is available on the Vault website.

If you're new to Vault and want to get started with security automation, please check out our Getting Started guides on HashiCorp's learning platform. There are also additional guides to continue your learning.

Show off your Vault knowledge by passing a certification exam. Visit the certification page for information about exams and find study materials on HashiCorp's learning platform.

Developing Vault

If you wish to work on Vault itself or any of its built-in systems, you'll first need Go installed on your machine. Go version 1.13.7+ is required.

For local dev first make sure Go is properly installed, including setting up a GOPATH. Ensure that $GOPATH/bin is in your path as some distributions bundle old version of build tools. Next, clone this repository. Vault uses Go Modules, so it is recommended that you clone the repository outside of the GOPATH. You can then download any required build tools by bootstrapping your environment:

$ make bootstrap
...

To compile a development version of Vault, run make or make dev. This will put the Vault binary in the bin and $GOPATH/bin folders:

$ make dev
...
$ bin/vault
...

To compile a development version of Vault with the UI, run make static-dist dev-ui. This will put the Vault binary in the bin and $GOPATH/bin folders:

$ make static-dist dev-ui
...
$ bin/vault
...

To run tests, type make test. Note: this requires Docker to be installed. If this exits with exit status 0, then everything is working!

$ make test
...

If you're developing a specific package, you can run tests for just that package by specifying the TEST variable. For example below, only vault package tests will be run.

$ make test TEST=./vault
...

Acceptance Tests

Vault has comprehensive acceptance tests covering most of the features of the secret and auth methods.

If you're working on a feature of a secret or auth method and want to verify it is functioning (and also hasn't broken anything else), we recommend running the acceptance tests.

Warning: The acceptance tests create/destroy/modify real resources, which may incur real costs in some cases. In the presence of a bug, it is technically possible that broken backends could leave dangling data behind. Therefore, please run the acceptance tests at your own risk. At the very least, we recommend running them in their own private account for whatever backend you're testing.

To run the acceptance tests, invoke make testacc:

$ make testacc TEST=./builtin/logical/consul
...

The TEST variable is required, and you should specify the folder where the backend is. The TESTARGS variable is recommended to filter down to a specific resource to test, since testing all of them at once can sometimes take a very long time.

Acceptance tests typically require other environment variables to be set for things such as access keys. The test itself should error early and tell you what to set, so it is not documented here.

For more information on Vault Enterprise features, visit the Vault Enterprise site.