Azure Key Vault Добавить политику доступа с C# - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь получить все сертификаты, ключи и секреты из хранилища ключей, чтобы выполнить тест на соответствие его настроек. Мне удалось создать Key Vault Client, используя Azure Management SDK,

KeyVault Client objKeyVaultClient = new KeyVaultClient(
                                                            async (string authority, string resource, string scope) =>
                                                           {
                                                                ...
                                                           }
                                                      );

и пытаясь получить сертификаты / ключи / секреты с помощью:

Task<IPage<CertificateItem>> test = objKeyVaultClient.GetCertificatesAsync(<vaultUri>);

Однако сначала я нужно установить политики доступа с разрешениями List и Get. В PowerShell я достигаю этого с помощью:

Set-AzKeyVaultAccessPolicy -VaultName <VaultName> -UserPrincipalName <upn> -PermissionsToKeys List,Get

Знаете ли вы, как я могу сделать то же самое в C#?

1 Ответ

0 голосов
/ 22 апреля 2020

Если вы хотите управлять Azure политикой доступа к хранилищу ключей с помощью Net, обратитесь к следующим шагам

  1. для создания субъекта службы (для этого я использую Azure CLI)
az login
az account set --subscription "<your subscription id>"
# the sp will have Azure Contributor role
az ad sp create-for-rbac -n "readMetric" 

enter image description here

Код
 // please install sdk Microsoft.Azure.Management.Fluent
 private static String tenantId=""; // sp tenant
    private static String clientId = ""; // sp appid

    private static String clientKey = "";// sp password
    private static String subscriptionId=""; //sp subscription id

 var creds=   SdkContext.AzureCredentialsFactory.FromServicePrincipal(clientId,clientKey,tenantId,AzureEnvironment.AzureGlobalCloud);
var azure = Microsoft.Azure.Management.Fluent.Azure
                .Configure()
                .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                .Authenticate(creds)
                .WithSubscription(subscriptionId);

var vault = await azure.Vaults.GetByResourceGroupAsync("group name", "vault name");
await vault.Update().DefineAccessPolicy()
                             .ForUser("userPrincipalName")
                             .AllowKeyPermissions(KeyPermissions.Get)
                             .AllowKeyPermissions(KeyPermissions.List)
                             .Attach()
                          .ApplyAsync();
...