@@ -28,6 +28,7 @@ import (
28
28
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault"
29
29
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
30
30
"github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac"
31
+ "github.com/Azure/azure-sdk-for-go/services/msi/mgmt/2018-11-30/msi"
31
32
"github.com/Azure/go-autorest/autorest"
32
33
"github.com/Azure/go-autorest/autorest/adal"
33
34
"github.com/Azure/go-autorest/autorest/azure"
@@ -152,11 +153,17 @@ func generateSASToken(accountName, accountKey string) string {
152
153
}
153
154
154
155
func createVault (ctx context.Context , cred azcore.TokenCredential ) (* armkeyvault.Vault , error ) {
155
- objectID , err := getServicePrincipalObjectID (ctx , clientID )
156
+ clientObjectID , err := getServicePrincipalObjectID (ctx , clientID )
156
157
if err != nil {
157
158
return nil , err
158
159
}
159
- ginkgo .By ("object ID: " + objectID )
160
+ ginkgo .By ("client object ID: " + clientObjectID )
161
+
162
+ msiObjectID , err := getMSIObjectID (ctx , "blobfuse-csi-driver-e2e-test-id" )
163
+ if err != nil {
164
+ return nil , err
165
+ }
166
+ ginkgo .By ("MSI object ID: " + msiObjectID )
160
167
161
168
vaultsClient , err := armkeyvault .NewVaultsClient (subscriptionID , cred , nil )
162
169
if err != nil {
@@ -176,9 +183,20 @@ func createVault(ctx context.Context, cred azcore.TokenCredential) (*armkeyvault
176
183
},
177
184
TenantID : to .Ptr (TenantID ),
178
185
AccessPolicies : []* armkeyvault.AccessPolicyEntry {
186
+ // permission for upstream e2e test
187
+ {
188
+ TenantID : to .Ptr (TenantID ),
189
+ ObjectID : to .Ptr (clientObjectID ),
190
+ Permissions : & armkeyvault.Permissions {
191
+ Secrets : []* armkeyvault.SecretPermissions {
192
+ to .Ptr (armkeyvault .SecretPermissionsGet ),
193
+ },
194
+ },
195
+ },
196
+ // permission for upstream e2e-vmss test
179
197
{
180
198
TenantID : to .Ptr (TenantID ),
181
- ObjectID : to .Ptr (objectID ),
199
+ ObjectID : to .Ptr (msiObjectID ),
182
200
Permissions : & armkeyvault.Permissions {
183
201
Secrets : []* armkeyvault.SecretPermissions {
184
202
to .Ptr (armkeyvault .SecretPermissionsGet ),
@@ -310,3 +328,39 @@ func getServicePrincipalsClient() (*graphrbac.ServicePrincipalsClient, error) {
310
328
311
329
return & spClient , nil
312
330
}
331
+
332
+ func getMSIUserAssignedIDClient () (* msi.UserAssignedIdentitiesClient , error ) {
333
+ msiClient := msi .NewUserAssignedIdentitiesClient (subscriptionID )
334
+
335
+ env , err := azure .EnvironmentFromName (cloud )
336
+ if err != nil {
337
+ return nil , err
338
+ }
339
+
340
+ oauthConfig , err := adal .NewOAuthConfig (env .ActiveDirectoryEndpoint , TenantID )
341
+ if err != nil {
342
+ return nil , err
343
+ }
344
+
345
+ token , err := adal .NewServicePrincipalToken (* oauthConfig , clientID , clientSecret , env .ResourceManagerEndpoint )
346
+ if err != nil {
347
+ return nil , err
348
+ }
349
+
350
+ authorizer := autorest .NewBearerAuthorizer (token )
351
+
352
+ msiClient .Authorizer = authorizer
353
+
354
+ return & msiClient , nil
355
+ }
356
+
357
+ func getMSIObjectID (ctx context.Context , identityName string ) (string , error ) {
358
+ msiClient , err := getMSIUserAssignedIDClient ()
359
+ if err != nil {
360
+ return "" , err
361
+ }
362
+
363
+ id , err := msiClient .Get (ctx , resourceGroupName , identityName )
364
+
365
+ return id .UserAssignedIdentityProperties .PrincipalID .String (), err
366
+ }
0 commit comments