in pkg/dataplane/internal/sample/client.go [15:71]
func main() {
azureCredential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to initialize azure credentials: %v", err)
}
// create a client for the MSI dataplane
factory := dataplane.NewClientFactory(azureCredential, "audience", nil)
identityURL := "" // value of the x-ms-identity-url header from ARM
msiClient, err := factory.NewClient(identityURL)
if err != nil {
log.Fatalf("error creating msi dataplane client: %v", err)
}
// get the credential for some identities
credential, err := msiClient.GetUserAssignedIdentitiesCredentials(context.Background(), dataplane.UserAssignedIdentitiesRequest{
IdentityIDs: []string{
"someIdentity",
"someOtherIdentity",
},
})
if err != nil {
log.Fatalf("error retrieving credential: %v", err)
}
// create a client for KeyVault
keyVaultUrl := "" // from your configuration
secretsClient, err := azsecrets.NewClient(keyVaultUrl, azureCredential, nil)
if err != nil {
log.Fatalf("error creating secrets client: %v", err)
}
// either store as a single msi in KeyVault
identifier := "" // something meaningful to you
name, params, err := dataplane.FormatManagedIdentityCredentialsForStorage(identifier, *credential)
if err != nil {
log.Fatalf("error formatting managed identity credentials: %v", err)
}
if _, err := secretsClient.SetSecret(context.Background(), name, params, nil); err != nil {
log.Fatalf("error uploading managed identity credentials to key vault: %v", err)
}
// or store individual uamsi values
for _, identity := range credential.ExplicitIdentities {
// choose some identifier known to clients that do not have access to the identity object for storage,
// to allow lookups
identifier := base36sha224([]byte(*identity.ObjectID))
name, params, err := dataplane.FormatUserAssignedIdentityCredentialsForStorage(identifier, identity)
if err != nil {
log.Fatalf("error formatting user-assigned managed identity credentials: %v", err)
}
if _, err := secretsClient.SetSecret(context.Background(), name, params, nil); err != nil {
log.Fatalf("error uploading user-assigned managed identity credentials to key vault: %v", err)
}
}
}