Поделиться через


Интеграция Azure Cosmos DB для MongoDB с service Connector

На этой странице показаны поддерживаемые методы проверки подлинности и клиенты, а также показан пример кода, который можно использовать для подключения Azure Cosmos DB для MongoDB к другим облачным службам с помощью соединителя служб. Вы по-прежнему можете подключиться к Azure Cosmos DB для MongoDB на других языках программирования без использования соединителя службы. На этой странице также показаны имена и значения переменных среды по умолчанию (или конфигурация Spring Boot), которые вы получаете при создании подключения к службе.

Поддерживаемые службы вычислений

Соединитель служб можно использовать для подключения следующих вычислительных служб к Azure Cosmos DB для MongoDB:

  • Служба приложений Azure
  • Приложения-контейнеры Azure
  • Функции Azure
  • Служба Azure Kubernetes (AKS)
  • Azure Spring Apps

Поддерживаемые типы проверки подлинности и типы клиентов

В таблице ниже показано, какие сочетания типов клиентов и методов проверки подлинности поддерживаются для подключения вычислительной службы к Azure Cosmos DB для MongoDB с помощью соединителя служб. Значение "Да" указывает, что сочетание поддерживается, а значение "Нет" указывает, что оно не поддерживается.

Тип клиента Управляемое удостоверение, назначаемое системой Управляемое удостоверение, назначаемое пользователем Секрет / строка подключения Субъект-служба
.NET Да Да Да Да
Java Да Да Да Да
Java — Spring Boot No No Да Нет
Node.js Да Да Да Да
Python Да Да Да Да
Go Да Да Да Да
Не допускается Да Да Да Да

Эта таблица указывает, что поддерживаются все сочетания типов клиентов и методов проверки подлинности в таблице, за исключением типа клиента Java — Spring Boot, который поддерживает только метод Secret /строка подключения. Все остальные типы клиентов могут использовать любой из методов проверки подлинности для подключения к Azure Cosmos DB для MongoDB с помощью соединителя службы.

Имена переменных среды по умолчанию или свойства приложения и пример кода

Используйте приведенные ниже сведения о подключении для подключения вычислительных служб к Azure Cosmos DB. На этой странице также отображаются имена и значения переменных среды по умолчанию (или конфигурация Spring Boot), которые вы получаете при создании подключения к службе, а также пример кода. В каждом примере ниже замените замещающий текст , , , , и <resource-group-name><tenant-id> <client-secret>собственными сведениями. <subscription-ID><Azure-Cosmos-DB-API-for-MongoDB-account><password><mongo-db-admin-user> Дополнительные сведения о соглашениях об именовании см. во внутренней статье соединителя служб.

Управляемое удостоверение, назначаемое системой

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL-адрес для получения строки подключения. https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE Область управляемого удостоверения. https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Конечная точка ресурса. https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Пример кода

Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к Azure Cosmos DB для MongoDB с помощью управляемого удостоверения, назначаемого системой.

  1. Установка зависимостей

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Получите маркер доступа для управляемого удостоверения или субъекта-службы с помощью клиентской библиотеки Azure.Identity. Используйте маркер доступа и AZURE_COSMOS_LISTCONNECTIONSTRINGURL получите строка подключения. Получите сведения о подключении из переменных среды, добавленных соединителем службы, и подключитесь к Azure Cosmos DB для MongoDB. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для используемого типа проверки подлинности.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Управляемое удостоверение, назначаемое пользователем

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL-адрес для получения строки подключения. https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE Область управляемого удостоверения. https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Идентификатор клиента <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT Конечная точка ресурса. https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Пример кода

Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к Azure Cosmos DB для MongoDB с помощью управляемого удостоверения, назначаемого пользователем.

  1. Установка зависимостей

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Получите маркер доступа для управляемого удостоверения или субъекта-службы с помощью клиентской библиотеки Azure.Identity. Используйте маркер доступа и AZURE_COSMOS_LISTCONNECTIONSTRINGURL получите строка подключения. Получите сведения о подключении из переменных среды, добавленных соединителем службы, и подключитесь к Azure Cosmos DB для MongoDB. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для используемого типа проверки подлинности.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Connection string

Предупреждение

Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые отсутствуют в других потоках. Этот поток следует использовать только в том случае, если другие более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.

Тип клиента SpringBoot

Имя переменной среды по умолчанию Description Пример значения
spring.data.mongodb.database База данных <database-name>
spring.data.mongodb.uri Универсальный код ресурса (URI) базы данных mongodb://<mongo-db-admin-user>:<password>@<mongo-db-server>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<mongo-db-server>@

Другие типы клиентов

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_CONNECTIONSTRING Строка подключения API MongoDB mongodb://<mongo-db-admin-user>:<password>@<mongo-db-server>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<mongo-db-server>@

Пример кода

Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к Azure Cosmos DB для MongoDB с помощью строка подключения.

  1. Установите зависимость.

    dotnet add package MongoDb.Driver
    
  2. Получите строка подключения из переменной среды, добавленной соединителем службы, и подключитесь к Azure Cosmos DB для MongoDB.

    using MongoDB.Driver;
    
    var connectionString = Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING");
    var client = new MongoClient(connectionString);
    

Субъект-служба

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL-адрес для получения строки подключения. https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE Область управляемого удостоверения. https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Идентификатор клиента <client-ID>
AZURE_COSMOS_CLIENTSECRET Секрет клиента <client-secret>
AZURE_COSMOS_TENANTID Идентификатор клиента <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT Конечная точка ресурса. https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Пример кода

Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к Azure Cosmos DB для MongoDB с помощью субъекта-службы.

  1. Установка зависимостей

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Получите маркер доступа для управляемого удостоверения или субъекта-службы с помощью клиентской библиотеки Azure.Identity. Используйте маркер доступа и AZURE_COSMOS_LISTCONNECTIONSTRINGURL получите строка подключения. Получите сведения о подключении из переменных среды, добавленных соединителем службы, и подключитесь к Azure Cosmos DB для MongoDB. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для используемого типа проверки подлинности.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Следующие шаги

Дополнительные сведения о соединителе служб см. в приведенных ниже учебниках.