diff --git a/internal/kms/vault.go b/internal/kms/vault.go index d1e146538..6a2f2c744 100644 --- a/internal/kms/vault.go +++ b/internal/kms/vault.go @@ -43,7 +43,7 @@ const ( vaultDefaultRole = "csi-kubernetes" vaultDefaultNamespace = "" vaultDefaultPassphrasePath = "" - vaultDefaultCAVerify = "true" + vaultDefaultCAVerify = true vaultDefaultDestroyKeys = "true" ) @@ -208,7 +208,7 @@ func (vc *vaultConnection) initConnection(config map[string]interface{}) error { keyContext[loss.KeyVaultNamespace] = vaultNamespace } - verifyCA := vaultDefaultCAVerify // optional + verifyCA := strconv.FormatBool(vaultDefaultCAVerify) // optional err = setConfigString(&verifyCA, config, "vaultCAVerify") if errors.Is(err, errConfigOptionInvalid) { return err diff --git a/internal/kms/vault_tokens.go b/internal/kms/vault_tokens.go index 46d7f1a50..d9eee0816 100644 --- a/internal/kms/vault_tokens.go +++ b/internal/kms/vault_tokens.go @@ -101,7 +101,6 @@ func (v *vaultTokenConf) convertStdVaultToCSIConfig(s *standardVault) { // by default the CA should get verified, only when VaultSkipVerify is // set, verification should be disabled - v.VaultCAVerify = vaultDefaultCAVerify verify, err := strconv.ParseBool(s.VaultSkipVerify) if err == nil { v.VaultCAVerify = strconv.FormatBool(!verify) @@ -124,8 +123,14 @@ func transformConfig(svMap map[string]interface{}) (map[string]interface{}, erro return nil, fmt.Errorf("failed to convert config %T to JSON: %w", svMap, err) } - // convert the JSON back to a standardVault struct - sv := &standardVault{} + // convert the JSON back to a standardVault struct, default values are + // set in case the configuration does not provide all options + sv := &standardVault{ + VaultDestroyKeys: vaultDefaultDestroyKeys, + VaultNamespace: vaultDefaultNamespace, + VaultSkipVerify: strconv.FormatBool(!vaultDefaultCAVerify), + } + err = json.Unmarshal(data, sv) if err != nil { return nil, fmt.Errorf("failed to Unmarshal the vault configuration: %w", err) diff --git a/internal/kms/vault_tokens_test.go b/internal/kms/vault_tokens_test.go index df1e105f0..a398b7e80 100644 --- a/internal/kms/vault_tokens_test.go +++ b/internal/kms/vault_tokens_test.go @@ -19,6 +19,7 @@ package kms import ( "encoding/json" "errors" + "strconv" "strings" "testing" @@ -208,6 +209,18 @@ func TestTransformConfig(t *testing.T) { assert.Equal(t, config["vaultCAVerify"], "false") } +func TestTransformConfigDefaults(t *testing.T) { + t.Parallel() + cm := make(map[string]interface{}) + cm["KMS_PROVIDER"] = kmsTypeVaultTokens + + config, err := transformConfig(cm) + require.NoError(t, err) + assert.Equal(t, config["encryptionKMSType"], cm["KMS_PROVIDER"]) + assert.Equal(t, config["vaultDestroyKeys"], vaultDefaultDestroyKeys) + assert.Equal(t, config["vaultCAVerify"], strconv.FormatBool(vaultDefaultCAVerify)) +} + func TestVaultTokensKMSRegistered(t *testing.T) { t.Parallel() _, ok := kmsManager.providers[kmsTypeVaultTokens]