Azure密钥保管库:访问被拒绝

Eut*_*rpy 17 c# azure azure-keyvault

我有以下代码从Azure密钥保险库获取密码:

public static async Task<string> GetToken(string authority, string resource, string scope)
    {
        var authContext = new AuthenticationContext(authority);
        ClientCredential clientCred = new ClientCredential(...); //app id, app secret
        AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);

        if (result == null)
            throw new InvalidOperationException("Failed to obtain the JWT token");

        return result.AccessToken;
    }

    public static string GetSecret(string secretName)
    {
        KeyVaultClient keyVaultClient = new KeyVaultClient(GetToken);
        try
        {
            return keyVaultClient.GetSecretAsync("my-key-vault-url", secretName).Result.Value;
        }
        catch(Exception ex)
        {
            return "Error";
        }
    }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是"访问被拒绝",这(我认为)意味着id,secret和vault的url都没问题.但是,我不知道我能做些什么来修复此错误,Azure门户中是否有可能阻止我读取密码的设置?

Ale*_*ndr 29

要修复拒绝访问,您需要配置Active Directory权限.授予对KeyVault的访问权限.

1.使用PowerShell 运行下一个命令:

Set-AzureRmKeyVaultAccessPolicy -VaultName 'XXXXXXX' -ServicePrincipalName XXXXX -PermissionsToKeys decrypt,sign,get,unwrapKey
Run Code Online (Sandbox Code Playgroud)

2.使用Azure门户

  1. 打开密钥库
  2. 从Key Vault资源刀片中选择" 访问策略 "
  3. 单击刀片顶部的[+添加新]按钮
  4. 单击" 选择主体"以选择先前创建的应用程序
  5. 从Key权限下拉列表中,选择"Decrypt","Sign","Get","UnwrapKey"权限
  6. 保存更改

授权应用程序使用密钥或密钥


the*_*uff 5

该问题确实使用Azure门户指定,我已经在此处记录了为Key Vault访问创建服务主体的记录。

特别是从第2步开始:

在Azure门户中打开密钥库,然后在“设置”下选择“访问策略”刀片。单击添加新项,然后单击选择主体-您必须在搜索框中输入在上一步中创建的已注册应用的全名,然后该名称才会出现,此时您可以选择它。

您可以从顶部下拉列表中选择适当的模板,也可以手动选择“密钥”,“秘密”或“证书”权限。在此阶段不必担心授权应用程序。

重要提示:按“确定”按钮会将您的新策略添加到列表中,但不会保存!请确保单击“保存”,然后继续。