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


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

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

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

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

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

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

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

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

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

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

Используйте приведенные ниже сведения о подключении для подключения вычислительных служб к Azure Cosmos DB для Apache Gremlin. В каждом примере ниже замените текст <Azure-Cosmos-DB-account>заполнителя , <collection or graphs><database>, <username><password><resource-group-name>, <client-ID><subscription-ID><client-secret>а также <tenant-id> собственные сведения. Дополнительные сведения о соглашениях об именовании см. во внутренней статье соединителя служб.

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

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_LISTKEYURL URL-адрес для получения строки подключения. https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-account>/listKeys?api-version=2021-04-15
AZURE_COSMOS_SCOPE Область управляемого удостоверения. https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Конечная точка ресурса. https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Уникальный идентификатор ресурса Gremlin (UFI) <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Порт подключения 443
AZURE_COSMOS_USERNAME Имя пользователя /dbs/<database>/colls/<collection or graphs>

Пример кода

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

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

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

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using System;
    using Gremlin.Net.Driver;
    using Azure.Identity;
    
    var gremlinEndpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
    var gremlinPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
    var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
    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 password.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listKeyUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
    var password = keys["primaryMasterKey"];
    
    // Connect to Azure Cosmos DB for Apache Gremlin
    var server = new GremlinServer(
        hostname: gremlinEndpoint,
        port: gremlinPort,
        username: userName,
        password: password,
        enableSsl: true
    );
    
    using var client = new GremlinClient(
        gremlinServer: server,
        messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
    );        
    
    

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

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_LISTKEYURL URL-адрес для получения строки подключения. https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-account>/listKeys?api-version=2021-04-15
AZURE_COSMOS_SCOPE Область управляемого удостоверения. https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Конечная точка ресурса. https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Уникальный идентификатор ресурса Gremlin (UFI) <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Порт подключения 443
AZURE_COSMOS_USERNAME Имя пользователя /dbs/<database>/colls/<collection or graphs>
AZURE_CLIENTID Идентификатор клиента <client_ID>

Пример кода

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

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

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

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using System;
    using Gremlin.Net.Driver;
    using Azure.Identity;
    
    var gremlinEndpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
    var gremlinPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
    var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
    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 password.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listKeyUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
    var password = keys["primaryMasterKey"];
    
    // Connect to Azure Cosmos DB for Apache Gremlin
    var server = new GremlinServer(
        hostname: gremlinEndpoint,
        port: gremlinPort,
        username: userName,
        password: password,
        enableSsl: true
    );
    
    using var client = new GremlinClient(
        gremlinServer: server,
        messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
    );        
    
    

Connection string

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

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

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_HOSTNAME Уникальный идентификатор ресурса Gremlin (UFI) <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Порт подключения 443
AZURE_COSMOS_USERNAME Имя пользователя /dbs/<database>/colls/<collection or graphs>
AZURE_COSMOS_PASSWORD Ваш пароль <password>

Пример кода

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

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

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

    using System;
    using Gremlin.Net.Driver;
    
    var gremlinEndpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
    var password = Environment.GetEnvironmentVariable("AZURE_COSMOS_PASSWORD");
    var gremlinPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
    
    var server = new GremlinServer(
        hostname: gremlinEndpoint,
        port: gremlinPort,
        username: userName,
        password: password,
        enableSsl: true
    );
    
    using var client = new GremlinClient(
        gremlinServer: server,
        messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
    );
    

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

Имя переменной среды по умолчанию Description Пример значения
AZURE_COSMOS_LISTKEYURL URL-адрес для получения строки подключения. https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-account>/listKeys?api-version=2021-04-15
AZURE_COSMOS_SCOPE Область управляемого удостоверения. https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Конечная точка ресурса. https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Уникальный идентификатор ресурса Gremlin (UFI) <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Порт подключения Gremlin 10350
AZURE_COSMOS_USERNAME Имя пользователя </dbs/<database>/colls/<collection or graphs>
AZURE_COSMOS_CLIENTID Идентификатор клиента <client-ID>
AZURE_COSMOS_CLIENTSECRET Секрет клиента <client-secret>
AZURE_COSMOS_TENANTID Идентификатор клиента <tenant-ID>

Пример кода

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

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

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

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Threading.Tasks;
    using System;
    using Gremlin.Net.Driver;
    using Azure.Identity;
    
    var gremlinEndpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
    var gremlinPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
    var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
    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 password.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listKeyUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
    var password = keys["primaryMasterKey"];
    
    // Connect to Azure Cosmos DB for Apache Gremlin
    var server = new GremlinServer(
        hostname: gremlinEndpoint,
        port: gremlinPort,
        username: userName,
        password: password,
        enableSsl: true
    );
    
    using var client = new GremlinClient(
        gremlinServer: server,
        messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
    );        
    
    

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

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