Compartir vía


Integración de Azure Cosmos DB for Gremlin con conector de servicio

En esta página se muestran los métodos de autenticación y los clientes admitidos y se muestra el código de ejemplo que puede usar para conectar Azure Cosmos DB for Apache Gremlin a otros servicios en la nube mediante Service Connector. Es posible que todavía pueda conectarse a Azure Cosmos DB for Gremlin en otros lenguajes de programación sin usar conector de servicio. Esta página también muestra los nombres y valores predeterminados de las variables de entorno que se obtiene al crear la conexión de servicio.

Servicios de proceso admitidos

Service Connector puede utilizarse para conectar los siguientes servicios informáticos a Azure Cosmos DB for Apache Gremlin:

  • Azure App Service
  • Azure Container Apps
  • Funciones de Azure
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Tipos de autenticación y tipos de cliente admitidos

En la tabla siguiente se muestran las combinaciones de tipos de cliente y métodos de autenticación que se admiten para conectar el servicio de proceso a Azure Cosmos DB for Apache Gremlin mediante Service Connector. Un valor "Sí" indica que se admite la combinación, mientras que "No" indica que no se admite.

Tipo de cliente Identidad administrada asignada por el sistema Identidad administrada asignada por el usuario Secreto/cadena de conexión Entidad de servicio
.NET
Java
Node.js
PHP
Python
Go
None

Esta tabla indica que todas las combinaciones de tipos de cliente y métodos de autenticación de la tabla son compatibles. Todos los tipos de cliente pueden utilizar cualquiera de los métodos de autenticación para conectarse a Azure Cosmos DB for Apache Gremlin mediante Service Connector.

Nombres de variables de entorno predeterminados o propiedades de aplicación y código de ejemplo

Use los detalles de conexión siguientes para conectar los servicios de proceso a Azure Cosmos DB for Apache Gremlin. Para cada ejemplo siguiente, sustituya los textos del marcador de posición <Azure-Cosmos-DB-account>, <database>, <collection or graphs>, <username>, <password>, <resource-group-name>, <subscription-ID>, <client-ID>, <client-secret> y <tenant-id> por su propia información. Para más información sobre las convenciones de nomenclatura, consulte el artículo sobre los elementos internos del conector de servicio.

Identidad administrada asignada por el sistema

Nombre de la variable de entorno predeterminado Descripción Valor de ejemplo
AZURE_COSMOS_LISTKEYURL Dirección URL para obtener la cadena de conexión 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 Ámbito de la identidad administrada https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Punto de conexión del recurso https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Identificador único del recurso (UFI) de Gremlin <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Puerto de conexión 443
AZURE_COSMOS_USERNAME Su nombre de usuario /dbs/<database>/colls/<collection or graphs>

Código de ejemplo

Consulte los pasos y el código siguientes para conectarse a Azure Cosmos DB for Gremlin utilizando una identidad administrada asignada por el sistema.

  1. Instale las dependencias.

    dotnet add package Gremlin.Net
    dotnet add package Azure.Identity
    
  2. Puede obtener un token de acceso para la identidad administrada o la entidad de servicio utilizando una biblioteca de cliente como Azure.Identity. Use el token de acceso y AZURE_COSMOS_LISTKEYURL para obtener la contraseña. Obtenga la información de conexión de las variables de entorno agregadas por Service Connector y conéctese a Azure Cosmos DB for Apache Gremlin. Al usar el código siguiente, quite la marca de comentario de la parte del fragmento de código para el tipo de autenticación que desea usar.

    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()
    );        
    
    

Identidad administrada asignada por el usuario

Nombre de la variable de entorno predeterminado Descripción Valor de ejemplo
AZURE_COSMOS_LISTKEYURL Dirección URL para obtener la cadena de conexión 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 Ámbito de la identidad administrada https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Punto de conexión del recurso https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Identificador único del recurso (UFI) de Gremlin <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Puerto de conexión 443
AZURE_COSMOS_USERNAME Su nombre de usuario /dbs/<database>/colls/<collection or graphs>
AZURE_CLIENTID Id. de cliente <client_ID>

