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

带有Azure托管身份的Azure Cosmos MongoDB API

云俊美
2023-03-14

我在Azure中有一个应用程序服务使用连接字符串连接到Azure Cosmos Mongo API。我想知道是否有一种方法可以使用托管身份连接到Mongo API,而不是使用连接字符串。我知道这对于Cosmos SQL API是可行的,但是找不到任何关于Mongo API的信息。

谢谢你

共有2个答案

唐啸
2023-03-14

SQL API的解决方案(在使用系统分配的托管身份访问Azure Cosmos DB数据时描述)也可以通过查询访问密钥应用于MongoDB API。节点功能应用程序的代码将需要以下包:@azure/identity@azure/arm cosmosdbmongodb

import { MongoClient } from 'mongodb';
import { ManagedIdentityCredential } from '@azure/identity';
import { CosmosDBManagementClient } from '@azure/arm-cosmosdb';

async function initializeClient(): Promise<MongoClient> {
  const subscriptionId = ...;
  const resourceGroupName = ...;
  const cosmosDbUrl = ...;
  const accountName = ...;

  const armClient = new CosmosDBManagementClient(
    new ManagedIdentityCredential(), subscriptionId
  );
  const { primaryMasterKey } = await armClient.databaseAccounts.listKeys(
    resourceGroupName, accountName
  );
  return MongoClient.connect(
    cosmosDbUrl,
    { auth: { username: accountName, password: primaryMasterKey } }
  );
}

函数应用的托管标识需要 Microsoft.DocumentDB/databaseAccounts/listKeys/action 权限。因此,您可以将角色 DocumentDB 帐户参与者分配给托管标识。另请参阅 Azure Cosmos DB 中基于角色的访问控制。

闾丘博
2023-03-14

预期的模式是授予通过托管身份检索密钥的访问权限,然后应用程序使用该访问权限通过正常方式获取密钥和连接。您需要想出自己的模式来检测主/辅密钥的回收,并相应地进行切换。

DocumentDB帐户参与者角色通过列表键API提供对读/写键的访问

Cosmos DB帐户读者角色角色通过列表只读密钥API提供对只读密钥的访问

 类似资料:
  • 我试图通过ARM模板将Service Bus Receiver角色添加到用户分配的托管标识中。 i、 e.这一作用。https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#azure-服务总线数据接收器 这是模板 它返回这个错误。 状态消息:不允许更新租户ID、应用程序ID、主体ID和作用域。(

  • 我正在寻求在Azure DevOps中的ARM部署中集成密钥库的最佳方法。 例如,部署一个应用程序服务并创建一个托管服务标识,这样它就可以从密钥库中获取预先存在的数据库的机密。 1)在Azure portal中,我手动为App服务创建了一个新的服务主体,在访问策略中使用“get”和“list”权限。 2)在我的DevOps项目中,在项目设置下,我创建了一个服务连接。 3)我已经在DevOps中创建

  • 我为一个功能应用程序创建了一个托管身份,并通过以下两部分将其分配给DocumentDB Account Contributor https://docs.microsoft.com/en-us/azure/cosmos-db/managed-identity-based-authentication#assign-a-system-assigned-managed-identity-to-a-fu

  • 是否使用Azure Active Directory身份验证库(ADAL)管理身份,尤其是对于来自文档[1]的此命令? [1]https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-linux-vm-access-storage

  • 我在Azure App Service中部署了一个spring boot应用程序,该应用程序使用用户管理的身份访问Azure Key Vault。 我遵循了以下提到的步骤: 创建了用户管理标识 在Azure app Service中部署了spring boot app 通过身份选项将新创建的用户管理身份添加到应用程序服务中 在应用程序服务中IAM的角色分配下添加用户托管标识为所有者角色 创建Azu

  • 这个问题指的是该条: https://docs.microsoft.com/en-us/azure/app-service/app-service-managed-service-identity 我试图弄清楚如何使用为Azure应用程序生成的服务主体来模拟本地工作。 我遵循了这篇文章,当我将Azure函数部署到Azure并从那里运行它时,我能够成功地使用MSI_ENDPOINT和MSI_SECR