Compartir a través de


Autenticación y autorización de servicios de Azure AI mediante .NET

Las solicitudes de aplicaciones a servicios de Azure AI deben estar autenticadas. En este artículo, explorará las opciones disponibles para autenticarse en Azure OpenAI y otros servicios de IA mediante .NET. Estos conceptos se aplican al SDK de kernel semántico, así como a los SDK de servicios específicos, como Azure OpenAI. La mayoría de los servicios de inteligencia artificial ofrecen dos formas principales de autenticar aplicaciones y usuarios:

  • La autenticación basada en claves proporciona acceso a un servicio de Azure mediante valores de clave secreta. Estos valores secretos a veces se conocen como claves de API o claves de acceso en función del servicio.
  • Microsoft Entra ID proporciona una solución completa de administración de identidades y acceso para asegurarse de que las identidades correctas tienen el nivel correcto de acceso a diferentes recursos de Azure.

Las secciones anteriores proporcionan información general conceptual para estos dos enfoques, en lugar de pasos detallados de implementación. Para obtener información más detallada sobre cómo conectarse a los servicios de Azure, visite los siguientes recursos:

Nota:

Los ejemplos de este artículo se centran principalmente en las conexiones a Azure OpenAI, pero los mismos conceptos y pasos de implementación también se aplican directamente a muchos otros servicios de Azure AI.

Autenticación mediante claves

Las claves de acceso permiten que las aplicaciones y las herramientas se autentiquen en un servicio de Azure AI, como Azure OpenAI, mediante una clave secreta proporcionada por el servicio. Recupere la clave secreta mediante herramientas como Azure Portal o la CLI de Azure y úsela para configurar el código de la aplicación para conectarse al servicio de IA:

builder.Services.AddAzureOpenAIChatCompletion(
    "deployment-model",
    "service-endpoint",
    "service-key"); // Secret key
var kernel = builder.Build();

El uso de claves es una opción sencilla, pero este enfoque debe usarse con precaución. Las claves no son la opción de autenticación recomendada porque:

  • No siguen el principio de mínimo privilegio: proporcionan permisos elevados independientemente de quién las use o para qué tarea.
  • Pueden introducirse accidentalmente en el control de código fuente o almacenarse en ubicaciones no seguras.
  • Pueden ser fácilmente compartidas con o enviadas a partes que no deberían tener acceso.
  • A menudo se requiere administración y rotación manuales.

En su lugar, considere la posibilidad de usar Microsoft Entra ID para la autenticación, que es la solución recomendada para la mayoría de los escenarios.

Autenticación mediante Microsoft Entra ID

Microsoft Entra ID es un servicio de administración de identidades y acceso basado en la nube que proporciona un amplio conjunto de características para diferentes escenarios empresariales y de aplicaciones. Microsoft Entra ID es la solución recomendada para conectarse a Azure OpenAI y otros servicios de inteligencia artificial y proporciona las siguientes ventajas:

  • Autenticación sin claves mediante identidades.
  • Control de acceso basado en rol (RBAC) para asignar identidades los permisos mínimos necesarios.
  • Puede usar la biblioteca cliente de Azure.Identity para detectar credenciales diferentes entre entornos sin necesidad de cambios de código.
  • Controla automáticamente las tareas de mantenimiento administrativo, como la rotación de claves subyacentes.

El flujo de trabajo para implementar la autenticación de Microsoft Entra en la aplicación suele incluir lo siguiente:

  • Desarrollo local:

    1. Inicie sesión en Azure mediante una herramienta de desarrollo local como la CLI de Azure o Visual Studio.
    2. Configure el código para usar la biblioteca cliente de Azure.Identity y la clase DefaultAzureCredential.
    3. Asigne roles de Azure a la cuenta con la que inició sesión para habilitar el acceso al servicio de IA.
  • Aplicación hospedada en Azure:

    1. Implemente la aplicación en Azure después de configurarla para autenticarse mediante la biblioteca cliente de Azure.Identity.
    2. Asigne una identidad administrada a la aplicación hospedada en Azure.
    3. Asigne roles de Azure a la cuenta con la que inició sesión para habilitar el acceso al servicio de IA.

