Creación de un registro de aplicación Microsoft Entra en Azure Data Explorer

Microsoft Entra autenticación de aplicaciones se usa para aplicaciones, como un servicio desatendido o un flujo programado, que necesitan acceder a Azure Data Explorer sin un usuario presente. Si se va a conectar a una base de datos de Azure Data Explorer mediante una aplicación, como una aplicación web, se debe autenticar mediante la autenticación de la entidad de servicio. En este artículo se detalla cómo crear y registrar una entidad de servicio de Microsoft Entra y, a continuación, autorizarla para acceder a una base de datos de Azure Data Explorer.

Creación de Microsoft Entra registro de aplicaciones

Microsoft Entra autenticación de aplicaciones requiere crear y registrar una aplicación con Microsoft Entra ID. Una entidad de servicio se crea automáticamente cuando se crea el registro de la aplicación en un inquilino de Microsoft Entra.

El registro de la aplicación se puede crear en el Azure Portal o mediante programación con la CLI de Azure. Elija la pestaña que se ajuste a su escenario.

Registre la aplicación

  1. Inicie sesión en Azure Portal y abra la hoja Microsoft Entra ID.

  2. Vaya a Registros de aplicaciones y seleccione Nuevo registro.

    Captura de pantalla que muestra cómo iniciar un nuevo registro de aplicación.

  3. Asigna un nombre a la aplicación, por ejemplo, «example-app».

  4. Seleccione un tipo de cuenta compatible, que determinará quién puede usar la aplicación.

  5. En URI de redireccionamiento, seleccione Web para indicar el tipo de aplicación que quiere crear. El identificador URI es opcional y se deja en blanco en este caso.

    Captura de pantalla que muestra cómo registrar un nuevo registro de la aplicación.

  6. Seleccione Registrar.

Configuración de la autenticación

Hay dos tipos de autenticación disponibles para las entidades de servicio: autenticación basada en contraseña (secreto de aplicación) y autenticación basada en certificados. En la sección siguiente se describe el uso de una autenticación basada en contraseña para las credenciales de la aplicación. También puede usar un certificado X509 para autenticar la aplicación. Para obtener más información, consulte Configuración de Microsoft Entra autenticación basada en certificados.

A lo largo de esta sección, copiará los siguientes valores: Id. de aplicación y valor de clave. Pegue estos valores en algún lugar, como un editor de texto, para usarlos en el paso configurar las credenciales de cliente en la base de datos.

  1. Vaya a la hoja Información general .

  2. Copie el identificador de aplicación (cliente) y el identificador de directorio (inquilino).

    Nota

    Necesitará el identificador de aplicación y el identificador de inquilino para autorizar a la entidad de servicio a acceder a la base de datos.

  3. En la hoja Certificados & secretos , seleccione Nuevo secreto de cliente.

    Captura de pantalla que muestra cómo iniciar la creación del secreto de cliente.

  4. Escriba una descripción y una expiración.

  5. Seleccione Agregar.

  6. Copie el valor de la clave.

    Nota

    Al salir de esta página, no se podrá acceder al valor de clave.

Ha creado una aplicación de Microsoft Entra y una entidad de servicio.

Configuración de permisos delegados para la aplicación: opcional

Si la aplicación necesita acceder a la base de datos mediante las credenciales del usuario que realiza la llamada, configure los permisos delegados para la aplicación. Por ejemplo, si va a compilar una API web y quiere autenticarse con las credenciales del usuario que llama a la API.

Si solo necesita acceso a un recurso de datos autorizado, puede omitir esta sección y continuar con Concesión de acceso a una entidad de servicio a la base de datos.

  1. Vaya a la hoja Permisos de API del registro de aplicaciones.

  2. Seleccione Agregar un permiso.

  3. Seleccione API usadas en mi organización.

  4. Busque y seleccione Azure Data Explorer.

    Captura de pantalla que muestra cómo agregar un permiso de API de Azure Data Explorer.

  5. En Permisos delegados, seleccione el cuadro user_impersonation .

  6. Seleccione Agregar permisos.

    Captura de pantalla que muestra cómo seleccionar permisos delegados con suplantación de usuarios.

Concesión de acceso a una entidad de servicio a la base de datos

Una vez creado el registro de la aplicación, debe conceder a la entidad de servicio correspondiente acceso a la base de datos. En el ejemplo siguiente se proporciona acceso al visor. Para ver otros roles, consulte Administración de permisos de base de datos.

  1. Use los valores de Id. de aplicación e Id. de inquilino como se copió en un paso anterior.

  2. Ejecute el siguiente comando en el editor de consultas y reemplace los valores de marcador de posición ApplicationID e TenantID por los valores reales:

    .add database <DatabaseName> viewers ('aadapp=<ApplicationID>;<TenantID>') '<Notes>'
    

    Por ejemplo:

    .add database Logs viewers ('aadapp=1234abcd-e5f6-g7h8-i9j0-1234kl5678mn;9876abcd-e5f6-g7h8-i9j0-1234kl5678mn') 'App Registration'
    

    El último parámetro es una cadena que se muestra como una nota al consultar los roles asociados a una base de datos.

    Nota

    Después de crear el registro de la aplicación, puede haber un retraso de varios minutos hasta que se pueda hacer referencia a él. Si recibe un error que indica que no se encuentra la aplicación, espere e inténtelo de nuevo.

Para obtener más información sobre los roles, consulte Control de acceso basado en roles.

Uso de credenciales de aplicación para acceder a una base de datos

Use las credenciales de la aplicación para acceder mediante programación a la base de datos mediante la biblioteca cliente.

. . .
string applicationClientId = "<myClientID>";
string applicationKey = "<myApplicationKey>";
string authority = "<myApplicationTenantID>";
. . .
var kcsb = new KustoConnectionStringBuilder($"https://{clusterName}.kusto.windows.net/{databaseName}")
    .WithAadApplicationKeyAuthentication(
        applicationClientId,
        applicationKey,
        authority);
var client = KustoClientFactory.CreateCslQueryProvider(kcsb);
var queryResult = client.ExecuteQuery($"{query}");

Nota

Especifique el identificador de aplicación y la clave del registro de aplicación (entidad de servicio) creada anteriormente.

Para más información, consulte Autenticación con la Biblioteca de autenticación de Microsoft (MSAL) en aplicaciones y uso de Azure Key Vault con la aplicación web de .NET Core.

Solución de problemas

Error de recurso no válido

Si la aplicación se usa para autenticar usuarios o aplicaciones para el acceso, debe configurar permisos delegados para la aplicación de servicio. Declarar la aplicación puede autenticar usuarios o aplicaciones para el acceso. Si no lo hace, se producirá un error similar al siguiente cuando se realice un intento de autenticación:

AADSTS650057: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration...

Deberá seguir las instrucciones para configurar permisos delegados para la aplicación.

El administrador de inquilinos de Microsoft Entra podría aplicar una directiva que impida que los usuarios de inquilinos den su consentimiento a las aplicaciones. Esta situación produce un error similar al siguiente cuando un usuario intenta iniciar sesión en la aplicación:

AADSTS65001: The user or administrator has not consented to use the application with ID '<App ID>' named 'App Name'

Deberá ponerse en contacto con el administrador de Microsoft Entra para conceder consentimiento a todos los usuarios del inquilino o habilitar el consentimiento del usuario para su aplicación específica.