Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VAULT-8703 Add warning for dangerous undocumented overrides, if used, in status response #17855

Merged
merged 3 commits into from Nov 9, 2022

Conversation

VioletHynes
Copy link
Contributor

@VioletHynes VioletHynes commented Nov 8, 2022

If this environment variable is set, you will now get the following output:

violet@violet-TX54KFJWXM vault % vault status
Key             Value
---             -----
Seal Type       shamir
Initialized     true
Sealed          false
Total Shares    1
Threshold       1
Version         1.13.0-dev1
Build Date      2022-10-31T11:14:49Z
Storage Type    inmem
Cluster Name    vault-cluster-30c0be85
Cluster ID      64a060de-020b-91a7-ec26-0a6686c3beea
HA Enabled      false
Warnings        [Server Side Consistent Tokens are disabled, due to the VAULT_DISABLE_SERVER_SIDE_CONSISTENT_TOKENS environment variable being set. It is not recommended to run Vault for an extended period of time with this configuration.]

"Warnings" will not be present if this option is not given.

Also, json output:

violet@violet-TX54KFJWXM vault % vault status -format=json
{
  "type": "shamir",
  "initialized": true,
  "sealed": false,
  "t": 1,
  "n": 1,
  "progress": 0,
  "nonce": "",
  "version": "1.13.0-dev1",
  "build_date": "2022-10-31T11:14:49Z",
  "migration": false,
  "cluster_name": "vault-cluster-8c976330",
  "cluster_id": "0d51a6d0-d7c7-9cdb-0693-abc77e063bee",
  "recovery_seal": false,
  "storage_type": "inmem",
  "warnings": [
    "Server Side Consistent Tokens are disabled, due to the VAULT_DISABLE_SERVER_SIDE_CONSISTENT_TOKENS environment variable being set. It is not recommended to run Vault for an extended period of time with this configuration."
  ],
  "ha_enabled": false,
  "active_time": "0001-01-01T00:00:00Z"
}

I couldn't find an appropriate docs page to add the note about this new warning option in, but I think it's probably fine without, as it only affects customers that have added out-of-docs options.

@VioletHynes VioletHynes marked this pull request as ready for review November 8, 2022 21:05
command/format_test.go Outdated Show resolved Hide resolved
@@ -402,6 +402,9 @@ func (t TableFormatter) OutputSealStatusStruct(ui cli.Ui, secret *api.Secret, da
if status.LastWAL != 0 {
out = append(out, fmt.Sprintf("Last WAL | %d", status.LastWAL))
}
if len(status.Warnings) > 0 {
out = append(out, fmt.Sprintf("Warnings | %v", status.Warnings))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suspect %v isn't going to do a great job of handling multiple strings containing whitespace, it won't be clear where one ends and the next begins.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it does kinda just append them. I think to some extent that should be on us to word them well, but similarly, I would hope we don't get into the kind of state where someone has 10 of these kinds of warnings.

In other words, this could be optimistic, but I feel like >1 warning is a very rare case, as long as we keep what we warn on broadly consistent.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might look funny but would it be worth quoting them so there is at least some means of separation?

func (core *Core) getStatusWarnings() []string {
var warnings []string
if core.GetCoreConfigInternal() != nil && core.GetCoreConfigInternal().DisableSSCTokens {
warnings = append(warnings, "Server Side Consistent Tokens are disabled, due to the "+
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we have a policy that we introduce warnings like this, we link them to something external that we can modify? I just worry that otherwise we may have to come back multiple times to this code to add extra details in response to user questions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Depending on what you mean, this could amount to us having some level of documentation for these (otherwise) undocumented options, which does have potential implications. I'm not entirely against this, but I worry it would go against our core goal for the kinds of options we want to warn about.

@ccapurso can probably confirm in more detail, but I think the main onus for this is some kind of way for us to tell at-a-glance that this feature is being used, as well as reminding the customer that it's not particularly supported. I hope we wouldn't require too much detail here, and I hope the number of customers that see these warnings remains extremely low.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My understanding of the original discussion was that these warnings were going to identify that exceptional overrides were being used. Long-lived, documented overrides are often less likely to be harmful. The means to identify something in this way is almost more for identifying potential things to look at during incident response.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this could amount to us having some level of documentation for these (otherwise) undocumented options

Forgot about that wrinkle.

If you went with something shorter like "VAULT_DISABLE_SERVER_SIDE_CONSISTENT_TOKENS=true", that would address my other comment about %v, and this one too, in the sense that I'm not worried that we'll have to revisit the verbiage. It wouldn't do a great job of "reminding the customer that it's not particularly supported", but I guess I'm afraid that we're biting off more than we can chew in attempting to pithily tell the user they should be moving away from this setting.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case, we wouldn't necessarily be giving warnings -- which might be okay, to be clear. If we shorten it, we'd need a different name, like "Unrecommended Settings" (open to suggestions if you can think of something that sounds better), but I guess my worry with that is that that's also lacking in description too. I guess in either case, we're picking our poison.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'm not hung up on this, I'm going to approve and leave it for you to decide. My concerns may be unwarranted, I just imagine various scenarios where we get into trouble by trying to thread this needle of giving vague warnings without expanding on them anywhere. Like what if a big company using the var tries to upgrade, sees this, and tells us: "Look, we know we need to move away from this, and we're working on it, but our users will freak out if they see this message, can you tone it down? We can't upgrade with this text in vault status."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I definitely see the argument. Like I said, I guess I see this as picking our poison, as something like "Unsupported Settings" could make customers raise their hackles too.

I think I'll keep it as-is, especially as most customers hopefully won't see this, and "Warnings" feels like quite a generic name if we do want to change the contents in the future.

@VioletHynes VioletHynes merged commit 80cc008 into main Nov 9, 2022
@VioletHynes VioletHynes deleted the violethynes/VAULT-8703 branch November 9, 2022 16:44
jayant07-yb pushed a commit to jayant07-yb/hashicorp-vault-integrations that referenced this pull request Mar 15, 2023
… in status response (hashicorp#17855)

* VAULT-8703 Add warning for dangerous undocumented overrides, if used, in status response

* VAULT-8703 add changelog

* VAULT-8703 fix append
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants