open-vault/helper
Mike Palmiotto 439e35f50f
Vault 6773/raft rejoin nonvoter (#16324)
* raft: Ensure init before setting suffrage

As reported in https://hashicorp.atlassian.net/browse/VAULT-6773:

	The /sys/storage/raft/join endpoint is intended to be unauthenticated. We rely
	on the seal to manage trust.

	It’s possible to use multiple join requests to switch nodes from voter to
	non-voter. The screenshot shows a 3 node cluster where vault_2 is the leader,
	and vault_3 and vault_4 are followers with non-voters set to false.  sent two
	requests to the raft join endpoint to have vault_3 and vault_4 join the cluster
	with non_voters:true.

This commit fixes the issue by delaying the call to SetDesiredSuffrage until after
the initialization check, preventing unauthenticated mangling of voter status.

Tested locally using
https://github.com/hashicorp/vault-tools/blob/main/users/ncabatoff/cluster/raft.sh
and the reproducer outlined in VAULT-6773.

* raft: Return join err on failure

This is necessary to correctly distinguish errors returned from the Join
workflow. Previously, errors were being masked as timeouts.

* raft: Default autopilot parameters in teststorage

Change some defaults so we don't have to pass in parameters or set them
in the originating tests. These storage types are only used in two
places:

1) Raft HA testing
2) Seal migration testing

Both consumers have been tested and pass with this change.

* changelog: Unauthn voter status change bugfix
2022-07-18 14:37:12 -04:00
..
benchhelpers Update deps for consul-template 0.29.0 (#15293) 2022-05-05 10:30:40 -07:00
builtinplugins Adding vault-plugin-secrets-kubernetes v0.1.0 (#15551) 2022-05-20 14:13:33 -07:00
constants Introduce fips build tag (#14495) 2022-03-15 13:04:21 -04:00
dhutil Remove spurious fmt.Printf calls including one of a key (#15344) 2022-05-19 12:27:02 -07:00
fairshare VAULT-4240 time.After() in a select statement can lead to memory leak (#14814) 2022-04-01 10:17:11 -04:00
flag-kv Errwrap everywhere (#4252) 2018-04-05 11:49:21 -04:00
flag-slice command/server: add config loading 2015-03-12 15:21:11 -07:00
forwarding VAULT-6614 Enable role based quotas for lease-count quotas (OSS) (#16157) 2022-07-05 13:02:00 -04:00
hostutil Convert to Go 1.17 go:build directive (#13579) 2022-01-05 12:02:03 -06:00
identity VAULT-6614 Enable role based quotas for lease-count quotas (OSS) (#16157) 2022-07-05 13:02:00 -04:00
metricsutil Add database plugin metrics around connections (#16048) 2022-06-27 09:34:45 -07:00
monitor api/monitor: Adding log format to monitor command and debug (#15536) 2022-05-24 13:10:53 -04:00
namespace When tainting a route during setup, pre-calculate the namespace specific path (#15067) 2022-04-26 09:13:45 -07:00
osutil Fix nightly tests and debug (#14970) 2022-04-12 06:08:28 +05:30
parseip Move to go 1.17 (#12868) 2021-10-21 09:32:03 -04:00
pgpkeys helper: deprecate errwrap.Wrapf() (#11556) 2021-05-07 08:53:20 -04:00
policies Run a more strict formatter over the code (#11312) 2021-04-08 09:43:39 -07:00
proxyutil remove mount accessor from MFA config (#14406) 2022-03-09 09:14:30 -08:00
random Only use additional entropy source when configured within transit and sys random (#15734) 2022-06-01 14:56:39 -04:00
storagepacker VAULT-6614 Enable role based quotas for lease-count quotas (OSS) (#16157) 2022-07-05 13:02:00 -04:00
testhelpers Vault 6773/raft rejoin nonvoter (#16324) 2022-07-18 14:37:12 -04:00
timeutil Fix Racy Activity Log Tests (#10484) 2020-12-02 13:48:13 -07:00