如何使用托管标识对 Azure Cosmos DB MongoDB 帐户进行身份验证?

问题描述 投票:0回答:1

我使用 MongoDB.Driver 库(版本 2.19.0)通过存储在 KeyVault 中的连接字符串从我的 Cosmos DB MongoDB API 帐户读取/写入文档。

现在我想使用托管身份而不是连接字符串进行身份验证,但是我们尝试了多种方法使用托管身份进行身份验证但没有成功。

任何人都可以帮助我们是否可以将 Azure Cosmos 的托管身份用于 MongoDB 帐户?

尝试在 C# 代码中使用托管身份。

azure-cosmosdb-mongoapi
1个回答
0
投票

根据这个

目前 Cosmos DB for Mongo DB(vCore 和 RU 模式)不支持托管身份验证。

或者,虽然您无法直接将 MSI 与 Cosmos DB MongoDB API 结合使用,但您仍然可以使用 托管身份 安全地从 Azure Key Vault 检索连接字符串。这样,您的应用程序不需要存储凭据,并且可以利用 MSI 进行 Key Vault 访问。

向托管身份授予访问密钥保管库中的密钥所需的权限,您可以使用以下代码:

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using MongoDB.Driver;

public class CosmosDBMongoService
{
    private readonly IMongoDatabase _database;

    public CosmosDBMongoService(string keyVaultUrl, string keyVaultSecretName, string dbName)
    {
        // Set up Azure Key Vault Client using Managed Identity
        var client = new SecretClient(new Uri(keyVaultUrl), new DefaultAzureCredential());
        
        // Retrieve the connection string stored as a secret in Key Vault
        KeyVaultSecret secret = client.GetSecret(keyVaultSecretName);
        string connectionString = secret.Value;

        // Use the connection string to connect to Cosmos DB MongoDB API
        var mongoClient = new MongoClient(connectionString);
        _database = mongoClient.GetDatabase(dbName);
    }

    public IMongoCollection<T> GetCollection<T>(string collectionName)
    {
        return _database.GetCollection<T>(collectionName);
    }
}

有关更多信息,请参阅 SO 中的类似问题

© www.soinside.com 2019 - 2024. All rights reserved.