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


Интеграция Azure Cosmos DB для таблицы с соединителем службы

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

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

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

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

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

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

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

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

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

Используйте приведенные ниже сведения о подключении для подключения вычислительных служб к Azure Cosmos DB для таблицы. Для каждого из приведенных ниже примеров замените текст заполнителя <account-name>, <table-name>, <account-key>, <resource-group-name>, <tenant-id> <subscription-ID><client-ID><client-secret>собственными сведениями. Дополнительные сведения о соглашениях об именовании см. во внутренней статье соединителя служб.

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

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

Пример кода

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

  1. Установите зависимости.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Получите маркер доступа для управляемого удостоверения или субъекта-службы с помощью клиентской библиотеки Azure.Identity. Используйте маркер доступа и AZURE_COSMOS_LISTCONNECTIONSTRINGURL получите строка подключения. Получите сведения о подключении из переменных среды, добавленных соединителем службы, и подключитесь к Azure Cosmos DB для таблицы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для используемого типа проверки подлинности.
    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(connectionString);
    

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

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

Пример кода

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

  1. Установите зависимости.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Получите маркер доступа для управляемого удостоверения или субъекта-службы с помощью клиентской библиотеки Azure.Identity. Используйте маркер доступа и AZURE_COSMOS_LISTCONNECTIONSTRINGURL получите строка подключения. Получите сведения о подключении из переменных среды, добавленных соединителем службы, и подключитесь к Azure Cosmos DB для таблицы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для используемого типа проверки подлинности.
    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(connectionString);
    

Connection string

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_CONNECTIONSTRING Azure Cosmos DB для таблиц строка подключения DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;TableEndpoint=https://<table-name>.table.cosmos.azure.com:443/;

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

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

Пример кода

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

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

    dotnet add package Azure.Data.Tables
    
  2. Получите строка подключения из переменной среды, добавленной соединителем службы.

    using Azure.Data.Tables;
    using System; 
    
    TableServiceClient tableServiceClient = new TableServiceClient(Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING"));
    

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

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL-адрес для получения строки подключения. https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<table-name>/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://<table-name>.documents.azure.com:443/

Пример кода

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

  1. Установите зависимости.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Получите маркер доступа для управляемого удостоверения или субъекта-службы с помощью клиентской библиотеки Azure.Identity. Используйте маркер доступа и AZURE_COSMOS_LISTCONNECTIONSTRINGURL получите строка подключения. Получите сведения о подключении из переменных среды, добавленных соединителем службы, и подключитесь к Azure Cosmos DB для таблицы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для используемого типа проверки подлинности.
    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(connectionString);
    

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

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