Uso seguro de Azure OpenAI en los datos
Nota:
A partir de junio de 2024, el formulario de aplicación para el punto de conexión privado administrado por Microsoft a Azure AI Search ya no es necesario.
El punto de conexión privado administrado se eliminará de la red virtual administrada por Microsoft a partir de julio de 2025. Si ya ha aprovisionado un punto de conexión privado administrado a través del proceso de aplicación antes de junio de 2024, habilite el servicio de confianza de Azure AI Search lo antes posible para evitar la interrupción del servicio.
Use este artículo para aprender a usar Azure OpenAI en los datos de forma segura mediante la protección de datos y recursos con el control de acceso basado en roles, redes virtuales y puntos de conexión privados de Microsoft Entra ID.
Este artículo solo es aplicable cuando se usa Azure OpenAI en los datos con texto. No se aplica a Azure OpenAI en los datos con imágenes.
Arquitectura de ingesta de datos
Cuando se usa Azure OpenAI en los datos para ingerir datos de Azure Blob Storage, archivos locales o direcciones URL en Búsqueda de Azure AI, se usa el siguiente proceso para procesar los datos.
- Los pasos 1 y 2 solo se usan para la carga de archivos.
- La descarga de direcciones URL a Blob Storage no se muestra en este diagrama. Una vez que las páginas web se descargan de Internet y se cargan en Blob Storage, los pasos 3 en adelante son los mismos.
- Se crean dos indexadores, dos índices, dos orígenes de datos y una aptitud personalizada en el recurso de Búsqueda de Azure AI.
- El contenedor de fragmentos se crea en Blob Storage.
- Si la programación desencadena la ingesta, el proceso de ingesta comienza desde el paso 7.
- La API
preprocessing-jobs
de Azure OpenAI implementa el protocolo de API web de aptitud del cliente de Búsqueda de Azure AI y procesa los documentos de una cola. - Azure OpenAI:
- Usa internamente el primer indexador creado anteriormente para descifrar los documentos.
- Usa un algoritmo basado en heurística para realizar la fragmentación. Respeta los diseños de tabla y otros elementos de formato del límite del fragmento para garantizar la mejor calidad de fragmentación.
- Si decide habilitar la búsqueda de vectores, Azure OpenAI usa la configuración de inserción seleccionada para vectorizar los fragmentos.
- Cuando se procesan todos los datos que supervisa el servicio, Azure OpenAI desencadena otro indexador.
- El indexador almacena los datos procesados en un servicio de Búsqueda de Azure AI.
Para las identidades administradas usadas en las llamadas de servicio, solo se admiten las identidades administradas asignadas por el sistema. Las identidades administradas asignadas por el usuario no se admiten.
Arquitectura de inferencia
Al enviar llamadas API para chatear con un modelo de Azure OpenAI en los datos, el servicio debe recuperar los campos de índice durante la inferencia para realizar la asignación de campos. Por lo tanto, el servicio requiere que la identidad de Azure OpenAI tenga el rol Search Service Contributor
para el servicio de búsqueda incluso durante la inferencia.
Si se proporciona una dependencia de inserción en la solicitud de inferencia, Azure OpenAI vectorizará la consulta reescrita y ambas consultas y vectores se enviarán a Azure AI Search para la búsqueda de vectores.
Control de acceso de nivel de documento
Nota:
El control de acceso de nivel de documento solo se admite para la búsqueda de Azure AI.
Azure OpenAI en los datos le permite restringir los documentos que se pueden usar en respuestas para distintos usuarios con filtros de seguridad de Búsqueda de Azure AI. Al habilitar el acceso a nivel de documento, Azure AI Search recortará los resultados de la búsqueda en función de la pertenencia a grupos de Microsoft Entra de usuario especificada en el filtro. Solo puede habilitar el acceso de nivel de documento en los índices de Azure AI Search existentes. Para habilitar el acceso de nivel de documento:
Para registrar la aplicación y crear usuarios y grupos, siga los pasos descritos en la documentación de Azure AI Search.
Indexe los documentos con sus grupos permitidos. Asegúrese de que los nuevos campos de seguridad tengan el esquema :
{"name": "group_ids", "type": "Collection(Edm.String)", "filterable": true }
group_ids
es el nombre de campo predeterminado. Si usa un nombre de campo diferente, comomy_group_ids
, puede asignar el campo en la asignación de campos de índice.Asegúrese de que cada documento confidencial del índice tenga este valor de campo de seguridad establecido en los grupos permitidos del documento.
En Azure OpenAI Studio, agregue el origen de datos. En la sección asignación de campos de índice, puede asignar cero o un valor al campo grupos permitidos, siempre y cuando el esquema sea compatible. Si los grupos permitidos campo no está asignado, el acceso a nivel de documento está deshabilitado.
Azure OpenAI Studio
Una vez conectado el índice de Azure AI Search, las respuestas de Studio tienen acceso al documento en función de los permisos de Microsoft Entra del usuario que ha iniciado sesión.
Aplicación web
Si usa una aplicación web publicada, debe volver a implementarla para actualizar a la versión más reciente. La última versión de la aplicación web incluye la capacidad de recuperar los grupos de la cuenta Microsoft Entra del usuario conectado, almacenarlos en caché e incluir los ID de grupo en cada solicitud de API.
API
Cuando utilice la API, pase el parámetro filter
en cada solicitud de API. Por ejemplo:
Importante
Lo que sigue es solo un ejemplo. Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.
Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
{
"messages": [
{
"role": "user",
"content": "who is my manager?"
}
],
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "<AZURE_AI_SEARCH_ENDPOINT>",
"key": "<AZURE_AI_SEARCH_API_KEY>",
"index_name": "<AZURE_AI_SEARCH_INDEX>",
"filter": "my_group_ids/any(g:search.in(g, 'group_id1, group_id2'))"
}
}
]
}
my_group_ids
es el nombre de campo que seleccionó para grupos permitidos durante la asignación de campos.group_id1, group_id2
son grupos atribuidos al usuario que ha iniciado sesión. La aplicación cliente puede recuperar y almacenar en caché los grupos de usuarios.
Configuración de recurso
Use las secciones siguientes para configurar los recursos para un uso seguro óptimo. Incluso si planea proteger solo parte de los recursos, debe seguir todos los pasos.
En este artículo se describe la configuración de red relacionada con la deshabilitación de la red pública para los recursos de Azure OpenAI, los recursos de búsqueda de Azure AI y las cuentas de almacenamiento. No se admite el uso de redes seleccionadas con reglas IP, ya que las direcciones IP de los servicios son dinámicas.
Creación de un grupo de recursos
Cree un grupo de recursos para poder organizar todos los recursos pertinentes. Los recursos del grupo de recursos incluyen, entre otros:
- Una red virtual
- Tres servicios clave: uno de Azure OpenAI, una instancia de Búsqueda de Azure AI, una cuenta de almacenamiento
- Tres puntos de conexión privados; cada uno está vinculado a un servicio clave
- Tres interfaces de red; cada una está asociada a un punto de conexión privado
- Una puerta de enlace de red virtual para el acceso desde máquinas cliente locales
- Una aplicación web con red virtual integrada
- Una zona DNS privada, para que la aplicación web busque la dirección IP de Azure OpenAI
Creación de una red virtual
La red virtual tiene tres subredes.
- La primera subred se usa para la puerta de enlace de red virtual.
- La segunda subred se usa para los puntos de conexión privados para los tres servicios clave.
- La tercera subred está vacía y se usa para la integración de red virtual saliente de la aplic. web.
Configuración de Azure OpenAI
Subdominio personalizado habilitado
El subdominio personalizado es necesario para la autenticación basada en id. de Microsoft Entra y la zona DNS privada. Si el recurso de Azure OpenAI se crea mediante la plantilla de ARM, el subdominio personalizado debe especificarse explícitamente.
Habilitación de una entidad administrada
Para permitir que Búsqueda de Azure AI y la cuenta de almacenamiento reconozcan Azure OpenAI Service a través de la autenticación de Microsoft Entra ID, debe asignar una identidad administrada para Azure OpenAI Service. La forma más fácil es activar la identidad administrada asignada por el sistema en Azure Portal.
Para establecer las identidades administradas a través de la API de administración, consulte la documentación de referencia de la API de administración.
"identity": {
"principalId": "<YOUR-PRINCIPAL-ID>",
"tenantId": "<YOUR-TENNANT-ID>",
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<YOUR-SUBSCIRPTION-ID>/resourceGroups/my-resource-group",
"principalId": "<YOUR-PRINCIPAL-ID>",
"clientId": "<YOUR-CLIENT-ID>"
}
}
Habilitación del servicio de confianza
Para permitir que Búsqueda de Azure AI llame a preprocessing-jobs
de Azure OpenAI como API web de aptitudes personalizadas cuando Azure OpenAI no tiene acceso a la red pública, debe configurar Azure OpenAI para admitir Búsqueda de Azure AI como un servicio de confianza basado en la identidad administrada. Azure OpenAI identifica el tráfico de su instancia de Búsqueda de Azure AI comprobando las notificaciones en JSON Web Token (JWT). Búsqueda de Azure AI debe usar la autenticación de identidad administrada asignada por el sistema para llamar a la API web de aptitud personalizada.
Establezca networkAcls.bypass
como AzureServices
desde la API de administración. Para más información, consulte el artículo sobre redes virtuales.
Este paso solo se puede omitir si tiene un vínculo privado compartido para el recurso de Búsqueda de Azure AI.
Deshabilitación del acceso a una red pública
Puede deshabilitar el acceso a la red pública del recurso de Azure OpenAI en Azure Portal.
Para permitir el acceso a Azure OpenAI Service desde las máquinas cliente, como el uso de Azure OpenAI Studio, debe crear conexiones de punto de conexión privado que se conecten al recurso de Azure OpenAI.
Configuración de Búsqueda de Azure AI
Puede usar el plan de tarifa básico y superior para el recurso de búsqueda. No es necesario, pero si usa el plan de tarifa S2, opciones avanzadas están disponibles.
Habilitación de una entidad administrada
Para permitir que los demás recursos reconozcan Búsqueda de Azure AI mediante la autenticación de Microsoft Entra ID, debe asignar una identidad administrada para Búsqueda de Azure AI. La manera más fácil es activar la identidad administrada asignada por el sistema en Azure Portal.
Habilitación del control de acceso basado en roles
A medida que Azure OpenAI usa la identidad administrada para acceder a Búsqueda de Azure AI, debe habilitar el control de acceso basado en roles en Búsqueda de Azure AI. Para hacerlo en Azure Portal, seleccione Tanto como Control de acceso basado en rol en la pestaña Claves de Azure Portal.
Para más información, consulte el artículo sobre el RBAC de Búsqueda de Azure AI.
Deshabilitación del acceso a una red pública
Puede deshabilitar el acceso a la red pública del recurso de Búsqueda de Azure AI en Azure Portal.
Para permitir el acceso al recurso de Búsqueda de Azure AI desde las máquinas cliente, como el uso de Azure OpenAI Studio, debe crear conexiones de punto de conexión privado que se conecten al recurso de Búsqueda de Azure AI.
Habilitación del servicio de confianza
Puede habilitar el servicio de confianza del recurso de búsqueda desde Azure Portal.
Vaya a la pestaña red del recurso de búsqueda. Con el acceso a la red pública establecido en deshabilitado, seleccione Permitir que los servicios de Azure en la lista de servicios de confianza accedan a este servicio de búsqueda.
También puede usar la API de REST para habilitar el servicio de confianza. En este ejemplo se usa la CLI de Azure y la herramienta jq
.
rid=/subscriptions/<YOUR-SUBSCRIPTION-ID>/resourceGroups/<YOUR-RESOURCE-GROUP>/providers/Microsoft.Search/searchServices/<YOUR-RESOURCE-NAME>
apiVersion=2024-03-01-Preview
#store the resource properties in a variable
az rest --uri "https://management.azure.com$rid?api-version=$apiVersion" > search.json
#replace bypass with AzureServices using jq
jq '.properties.networkRuleSet.bypass = "AzureServices"' search.json > search_updated.json
#apply the updated properties to the resource
az rest --uri "https://management.azure.com$rid?api-version=$apiVersion" \
--method PUT \
--body @search_updated.json
Creación de un vínculo privado compartido
Sugerencia
Si usa un plan de tarifa básico o estándar, o si es la primera vez que configura todos los recursos de forma segura, debe omitir este tema avanzado.
Esta sección solo es aplicable al recurso de búsqueda del plan de tarifa S2, ya que requiere compatibilidad con puntos de conexión privados para indexadores con un conjunto de aptitudes.
Para crear un vínculo privado compartido desde el recurso de búsqueda que se conecta al recurso de Azure OpenAI, consulte la documentación de búsqueda. Seleccione Tipo de recurso como Microsoft.CognitiveServices/accounts
e Id. de grupo como openai_account
.
Con el vínculo privado compartido, paso 8 del diagrama de arquitectura de ingesta de datos se cambia de omitir el servicio de confianza a vínculo privado compartido.
Configuración de la cuenta de almacenamiento
Habilitación del servicio de confianza
Para permitir el acceso a la cuenta de almacenamiento desde Azure OpenAI y Azure AI Search, debe configurar la cuenta de almacenamiento para omitir Azure OpenAI y Azure AI Search como servicios de confianza basados en la identidad administrada.
En Azure Portal, vaya a la pestaña redes de la cuenta de almacenamiento, elija "Redes seleccionadas" y, a continuación, seleccione Permitir que los servicios de Azure en la lista de servicios de confianza accedan a esta cuenta de almacenamiento y haga clic en Guardar.
Deshabilitación del acceso a una red pública
Puede deshabilitar el acceso a la red pública de la cuenta de almacenamiento en Azure Portal.
Para permitir el acceso a la cuenta de almacenamiento desde las máquinas cliente, como el uso de Azure OpenAI Studio, debe crear conexiones de punto de conexión privado que se conecten al almacenamiento de blobs.
Asignaciones de roles
Hasta ahora, ya ha configurado cada recurso para que funcione de forma independiente. A continuación, debe permitir que los servicios se autoricen mutuamente.
Role | Persona asignada | Resource | Descripción |
---|---|---|---|
Search Index Data Reader |
Azure OpenAI | Azure AI Search | El servicio de inferencia consulta los datos del índice. |
Search Service Contributor |
Azure OpenAI | Azure AI Search | El servicio de inferencia consulta el esquema de índice para la asignación de campos automáticos. El servicio de ingesta de datos crea un índice, orígenes de datos, un conjunto de aptitudes, un indexador y consulta el estado del indexador. |
Storage Blob Data Contributor |
Azure OpenAI | Cuenta de almacenamiento | Lee del contenedor de entrada y escribe el resultado preprocesado en el contenedor de salida. |
Cognitive Services OpenAI Contributor |
Azure AI Search | Azure OpenAI | Habilidad personalizada. |
Storage Blob Data Reader |
Azure AI Search | Cuenta de almacenamiento | Lee blobs de documentos y blobs de fragmentos. |
Reader |
Proyecto de estudio de IA de Azure | Puntos de conexión privados de Azure Storage (Blob y archivo) | Leer índices de búsqueda creados en almacenamiento blob dentro de un proyecto de IA Studio. |
Cognitive Services OpenAI User |
Aplicación web | Azure OpenAI | Inferencia. |
En la tabla anterior, Assignee
significa la identidad administrada asignada por el sistema de ese recurso.
El administrador debe tener el rol Owner
en estos recursos para agregar asignaciones de roles.
Consulte la documentación de RBAC de Azure para obtener instrucciones sobre cómo establecer estos roles en Azure Portal. Puede usar el script disponible en GitHub para agregar las asignaciones de roles mediante programación.
Para permitir que los desarrolladores usen estos recursos para compilar aplicaciones, el administrador debe agregar la identidad de los desarrolladores con las siguientes asignaciones de roles a los recursos.
Rol | Resource | Descripción |
---|---|---|
Cognitive Services OpenAI Contributor |
Azure OpenAI | Llama a la API de ingesta pública desde Azure OpenAI Studio. El rol Contributor no es suficiente, ya que, si solo tiene el rol Contributor , no puede llamar a la API del plano de datos a través de la autenticación de Microsoft Entra ID y se requiere dicha autenticación en la configuración de seguridad descrita en este artículo. |
Cognitive Services User |
Azure OpenAI | Enumere las claves de API de Azure OpenAI Studio. |
Contributor |
Azure AI Search | Enumera las claves de API para enumerar índices de Azure OpenAI Studio. |
Contributor |
Cuenta de almacenamiento | Enumera SAS de cuenta para cargar archivos desde Azure OpenAI Studio. |
Contributor |
El grupo de recursos o la suscripción de Azure en la que el desarrollador necesita implementar la aplicación web | Implemente la aplicación web en la suscripción de Azure del desarrollador. |
Role Based Access Control Administrator |
Azure OpenAI | Permiso para configurar la asignación de roles necesaria en el recurso de Azure OpenAI. Permite que la aplicación web llame a Azure Open AI. |
Configuración de la puerta de enlace y el cliente
Para acceder a Azure OpenAI Service desde las máquinas cliente locales, uno de los enfoques es configurar Azure VPN Gateway y el cliente VPN de Azure.
Siga esta guía para crear una puerta de enlace de red virtual para la red virtual.
Siga esta guía para agregar la configuración de punto a sitio y habilitar la autenticación basada en Microsoft Entra ID. Descargue el paquete de configuración del perfil de cliente VPN de Azure, descomprima e importe el archivo AzureVPN/azurevpnconfig.xml
en el cliente VPN de Azure.
Configure el archivo hosts
de máquina local para que apunte los nombres de host de los recursos a las direcciones IP privadas de la red virtual. El archivo hosts
se encuentra en C:\Windows\System32\drivers\etc
para Windows y en /etc/hosts
en Linux. Ejemplo:
10.0.0.5 contoso.openai.azure.com
10.0.0.6 contoso.search.windows.net
10.0.0.7 contoso.blob.core.windows.net
Azure OpenAI Studio
Debe poder usar todas las características de Azure OpenAI Studio, incluida la ingesta y la inferencia, desde las máquinas cliente locales.
Aplicación web
La aplicación web se comunica con el recurso de Azure OpenAI. Dado que el recurso de Azure OpenAI tiene deshabilitada la red pública, la aplicación web debe configurarse para usar el punto de conexión privado de la red virtual para acceder al recurso de Azure OpenAI.
La aplicación web debe resolver el nombre de host de Azure OpenAI en la dirección IP privada del punto de conexión privado para Azure OpenAI. Por lo tanto, primero debe configurar la zona DNS privada para la red virtual.
- Cree una zona DNS privada en el grupo de recursos.
- Agregue un registro DNS. IP es la dirección IP privada del punto de conexión privado para el recurso de Azure OpenAI y puede obtener la dirección IP de la interfaz de red asociada al punto de conexión privado de Azure OpenAI.
- Vincule la zona DNS privada a la red virtual para que la aplicación web integrada en esta red virtual pueda usar esta zona DNS privada.
Al implementar la aplicación web desde Azure OpenAI Studio, seleccione la misma ubicación con la red virtual y seleccione una SKU adecuada para que pueda admitir la característica de integración de red virtual.
Una vez implementada la aplicación web, en la pestaña Redes de Azure Portal, configure la integración de red virtual de tráfico saliente de la aplicación web, elija la tercera subred reservada para la aplicación web.
Uso de la API
Asegúrese de que la credencial de inicio de sesión tenga el rol Cognitive Services OpenAI Contributor
en el recurso de Azure OpenAI y ejecute az login
primero.
Ingestion API
Consulte el artículo de referencia de API de ingesta para obtener más información sobre los objetos de solicitud y de respuesta usados por la API de ingesta.
API de inferencia
Consulte el artículo de referencia de API de inferencia para obtener más información sobre los objetos de solicitud y de respuesta usados por la API de inferencia.
Uso de Microsoft Defender for Cloud
Ahora puede integrar Microsoft Defender for Cloud (versión preliminar) con los recursos de Azure para proteger las aplicaciones. Microsoft Defender for Cloud protege las aplicaciones con protección contra amenazas para cargas de trabajo de inteligencia artificial, lo que proporciona a los equipos alertas de seguridad basadas en evidencia enriquecidas con señales de inteligencia sobre amenazas de Microsoft y permite a los equipos reforzar su posición de seguridad con recomendaciones de procedimientos recomendados de seguridad integradas.
Use este formulario para solicitar acceso.