Código de ejemplo

Consulte los pasos y el código siguientes para conectarse a Azure Cosmos DB for Gremlin utilizando una identidad administrada asignada por el usuario.

  1. Instale las dependencias.

    dotnet add package Gremlin.Net
    dotnet add package Azure.Identity
    
  2. Puede obtener un token de acceso para la identidad administrada o la entidad de servicio utilizando una biblioteca de cliente como Azure.Identity. Use el token de acceso y AZURE_COSMOS_LISTKEYURL para obtener la contraseña. Obtenga la información de conexión de las variables de entorno agregadas por Service Connector y conéctese a Azure Cosmos DB for Apache Gremlin. Al usar el código siguiente, quite la marca de comentario de la parte del fragmento de código para el tipo de autenticación que desea usar.

    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()
    );        
    
    

Cadena de conexión

Advertencia

Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación que se describe en este procedimiento requiere un alto grado de confianza en la aplicación y conlleva riesgos que no están presentes en otros flujos. Solo debe usar este flujo cuando otros flujos más seguros, como las identidades administradas, no sean viables.

Nombre de la variable de entorno predeterminado Descripción Valor de ejemplo
AZURE_COSMOS_HOSTNAME Identificador único del recurso (UFI) de Gremlin <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Puerto de conexión 443
AZURE_COSMOS_USERNAME Su nombre de usuario /dbs/<database>/colls/<collection or graphs>
AZURE_COSMOS_PASSWORD Su contraseña <password>

Código de ejemplo

Consulte los pasos y el código siguientes para conectarse a Azure Cosmos DB for Gremlin utilizando una cadena de conexión.

  1. Instalación de la dependencia

    dotnet add package Gremlin.Net
    
  2. Obtenga la información de conexión de las variables de entorno agregadas por Service Connector y conéctese a Azure Cosmos DB for 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()
    );
    

Entidad de servicio

Nombre de la variable de entorno predeterminado Descripción Valor de ejemplo
AZURE_COSMOS_LISTKEYURL Dirección URL para obtener la cadena de conexión 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 Ámbito de la identidad administrada https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Punto de conexión del recurso https://<Azure-Cosmos-DB-account>.documents.azure.com:443/
AZURE_COSMOS_HOSTNAME Identificador único del recurso (UFI) de Gremlin <Azure-Cosmos-DB-account>.gremlin.cosmos.azure.com
AZURE_COSMOS_PORT Puerto de conexión de Gremlin 10350
AZURE_COSMOS_USERNAME Su nombre de usuario </dbs/<database>/colls/<collection or graphs>
AZURE_COSMOS_CLIENTID Id. de cliente <client-ID>
AZURE_COSMOS_CLIENTSECRET Secreto de cliente <client-secret>
AZURE_COSMOS_TENANTID El identificador de inquilino <tenant-ID>

Código de ejemplo

Consulte los pasos y el código siguientes para conectarse a Azure Cosmos DB for Gremlin utilizando una entidad de servicio.

  1. Instale las dependencias.

    dotnet add package Gremlin.Net
    dotnet add package Azure.Identity
    
  2. Puede obtener un token de acceso para la identidad administrada o la entidad de servicio utilizando una biblioteca de cliente como Azure.Identity. Use el token de acceso y AZURE_COSMOS_LISTKEYURL para obtener la contraseña. Obtenga la información de conexión de las variables de entorno agregadas por Service Connector y conéctese a Azure Cosmos DB for Apache Gremlin. Al usar el código siguiente, quite la marca de comentario de la parte del fragmento de código para el tipo de autenticación que desea usar.

    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()
    );        
    
    

Pasos siguientes

Para más información sobre Service Connector, siga los tutoriales que se enumeran a continuación.