Udostępnij za pośrednictwem


Integrowanie usługi Azure Cosmos DB dla tabel z łącznikiem usługi

Na tej stronie przedstawiono obsługiwane metody uwierzytelniania i klientów oraz pokazano przykładowy kod, którego można użyć do połączenia usługi Azure Cosmos DB for Table z innymi usługami w chmurze przy użyciu łącznika usług. Nadal możesz nawiązać połączenie z usługą Azure Cosmos DB for Table w innych językach programowania bez używania łącznika usługi. Ta strona zawiera również domyślne nazwy zmiennych środowiskowych i wartości uzyskiwane podczas tworzenia połączenia z usługą.

Obsługiwane usługi obliczeniowe

Łącznik usługi może służyć do łączenia następujących usług obliczeniowych z usługą Azure Cosmos DB dla tabeli:

  • Azure App Service
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Obsługiwane typy uwierzytelniania i typy klientów

W poniższej tabeli pokazano, które kombinacje typów klientów i metod uwierzytelniania są obsługiwane do łączenia usługi obliczeniowej z usługą Azure Cosmos DB dla tabel przy użyciu łącznika usługi Service Connector. Wartość "Tak" wskazuje, że kombinacja jest obsługiwana, a wartość "Nie" wskazuje, że nie jest obsługiwana.

Typ klienta Tożsamość zarządzana przypisana przez system Tożsamość zarządzana przypisana przez użytkownika Wpis tajny/parametry połączenia Jednostka usługi
.NET Tak Tak Tak Tak
Java Tak Tak Tak Tak
Node.js Tak Tak Tak Tak
Python Tak Tak Tak Tak
Go Tak Tak Tak Tak
None Tak Tak Tak Tak

Ta tabela wskazuje, że obsługiwane są wszystkie kombinacje typów klientów i metod uwierzytelniania w tabeli. Wszystkie typy klientów mogą używać dowolnej metody uwierzytelniania do nawiązywania połączenia z usługą Azure Cosmos DB dla tabel przy użyciu łącznika usługi.

Domyślne nazwy zmiennych środowiskowych lub właściwości aplikacji i przykładowy kod

Użyj poniższych szczegółów połączenia, aby połączyć usługi obliczeniowe z usługą Azure Cosmos DB dla tabeli. Dla każdego z poniższych przykładów zastąp tekst <account-name>zastępczy , , <table-name>, <subscription-ID><resource-group-name><client-ID><account-key>, , <client-secret><tenant-id> własnymi informacjami. Aby uzyskać więcej informacji na temat konwencji nazewnictwa, zapoznaj się z artykułem Dotyczącym wewnętrznych łączników usług.

Tożsamość zarządzana przypisana przez system

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adres URL umożliwiający pobranie parametry połączenia 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 Zakres tożsamości zarządzanej https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Punkt końcowy zasobu https://<table-name>.documents.azure.com:443/

Przykładowy kod

Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Cosmos DB dla tabeli przy użyciu tożsamości zarządzanej przypisanej przez system.

  1. Instalowanie zależności.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Uzyskaj token dostępu dla tożsamości zarządzanej lub jednostki usługi przy użyciu biblioteki klienta Azure.Identity. Użyj tokenu dostępu i AZURE_COSMOS_LISTCONNECTIONSTRINGURL pobierz parametry połączenia. Uzyskaj informacje o połączeniu ze zmiennych środowiskowych dodanych przez łącznik usługi i połącz się z usługą Azure Cosmos DB dla tabeli. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
    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);
    

Tożsamość zarządzana przypisana przez użytkownika

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adres URL umożliwiający pobranie parametry połączenia 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 Zakres tożsamości zarządzanej https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Identyfikator wpisu tajnego klienta <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT Punkt końcowy zasobu https://<table-name>.documents.azure.com:443/

Przykładowy kod

Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Cosmos DB dla tabeli przy użyciu tożsamości zarządzanej przypisanej przez użytkownika.

  1. Instalowanie zależności.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Uzyskaj token dostępu dla tożsamości zarządzanej lub jednostki usługi przy użyciu biblioteki klienta Azure.Identity. Użyj tokenu dostępu i AZURE_COSMOS_LISTCONNECTIONSTRINGURL pobierz parametry połączenia. Uzyskaj informacje o połączeniu ze zmiennych środowiskowych dodanych przez łącznik usługi i połącz się z usługą Azure Cosmos DB dla tabeli. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
    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

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
AZURE_COSMOS_CONNECTIONSTRING Usługa Azure Cosmos DB dla parametry połączenia tabel DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;TableEndpoint=https://<table-name>.table.cosmos.azure.com:443/;

Ostrzeżenie

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze wymaga bardzo wysokiego poziomu zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Tego przepływu należy używać tylko wtedy, gdy inne bezpieczniejsze przepływy, takie jak tożsamości zarządzane, nie są opłacalne.

Przykładowy kod

Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Cosmos DB for Table przy użyciu parametry połączenia.

  1. Zainstaluj zależność.

    dotnet add package Azure.Data.Tables
    
  2. Pobierz parametry połączenia ze zmiennej środowiskowej dodanej przez łącznik usługi.

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

Jednostka usługi

Domyślna nazwa zmiennej środowiskowej opis Przykładowa wartość
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adres URL umożliwiający pobranie parametry połączenia 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 Zakres tożsamości zarządzanej https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Identyfikator wpisu tajnego klienta <client-ID>
AZURE_COSMOS_CLIENTSECRET Klucz tajny klienta <client-secret>
AZURE_COSMOS_TENANTID Identyfikator dzierżawy <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT Punkt końcowy zasobu https://<table-name>.documents.azure.com:443/

Przykładowy kod

Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Cosmos DB for Table przy użyciu jednostki usługi.

  1. Instalowanie zależności.
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. Uzyskaj token dostępu dla tożsamości zarządzanej lub jednostki usługi przy użyciu biblioteki klienta Azure.Identity. Użyj tokenu dostępu i AZURE_COSMOS_LISTCONNECTIONSTRINGURL pobierz parametry połączenia. Uzyskaj informacje o połączeniu ze zmiennych środowiskowych dodanych przez łącznik usługi i połącz się z usługą Azure Cosmos DB dla tabeli. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
    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);
    

Następne kroki

Postępuj zgodnie z samouczkami wymienionymi poniżej, aby dowiedzieć się więcej o łączniku usługi.