Skip to content

Commit

Permalink
Backport of Passes configured role name to Vault for AWS auth in Conn…
Browse files Browse the repository at this point in the history
…ect CA into release/1.16.x (#18099)

* backport of commit 4034bb2

* backport of commit 9c4c3c5

* backport of commit 7282078

---------

Co-authored-by: Tom Davies <thomas.23.davies@bt.com>
  • Loading branch information
hc-github-team-consul-core and t-davies authored Jul 12, 2023
1 parent 9d6dff8 commit b26f795
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 3 deletions.
2 changes: 2 additions & 0 deletions .changelog/17885.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
```release-note:bug
ca: Fixed a bug where the Vault provider was not passing the configured role param for AWS auth
7 changes: 7 additions & 0 deletions agent/connect/ca/provider_vault_auth_aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,13 @@ func (g *AWSLoginDataGenerator) GenerateLoginData(authMethod *structs.VaultAuthM
if err != nil {
return nil, fmt.Errorf("aws auth failed to generate login data: %w", err)
}

// If a Vault role name is specified, we need to manually add this
role, ok := authMethod.Params["role"]
if ok {
loginData["role"] = role
}

return loginData, nil
}

Expand Down
17 changes: 14 additions & 3 deletions agent/connect/ca/provider_vault_auth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,15 +278,22 @@ func TestVaultCAProvider_AWSCredentialsConfig(t *testing.T) {

func TestVaultCAProvider_AWSLoginDataGenerator(t *testing.T) {
cases := map[string]struct {
expErr error
expErr error
authMethod structs.VaultAuthMethod
}{
"valid login data": {},
"valid login data": {
authMethod: structs.VaultAuthMethod{},
},
"with role": {
expErr: nil,
authMethod: structs.VaultAuthMethod{Type: "aws", MountPath: "", Params: map[string]interface{}{"role": "test-role"}},
},
}

for name, c := range cases {
t.Run(name, func(t *testing.T) {
ldg := &AWSLoginDataGenerator{credentials: credentials.AnonymousCredentials}
loginData, err := ldg.GenerateLoginData(&structs.VaultAuthMethod{})
loginData, err := ldg.GenerateLoginData(&c.authMethod)
if c.expErr != nil {
require.Error(t, err)
require.Contains(t, err.Error(), c.expErr.Error())
Expand All @@ -307,6 +314,10 @@ func TestVaultCAProvider_AWSLoginDataGenerator(t *testing.T) {
require.True(t, exists, "missing expected key: %s", key)
require.NotEmpty(t, val, "expected non-empty value for key: %s", key)
}

if c.authMethod.Params["role"] != nil {
require.Equal(t, c.authMethod.Params["role"], loginData["role"])
}
})
}
}
Expand Down

0 comments on commit b26f795

Please sign in to comment.