Мне нужно программно разрешить AzureKeyVault и ближайший я получил к нему команду Set-AzureRmKeyVaultAccessPolicy powershell.Есть ли эквивалент Set-AzureRmKeyVaultAccessPolicy в REST API или .Net SDK?
Есть ли. SDK для этого или REST API?
Мне нужно программно разрешить AzureKeyVault и ближайший я получил к нему команду Set-AzureRmKeyVaultAccessPolicy powershell.Есть ли эквивалент Set-AzureRmKeyVaultAccessPolicy в REST API или .Net SDK?
Есть ли. SDK для этого или REST API?
here you go, вы, вероятно, могли бы найти что-то подобное для .NET SDK.
Кроме того, если вы Set-AzureRmKeyVaultAccessPolicy -debug
вы найдете необходимую информацию:
DEBUG: ============================ HTTP REQUEST ============================
HTTP Method:
PUT
Absolute Uri:
https://management.azure.com/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.KeyVault/vaults/xxx?api-version=2015-06-01
Body {Omitted}
редактировать: Для дальнейшего использования, PowerShell использует REST API-интерфейсы. Если для него есть команда PS, определенно есть конечная точка REST. По Junnas
Мы можем использовать Microsoft Azure Key Vault Management, чтобы сделать это. Это Предварительный просмотр версия. Мы можем создать или обновить Key Vault с помощью функции keyVaultManagementClient.Vaults.CreateOrUpdateAsync(). Я сделал демо для него. Мои шаги подробно являются следующие:
Предпосылки:
реестра приложение в Azure AD и создать принцип обслуживания для него. Более подробные шаги см. В document.
Шаги:
1.Create С # консольное приложение
2.Add демо-код в проекте
using System;
using System.Collections.Generic;
using Microsoft.Azure.Management.KeyVault;
using Microsoft.Azure.Management.KeyVault.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest;
var subscriptionId = "Your Subscription Id";
var clientId = "Your Registry Application Id";
var tenantId = "Your tenant Id";
var secretKey = "Application secret Key";
var objectId = "Registry Application object Id"
var clientCredential = new ClientCredential(clientId, secretKey);
var context = new AuthenticationContext("https://login.windows.net/" + tenantId);
const string resourceGroupName = "tom";
// The name of the vault to create.
const string vaultName = "TomNewKeyVaultForTest";
var accessPolicy = new AccessPolicyEntry
{
ApplicationId = Guid.Parse(clientId),
TenantId = Guid.Parse(tenantId),
Permissions = new Permissions
{
Keys = new List<string> { "List","Get" },
Secrets = new List<string> { "All" }
},
ObjectId = Guid.Parse(objectId)
};
VaultProperties vaultProps = new VaultProperties
{
EnabledForTemplateDeployment = true,
TenantId = Guid.Parse(tenantId),
AccessPolicies = new List<AccessPolicyEntry>
{
accessPolicy
}
};
Microsoft.Rest.ServiceClientCredentials credentials = new TokenCredentials(token);
VaultCreateOrUpdateParameters vaultParams = new VaultCreateOrUpdateParameters("eastasia", vaultProps);
KeyVaultManagementClient keyVaultManagementClient= new KeyVaultManagementClient(credentials)
{
SubscriptionId = subscriptionId
};
var result = keyVaultManagementClient.Vaults.CreateOrUpdateAsync(resourceGroupName, vaultName, vaultParams).Result;
3.Debug демонстрационная
4.Проверьте созданный или обновленный KeyVault в лазурном портале
Больше информации SDK пожалуйста, обратитесь к файлу package.config:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Hyak.Common" version="1.0.2" targetFramework="net452" />
<package id="Microsoft.Azure.Common" version="2.1.0" targetFramework="net452" />
<package id="Microsoft.Azure.Common.Dependencies" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.Azure.Management.KeyVault" version="2.0.0-preview" targetFramework="net452" />
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net452" />
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net452" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net452" />
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.3" targetFramework="net452" />
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net452" />
<package id="Microsoft.Rest.ClientRuntime" version="2.3.1" targetFramework="net452" />
<package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.1" targetFramework="net452" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net452" />
</packages>
Для дальнейшего использования, PowerShell использует REST API. Если для него есть команда PS, есть * определенно * конечная точка REST. – juunas