当前位置: 首页 > 知识库问答 >
问题:

无法获取Azure密钥值秘密值

高吉星
2023-03-14
        public static string GetDBConnectString(ILogger logger)
        {
            try
            {
                string dbUserName = Environment.GetEnvironmentVariable("SqlDBUsername"); // [dbUserName]
                logger.LogInformation($"Info: Creating DB Connection string as user {dbUserName}.");
                AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
                KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
                string vaultConnect = Environment.GetEnvironmentVariable("SqlDBKeyvault"); // ["https://keyvault.vault.azure.net/secrets/dbUserName/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]
                // The below line fails
                SecretBundle secret = keyVaultClient.GetSecretAsync(vaultConnect).GetAwaiter().GetResult();
                string sqlConnection = string.Format(Environment.GetEnvironmentVariable("SqlDBConnectionString"), dbUserName, secret.Value);
                return sqlConnection;
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message, ex);
                return string.Empty;
            }
        }

exception.message=“参数:连接字符串:[没有指定连接字符串],资源:https://vault.azure.net,权限异常消息:尝试了以下3种方法来获取访问令牌,但都不起作用。参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net,权限:异常消息:试图使用托管服务标识获取令牌。无法连接到托管服务标识(MSI)终结点。请检查您正在运行的Azure资源上安装了MSI。参数:连接字符串:[未指定连接字符串],资源:https://vault.azure.net,权限:异常消息:试图使用Visual Studio获取令牌。无法获取访问令牌。Visual Studio令牌提供程序Microsoft.asal.TokenService.exe的异常:TS003:错误,TS002:在租户“xxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”中找不到帐户“me@mycompany.com”。“

我在这里看到了创建ClientId授权的各种解决方案,但所有这些都需要用户名/密码来创建,这违背了保险库的目的?

有没有人有一个不需要用户凭据就可以打开保险库的解决方案?

共有1个答案

艾宁
2023-03-14

身份有两种类型:系统分配的身份和用户分配的身份。您需要的是系统分配的身份,其中您的Azure函数将用于从密钥库中检索机密。

与其读取函数中的秘密值,不如添加一个从密钥库中检索该值的设置。

示例:

Key           Value
MySecret      @Microsoft.KeyVault(SecretUri=secret_uri_with_version)
 Environment.GetVariable("MySecret);
 类似资料:
  • 我有一个如下格式的文本文件 我有一个类对象Hmp,它有两个字符串变量来存储问题(q1, q2, q3,...)和答案(a1, a2, a3,...)。我试图做的是保持模块id作为键,我想用值填充哈希图作为对象的数组列表(对象Hmp)。反过来,我将键存储在字符串的数组列表中。 在下面的代码段中, *l_ext_keys*是存储键的字符串数组列表,*l_extract*是HashMap 问题 Hash

  • 问题内容: 我尝试从KeyStore获取密钥。我通过Keytool创建了一个密钥库: keytool -genkeypair -dname“ cn = Mark Jones,ou = JavaSoft,o = Sun,c = US” -alias business2 -keypass abcdtest -keystore C:\ workspace \ XMLSample \ keystore \

  • 我正在尝试将https://docs.microsoft.com/en-us/Azure/key-vault/tutorial-net-create-vault-azure-web-app中的示例代码转换为VB.net,并使用它访问我存储在Azure密钥库中的秘密。我在http://converter.telerik.com/使用了转换器。 转换后的代码出现一个错误:“委托'KeyVaultCli

  • 我想从天蓝色密钥库获取秘密。当我独立于主方法运行类时,它返回秘密,但当我在代码行future.get()处集成了这个相同的代码在servlet应用程序中;在这里它得到块,它不会像死锁一样继续前进,它一直在等待,有时会得到java.util.concurrent.执行异常:java.lang.ClassCastExctive:java.lang.字符串不能被强制转换为java.util.列表和com

  • 我想知道是否可以通过前缀获得所有Azure密钥库的秘密。 假设我有3个秘密。 我希望得到所有的秘密与前缀pre,并序列化到JSON。在未来,我将有更多的秘密与前缀,所以我不想阅读的秘密手动。因此,当我添加一个带有前缀的新秘密时,我的函数也将返回一个新值的JSON。 问题是:是否可以通过前缀从Azure密钥库获取秘密并动态序列化到JSON? 更新:我想在ASP.NET Core3.1和C#中使用它。