Los conceptos clave de este flujo de trabajo se exploran en las secciones siguientes.

Autenticación en Azure localmente

Al desarrollar aplicaciones localmente que se conectan a los servicios de Azure AI, autentíquese en Azure mediante una herramienta como Visual Studio o la CLI de Azure. La biblioteca cliente de Azure.Identity puede detectar las credenciales locales y usarlas para autenticar la aplicación en los servicios de Azure, como se describe en la sección Configuración del código de la aplicación.

Por ejemplo, para autenticarse en Azure localmente mediante la CLI de Azure, ejecute el siguiente comando:

az login

Configuración del código de la aplicación

Use la biblioteca cliente de Azure.Identity del SDK de Azure para implementar la autenticación de Microsoft Entra en el código. Las bibliotecas de Azure.Identity incluyen la clase DefaultAzureCredential, que detecta automáticamente las credenciales de Azure disponibles en función del entorno actual y las herramientas disponibles. Visite la documentación de SDK de Azure para .NET para obtener el conjunto completo de credenciales de entorno compatibles y el orden en el que se buscan.

Por ejemplo, configure el kernel semántico para autenticarse mediante DefaultAzureCredential con el código siguiente:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddAzureOpenAITextGeneration(
        "your-model",
        "your-endpoint",
        new DefaultAzureCredential())
    .Build();

DefaultAzureCredential permite promover aplicaciones de desarrollo local a producción sin cambios en el código. Por ejemplo, durante el desarrollo DefaultAzureCredential usa las credenciales de usuario local de Visual Studio o la CLI de Azure para autenticarse en el servicio de IA. Cuando la aplicación se implementa en Azure, DefaultAzureCredential usa la identidad administrada asignada a la aplicación.

Asignación de roles a la identidad

El control de acceso basado en rol de Azure (RBAC de Azure) es un sistema que proporciona administración de acceso específica de los recursos de Azure. Asigne un rol a la entidad de seguridad usada por DefaultAzureCredential para conectarse a un servicio de Azure AI, tanto si es un usuario individual, grupo, entidad de servicio o identidad administrada. Los roles de Azure son una colección de permisos que permiten a la identidad realizar diversas tareas, como generar finalizaciones o crear y eliminar recursos.

Asigne roles como Usuario OpenAI de Cognitive Services (id. de rol: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd) a la identidad pertinente mediante herramientas como la CLI de Azure, Bicep o Azure Portal. Por ejemplo, use el comando az role assignment create para asignar un rol mediante la CLI de Azure:

az role assignment create \
        --role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
        --assignee-object-id "$PRINCIPAL_ID" \
        --scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
        --assignee-principal-type User

Obtenga más información sobre RBAC de Azure mediante los siguientes recursos:

Asignación de una identidad administrada a la aplicación

En la mayoría de los escenarios, las aplicaciones hospedadas en Azure deben usar una identidad administrada para conectarse a otros servicios, como Azure OpenAI. Las identidades administradas proporcionan una identidad totalmente administrada en Microsoft Entra ID para que las aplicaciones se usen al conectarse a los recursos que admiten la autenticación de Microsoft Entra. DefaultAzureCredential detecta la identidad asociada a la aplicación y la usa para autenticarse en otros servicios de Azure.

Hay dos tipos de identidades administradas que puede asignar a la aplicación:

  • Una identidad asignada por el sistema está asociada a la aplicación y se elimina si se elimina la aplicación. Una aplicación solo puede tener una identidad asignada por el sistema.
  • Una identidad asignada por el usuario es un recurso de Azure independiente que puede asignarse a la aplicación. Una aplicación puede tener varias identidades asignadas por el usuario.

Asigne roles a una identidad administrada como lo haría con una cuenta de usuario individual, como el rol Usuario de OpenAI de Cognitive Services. Obtenga más información sobre cómo trabajar con identidades administradas mediante los siguientes recursos: