Skip to content

Commit

Permalink
Add MSI Support for Azure plugin. (#6938)
Browse files Browse the repository at this point in the history
Signed-off-by: yanggang <gang.yang@daocloud.io>
  • Loading branch information
Yang Gang authored Oct 16, 2023
1 parent b4fb2d9 commit 7ca33f8
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
1 change: 1 addition & 0 deletions changelogs/unreleased/6938-yanggangtony
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add MSI Support for Azure plugin.
11 changes: 10 additions & 1 deletion pkg/util/azure/credential.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"github.com/pkg/errors"
)

// NewCredential chains the config credential and workload identity credential
// NewCredential chains the config credential , workload identity credential , managed identity credential
func NewCredential(creds map[string]string, options policy.ClientOptions) (azcore.TokenCredential, error) {
var (
credential []azcore.TokenCredential
Expand Down Expand Up @@ -60,6 +60,15 @@ func NewCredential(creds map[string]string, options policy.ClientOptions) (azcor
errMsgs = append(errMsgs, err.Error())
}

//managed identity credential
o := &azidentity.ManagedIdentityCredentialOptions{ClientOptions: options, ID: azidentity.ClientID(creds[CredentialKeyClientID])}
msi, err := azidentity.NewManagedIdentityCredential(o)
if err == nil {
credential = append(credential, msi)
} else {
errMsgs = append(errMsgs, err.Error())
}

if len(credential) == 0 {
return nil, errors.Errorf("failed to create Azure credential: %s", strings.Join(errMsgs, "\n\t"))
}
Expand Down
12 changes: 10 additions & 2 deletions pkg/util/azure/credential_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ limitations under the License.
package azure

import (
"context"
"testing"
"time"

"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
Expand All @@ -26,10 +28,15 @@ import (

func TestNewCredential(t *testing.T) {
options := policy.ClientOptions{}

// no credentials
creds := map[string]string{}
_, err := NewCredential(creds, options)
tokenCredential, _ := NewCredential(creds, options)

var scopes []string
scopes = append(scopes, "https://management.core.windows.net//.default")

ctx, _ := context.WithTimeout(context.Background(), time.Second*2)
_, err := tokenCredential.GetToken(ctx, policy.TokenRequestOptions{Scopes: scopes})
require.NotNil(t, err)

// config credential
Expand All @@ -40,6 +47,7 @@ func TestNewCredential(t *testing.T) {
}
_, err = NewCredential(creds, options)
require.Nil(t, err)

}

func Test_newConfigCredential(t *testing.T) {
Expand Down

0 comments on commit 7ca33f8

Please sign in to comment.