Búsqueda de Azure AI admite el control de acceso basado en roles a través de Microsoft Entra ID. El acceso basado en roles es opcional, pero se recomienda. La alternativa es autenticación basada en claves, que es el valor predeterminado.
Si asigna varios roles a una entidad de seguridad, se combinan los permisos. Las asignaciones de roles se aplican en todas las herramientas y bibliotecas cliente.
En este artículo se explica cómo asignar roles integrados para la administración de servicios, el desarrollo y el acceso de consulta de solo lectura y de recuperación. También proporciona pasos para crear roles personalizados y probar asignaciones de roles.
Requisitos previos
Servicio Búsqueda de Azure AI (cualquier región y cualquier nivel) con acceso basado en roles habilitado.
Permiso para asignar roles de Azure. Cualquiera de los siguientes roles funciona:
Revise las instrucciones de asignación de roles para el cliente preferido:
Identifique el valor de asignado que requiere el cliente que prefiera. En función del tipo de cliente y de cesionario, este valor puede ser un nombre principal de usuario, un identificador de objeto de grupo, un nombre de entidad de servicio, un identificador de aplicación de la entidad de servicio o un identificador de objeto de Microsoft Entra.
Roles integrados
Los roles son una colección de permisos que afectan al plano de control o al plano de datos:
Plano de control: Operaciones para el aprovisionamiento, la configuración y la administración del servicio. Las operaciones del plano de control incluyen la creación o eliminación de servicios de búsqueda, la enumeración de claves de API y la administración de la configuración de red y autenticación. Disponible a través de las API REST de Azure Resource Manager, Search Management REST API y bibliotecas cliente de SDK de Azure equivalentes.
Plano de datos: operaciones relacionadas con el punto de conexión del servicio Search. Las operaciones del plano de datos se dividen en dos categorías: administración de objetos y acceso a contenido. Disponible a través de las API REST del servicio Search y las bibliotecas cliente de SDK de Azure equivalentes.
Descripciones de roles
Los siguientes roles integrados conceden permisos a Búsqueda de Azure AI. Los roles del plano de control siempre están disponibles, mientras que los roles del plano de datos requieren que se habilite el acceso basado en roles en el servicio de búsqueda. Puede combinar roles integrados para un acceso más amplio o crear un rol personalizado con los permisos específicos que necesita.
| Rol |
Plano |
Descripción |
|
Propietario |
Control |
- Acceso total al plano de control, incluida la capacidad de asignar roles y cambiar la configuración de autenticación.
- Los administradores de suscripciones tienen este rol de forma predeterminada.
- Puede administrar claves de API.
- No se pueden crear objetos de búsqueda, cargar documentos, índices de consulta ni recuperarlos de bases de conocimiento.
|
|
Colaborador |
Control |
- El mismo nivel de acceso al plano de control que el propietario, salvo la capacidad de asignar roles.
|
|
Lector |
Control |
- Acceso de solo lectura al plano de control.
- Puede ver las métricas de servicio y las definiciones de objetos.
- No se pueden ver ni administrar claves de API, cargar documentos, índices de consulta ni recuperar de bases de conocimiento.
|
|
Colaborador del servicio Search |
Control y datos |
- Acceso total al plano de control. El acceso al plano de datos se limita a la administración de objetos.
- Puede crear índices, indexadores, conjuntos de aptitudes, bases de conocimiento y otros objetos de búsqueda.
- Puede recuperar claves de API de administrador y de consulta mediante operaciones del plano de control.
- No se pueden cargar documentos, índices de consulta ni recuperarse de bases de conocimiento directamente a través del acceso basado en roles.
- Para obtener la lista de permisos completos, consulte
Microsoft.Search/searchServices/*.
|
|
Colaborador de datos de índice de búsqueda |
Datos |
- Acceso a contenido de lectura y escritura
- Puede cargar documentos, índices de consulta y recuperarse de bases de conocimiento.
- No se pueden modificar las definiciones de objeto ni recuperar claves de administrador.
|
|
Lector de datos de índice de búsqueda |
Datos |
- Acceso a contenido de solo lectura.
- Puede consultar índices y recuperar datos de las bases de conocimiento.
- No se pueden cargar documentos, modificar definiciones de objeto ni recuperar claves de administrador.
|
Importante
- El propietario, el colaborador y el colaborador del servicio de búsqueda pueden recuperar claves de administrador, que proporcionan acceso de lectura y escritura completo al plano de datos. Conceda solo estos roles a usuarios de confianza.
- De forma predeterminada, los roles del plano de datos se aplican a todos los índices del servicio de búsqueda. Para definir el ámbito de Colaborador de datos de índice de búsqueda o de Lector de datos de índice de búsqueda en un único índice, consulte Concesión de acceso a un único índice.
Resumen de permisos
Use la tabla siguiente para buscar rápidamente qué rol proporciona los permisos que necesita.
| Permisos |
Propietario/Colaborador |
Lector |
Colaborador del servicio de búsqueda |
Colaborador de datos de índice de búsqueda |
Lector de datos de índice de búsqueda |
| Creación y configuración de servicios de Búsqueda de Azure AI |
✅ |
❌ |
✅ |
❌ |
❌ |
| Acceso al servicio en el portal de Azure |
✅ |
✅ |
✅ |
❌ |
❌ |
| Visualización de las propiedades, las métricas y el punto de conexión del servicio |
✅ |
✅ |
✅ |
❌ |
❌ |
| Enumerar todos los objetos del servicio |
✅ |
✅ |
✅ |
❌ |
❌ |
| Cuotas de acceso y estadísticas de servicio |
✅ |
❌ |
✅ |
❌ |
❌ |
| Visualización, copia y regeneración de claves |
✅ |
❌ |
✅ |
❌ |
❌ |
| Establecimiento de opciones de autenticación |
✅ |
❌ |
✅ |
❌ |
❌ |
| Visualización de roles, directivas y definiciones |
✅ |
✅ |
✅ |
❌ |
❌ |
| Configuración de la seguridad de red y conexiones privadas |
✅ |
❌ |
✅ |
❌ |
❌ |
| Creación, ejecución y administración de objetos de búsqueda 1 |
❌ |
❌ |
✅ |
❌ |
❌ |
| Carga de datos para la indexación 2 |
❌ |
❌ |
❌ |
✅ |
❌ |
| Consultar un índice |
❌ |
❌ |
❌ |
✅ |
✅ |
| Recuperación de una base de conocimiento |
❌ |
❌ |
❌ |
✅ |
✅ |
| Eludir los filtros de permisos con lectura con privilegios elevados (versión preliminar) |
❌ |
❌ |
❌ |
✅ |
❌ |
1 Incluye índices, indexadores, orígenes de datos, conjuntos de aptitudes, alias, mapas de sinónimos, sesiones de depuración, bases de conocimiento y orígenes de conocimiento. Los indexadores también admiten operaciones de ejecución y restablecimiento.
2 Un propietario o colaborador puede ejecutar el Asistente para importar datos para crear y cargar índices, aunque no puedan cargar documentos en otros clientes. Del mismo modo, los indexadores pueden escribir en cualquier índice del servicio de búsqueda, independientemente de las asignaciones de roles por índice. En ambos casos, el servicio de búsqueda (no el usuario) realiza las acciones del plano de datos mediante sus permisos de Microsoft.Search/searchServices/indexes/documents/*.
Asignar roles integrados
En esta sección, ustedes asignarán roles para:
Asignación de roles para la administración de servicios
Los siguientes roles le permiten crear, configurar y administrar un servicio de búsqueda. Estos roles son jerárquicos, por lo que debe seleccionar uno en función del nivel de acceso que necesite.
| Rol |
identificación |
|
Propietario |
8e3af657-a8ff-443c-a75c-2fe8c4bcb635 |
|
Colaborador |
b24988ac-6180-42a0-ab88-20f7382dd24c |
|
Lector |
acdd72a7-3385-48ef-bd42-f606fba81ae7 |
Vaya al servicio de búsqueda en el portal Azure.
En el panel izquierdo, seleccione Access control (IAM).
Seleccione + Añadir>Añadir asignación de rol.
Seleccione un rol: Propietario, Colaborador o Lector.
En la pestaña Members, seleccione la identidad de usuario o grupo de Microsoft Entra. Si va a configurar permisos para otro servicio de Azure, seleccione una identidad administrada asignada por el sistema o asignada por el usuario.
En la pestaña Revisión y asignación, seleccione Revisión y asignación para asignar el rol.
Inicie sesión en su suscripción de Azure.
az login
Cree una asignación de roles cuyo ámbito sea el servicio de búsqueda. Proporcione la persona asignada y el alcance.
az role assignment create \
--assignee <assignee> \
--role "Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referencia:az role assignment create
Importe el módulo necesario y conéctese a la cuenta de Azure.
Import-Module Az.Resources
Connect-AzAccount
Cree una asignación de roles cuyo ámbito sea el servicio de búsqueda. En este ejemplo se usa un nombre de inicio de sesión de usuario.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Reference:New-AzRoleAssignment
Abra un shell de comandos e inicie sesión en la suscripción de Azure.
az login
Obtenga un token de acceso para Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envíe una solicitud PUT para crear una asignación de un rol con ámbito en el servicio de búsqueda. Establezca principalType en User, Groupo ServicePrincipal para que coincida con el asignado.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referencia:Asignaciones de roles - Crear
Asignación de roles para el desarrollo
Los siguientes roles permiten crear objetos de búsqueda, cargar documentos, índices de consulta y recuperar de bases de conocimiento. Asigne los tres roles para cubrir toda la gama de tareas de desarrollo.
Vaya al servicio de búsqueda en el portal Azure.
En el panel izquierdo, seleccione Access control (IAM).
Seleccione + Añadir>Añadir asignación de rol.
Seleccione Colaborador del servicio de búsqueda.
En la pestaña Members, seleccione la identidad de usuario o grupo de Microsoft Entra. Si va a configurar permisos para otro servicio de Azure, seleccione una identidad administrada asignada por el sistema o asignada por el usuario.
En la pestaña Revisión y asignación, seleccione Revisión y asignación para asignar el rol.
Repita estos pasos para asignar colaborador de datos de índice de búsqueda y lector de datos de índice de búsqueda.
Inicie sesión en su suscripción de Azure.
az login
Cree una asignación de roles cuyo ámbito sea el servicio de búsqueda. Proporcione la persona asignada y el alcance.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referencia:az role assignment create
(Opcional) Cree una asignación de roles cuyo ámbito sea un índice. Proporcione la persona asignada y el alcance.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referencia:az role assignment create
Importe el módulo necesario y conéctese a la cuenta de Azure.
Import-Module Az.Resources
Connect-AzAccount
Cree una asignación de roles cuyo ámbito sea el servicio de búsqueda. En este ejemplo se usa un nombre de inicio de sesión de usuario.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Reference:New-AzRoleAssignment
(Opcional) Cree una asignación de roles cuyo ámbito sea un índice. En este ejemplo se usa un nombre de inicio de sesión de usuario.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Reference:New-AzRoleAssignment
Abra un shell de comandos e inicie sesión en la suscripción de Azure.
az login
Obtenga un token de acceso para Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envíe una solicitud PUT para crear una asignación de un rol con ámbito en el servicio de búsqueda. Establezca principalType en User, Groupo ServicePrincipal para que coincida con el asignado.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referencia:Asignaciones de roles - Crear
(Opcional) Envíe una solicitud PUT para crear una asignación de roles cuyo ámbito sea un índice.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referencia:Asignaciones de roles - Crear
Asignar roles para acceso de solo lectura
Use el siguiente rol para aplicaciones y procesos que solo necesitan acceso de lectura a índices y bases de conocimiento. Las operaciones admitidas incluyen búsqueda, búsqueda, autocompletar y sugerencias para índices y recuperación de bases de conocimiento.
Vaya al servicio de búsqueda en el portal Azure.
En el panel izquierdo, seleccione Access control (IAM).
Seleccione + Añadir>Añadir asignación de rol.
Seleccione el rol Lector de datos de índice de búsqueda .
En la pestaña Members, seleccione la identidad de usuario o grupo de Microsoft Entra. Si va a configurar permisos para otro servicio de Azure, seleccione una identidad administrada asignada por el sistema o asignada por el usuario.
En la pestaña Revisión y asignación, seleccione Revisión y asignación para asignar el rol.
Inicie sesión en su suscripción de Azure.
az login
Cree una asignación de roles cuyo ámbito sea el servicio de búsqueda. Proporcione la persona asignada y el alcance.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referencia:az role assignment create
(Opcional) Cree una asignación de roles cuyo ámbito sea un índice. Proporcione la persona asignada y el alcance.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referencia:az role assignment create
Importe el módulo necesario y conéctese a la cuenta de Azure.
Import-Module Az.Resources
Connect-AzAccount
Cree una asignación de roles cuyo ámbito sea el servicio de búsqueda. En este ejemplo se usa un nombre de inicio de sesión de usuario.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Reference:New-AzRoleAssignment
(Opcional) Cree una asignación de roles cuyo ámbito sea un índice. En este ejemplo se usa un nombre de inicio de sesión de usuario.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Reference:New-AzRoleAssignment
Abra un shell de comandos e inicie sesión en la suscripción de Azure.
az login
Obtenga un token de acceso para Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envíe una solicitud PUT para crear una asignación de un rol con ámbito en el servicio de búsqueda. Establezca principalType en User, Groupo ServicePrincipal para que coincida con el asignado.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referencia:Asignaciones de roles - Crear
(Opcional) Envíe una solicitud PUT para crear una asignación de roles cuyo ámbito sea un índice.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/1407120a-92aa-4202-b7e9-c0e197c71c8f",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referencia:Asignaciones de roles - Crear
Prueba de asignaciones de roles
Use un cliente para probar las asignaciones de roles. Recuerde que los roles son acumulativos. No puede eliminar ni denegar roles heredados que tienen como ámbito el nivel de suscripción o de grupo de recursos a nivel de recurso (servicio de búsqueda).
Antes de continuar, configure la aplicación para las conexiones sin claves y tenga asignaciones de roles en vigor.
Vaya al servicio de búsqueda en el portal Azure.
En el panel izquierdo, seleccione Índices de administración> debúsqueda para probar los permisos relacionados con el índice:
Los colaboradores del servicio de búsqueda pueden crear, modificar y eliminar objetos de búsqueda, pero no pueden cargar documentos ni ejecutar consultas. Para comprobar los permisos, cree un índice de búsqueda.
Los colaboradores de datos de índice de búsqueda pueden cargar documentos. No hay ninguna opción de carga de documentos en el portal de Azure fuera del asistente "Import data", pero puede restablecer y ejecutar un indexador para confirmar los permisos de carga de documentos.
Los lectores de datos de índice de búsqueda pueden consultar índices. Para comprobar los permisos, use el Explorador de búsqueda. Debería poder enviar consultas y ver los resultados, pero no debería poder ver definiciones de índice ni crear índices.
Este enfoque supone Visual Studio Code con la extensión REST Client.
Abra un shell de comandos para CLI de Azure e inicie sesión en la suscripción de Azure.
az login
Obtenga un token de acceso para el plano de datos de Búsqueda de Azure AI.
az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
Pegue estas variables en un nuevo archivo de texto en Visual Studio Code.
@baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
@index-name = PASTE-YOUR-INDEX-NAME-HERE
@token = PASTE-YOUR-TOKEN-HERE
Envíe una solicitud que use las variables que especifique. Para el rol Lector de datos de índice de búsqueda, puede enviar una consulta mediante cualquier versión de API compatible.
POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2026-04-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"queryType": "simple",
"search": "motel",
"filter": "",
"select": "HotelName,Description,Category,Tags",
"count": true
}
Referencia:Buscar documentos
Una consulta correcta devuelve resultados de búsqueda con documentos coincidentes. Si el índice está vacío o no tiene coincidencias, value contiene una matriz vacía.
Instale los paquetes necesarios.
dotnet add package Azure.Search.Documents
dotnet add package Azure.Identity
Use Azure.Identity for .NET para la autenticación mediante tokens. Microsoft recomienda DefaultAzureCredential() para la mayoría de los escenarios.
Este es un ejemplo de una conexión de cliente mediante DefaultAzureCredential().
// Create a SearchIndexClient to send create/delete index commands
// Requires Search Service Contributor role
SearchIndexClient adminClient = new SearchIndexClient(serviceEndpoint, new DefaultAzureCredential());
// Create a SearchClient to load and query documents
// Requires Search Index Data Contributor (load) or Search Index Data Reader (query)
SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, new DefaultAzureCredential());
Reference:SearchClient, SearchIndexClient, DefaultAzureCredential
Este es otro ejemplo del uso de credenciales secretas de cliente.
var tokenCredential = new ClientSecretCredential(aadTenantId, aadClientId, aadSecret);
SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, tokenCredential);
Este es un ejemplo de ejecución de una consulta.
SearchResults<SearchDocument> response = srchclient.Search<SearchDocument>("motel");
foreach (SearchResult<SearchDocument> result in response.GetResults())
{
Console.WriteLine(result.Document["HotelName"]);
}
Una consulta correcta devuelve resultados de búsqueda. Si no coinciden documentos, la colección de resultados está vacía.
Instale los paquetes necesarios.
pip install azure-search-documents azure-identity
Use Azure.Identity for Python para la autenticación de tokens.
Use DefaultAzureCredential si el cliente de Python es una aplicación que ejecuta el lado servidor. Habilite la autenticación interactiva si la aplicación se ejecuta en un explorador.
Este es un ejemplo.
from azure.search.documents import SearchClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
endpoint = "https://<mysearch>.search.windows.net"
index_name = "myindex"
client = SearchClient(endpoint=endpoint, index_name=index_name, credential=credential)
Reference:SearchClient, DefaultAzureCredential
Agrega las dependencias necesarias a tu pom.xml.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-search-documents</artifactId>
<version>11.7.4</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.0</version>
</dependency>
Use Azure.Identity for Java para la autenticación de token.
Use DefaultAzureCredential para las aplicaciones que se ejecutan en Azure.
Concesión de acceso a un único índice
En algunos escenarios, es posible que desee limitar el acceso de una aplicación a un único recurso, como un índice.
Actualmente, el portal de Azure no admite asignaciones de roles en el nivel de índice. Use la CLI de Azure, PowerShell o la API REST para asignar roles limitados a un único índice.
Inicie sesión en su suscripción de Azure.
az login
Cree una asignación de roles limitada a un único índice. Proporcione la persona asignada y el ámbito a nivel de índice.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referencia:az role assignment create
Importe el módulo necesario y conéctese a la cuenta de Azure.
Import-Module Az.Resources
Connect-AzAccount
Cree una asignación de roles limitada a un único índice. En este ejemplo se usa un nombre de inicio de sesión de usuario.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Reference:New-AzRoleAssignment
Abra un shell de comandos e inicie sesión en la suscripción de Azure.
az login
Obtenga un token de acceso para Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envíe una solicitud PUT para crear una asignación de roles limitada a un solo índice. Establezca principalType en User, Groupo ServicePrincipal para que coincida con el asignado.
PUT https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>/providers/Microsoft.Authorization/roleAssignments/<role-assignment-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleDefinitionId": "/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/8ebe5a00-799e-43f5-93ac-243d3dce84a7",
"principalId": "<principal-object-id>",
"principalType": "<principal-type>"
}
}
Referencia:Asignaciones de roles - Crear
Operaciones del indexador y de delimitación por índice
Las asignaciones de roles por índice solo se aplican a operaciones de API directas, como consultas o cargas de documentos de usuarios o aplicaciones. Los indexadores no están restringidos por permisos por índice porque funcionan con credenciales de nivel de servicio.
Un usuario con el rol Colaborador del servicio de búsqueda puede crear indexadores que escriban en cualquier índice del servicio de búsqueda, incluso índices en los que ese usuario no tenga ninguna asignación de roles por índice.
Para un aislamiento estricto de datos entre índices, tenga en cuenta estos enfoques:
- Use servicios de búsqueda independientes para equipos o usuarios que requieran aislamiento de nivel de índice.
- Asigne colaborador del servicio de búsqueda solo a los administradores que administran indizadores.
- Use el control de acceso de nivel de documento con filtros de seguridad para restringir los resultados de la consulta dentro de un índice compartido.
Crear un rol personalizado
Si los roles integrados no proporcionan la combinación correcta de permisos, puede crear un rol personalizado para admitir las operaciones que necesita.
En los ejemplos siguientes se clona el Lector de datos de índice de búsqueda y, a continuación, se agrega la capacidad de enumerar índices por nombre. Normalmente, enumerar los índices de un servicio de búsqueda se considera un derecho administrativo.
Inicie sesión en el portal Azure y vaya al servicio de búsqueda.
En el panel izquierdo, seleccione Access control (IAM).
En la pestaña Roles , busque Lector de datos de índice de búsqueda u otro rol, seleccione los puntos suspensivos (...)y, a continuación, seleccione Clonar.
En la pestaña Basics, escriba un nombre para el rol personalizado, como "Search Index Data Explorer" y seleccione Next.
En la pestaña Permisos , seleccione Agregar permisos.
En el panel Agregar permisos, seleccione el icono Búsqueda de Microsoft.
Con Acciones seleccionadas en la parte superior, establezca los permisos siguientes:
- En
Microsoft.Search/operations, seleccione Read : Enumerar todas las operaciones disponibles.
- En
Microsoft.Search/searchServices/indexes, seleccione Read : Read Index.
Cambie a Data Actions en la parte superior y, en Microsoft.Search/searchServices/indexes/documents, seleccione Read : Read Documents.
El código JSON resultante tendrá un aspecto similar al siguiente:
{
"properties": {
"roleName": "Search Index Data Explorer",
"description": "List all indexes on the service and query them.",
"assignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
],
"permissions": [
{
"actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"notActions": [],
"dataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"notDataActions": []
}
]
}
}
Seleccione Agregar para cerrar el panel.
Seleccione Revisar y crear para crear el rol.
Ahora puede asignar usuarios y grupos al rol. Para obtener más información sobre estos pasos, consulte Crear o actualizar Azure roles personalizados mediante el portal de Azure.
En el ejemplo CLI de Azure se muestra la sintaxis JSON para crear un rol personalizado que es un clon del Lector de datos de índice de búsqueda, pero con la capacidad de enumerar todos los índices por nombre. Para obtener instrucciones paso a paso sobre la creación de roles personalizados, consulte Creación o actualización de roles personalizados Azure mediante CLI de Azure.
Revise la lista de permisos atómicos para determinar cuáles necesita. Para este ejemplo, necesita los siguientes permisos:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Guarde la siguiente definición de rol en un archivo JSON denominado search-index-data-explorer.json. Para Id, proporcione un nuevo GUID que genere usted.
{
"Name": "Search Index Data Explorer",
"Id": "<role-definition-guid>",
"IsCustom": true,
"Description": "List all indexes on the service and query them.",
"Actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"NotActions": [],
"DataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
Cree el rol personalizado pasando el archivo JSON a az role definition create.
az role definition create --role-definition @search-index-data-explorer.json
Referencia:az role definition create
En el ejemplo de PowerShell se muestra la sintaxis JSON para crear un rol personalizado que es un clon del Lector de datos de índice de búsqueda, pero con la capacidad de enumerar todos los índices por nombre. Para obtener instrucciones paso a paso sobre la creación de roles personalizados, consulte Creación o actualización de Azure roles personalizados mediante Azure PowerShell.
Revise la lista de permisos atómicos para determinar cuáles necesita. Para este ejemplo, necesita los siguientes permisos:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Guarde la siguiente definición de rol en un archivo JSON denominado search-index-data-explorer.json. Para Id, proporcione un nuevo GUID que genere usted.
{
"Name": "Search Index Data Explorer",
"Id": "<role-definition-guid>",
"IsCustom": true,
"Description": "List all indexes on the service and query them.",
"Actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"NotActions": [],
"DataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
Cree el rol personalizado pasando el archivo JSON a New-AzRoleDefinition.
New-AzRoleDefinition -InputFile "search-index-data-explorer.json"
Reference:New-AzRoleDefinition
En el ejemplo de la API REST se muestra la sintaxis JSON para crear un rol personalizado que es un clon del Lector de datos de índice de búsqueda, pero con la capacidad de enumerar todos los índices por nombre. Para obtener instrucciones paso a paso sobre la creación de roles personalizados, consulte Creación o actualización de roles personalizados Azure mediante la API rest.
Revise la lista de permisos atómicos para determinar cuáles necesita. Para este ejemplo, necesita los siguientes permisos:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Cree el rol personalizado enviando la siguiente solicitud al extremo de definición del rol.
PUT https://management.azure.com/subscriptions/<subscription>/providers/Microsoft.Authorization/roleDefinitions/<role-definition-guid>?api-version=2022-04-01 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"roleName": "Search Index Data Explorer",
"description": "List all indexes on the service and query them.",
"type": "CustomRole",
"permissions": [
{
"actions": [
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read"
],
"notActions": [],
"dataActions": [
"Microsoft.Search/searchServices/indexes/documents/read"
],
"notDataActions": []
}
],
"assignableScopes": [
"/subscriptions/<subscription>/resourceGroups/<resource-group>"
]
}
}
Referencia:Definiciones de roles: crear o actualizar
Creación de una directiva de acceso condicional
Si necesita aplicar directivas organizativas, como la autenticación multifactor, use Acceso condicional de Microsoft Entra.
Para crear una directiva de acceso condicional para Búsqueda de Azure AI:
Inicie sesión en el portal Azure.
Busque Acceso condicional de Microsoft Entra.
En la página Información general , seleccione Crear nueva directiva.
En aplicaciones o acciones en la nube, agregue Búsqueda de Azure AI como una aplicación en la nube, según cómo quiera configurar su política.
Actualice los parámetros restantes de su política. Por ejemplo, especifique a qué usuarios y grupos se aplica la directiva.
Guarde la directiva.
Importante
Si el servicio de búsqueda tiene asignada una identidad administrada, el servicio de búsqueda específico aparece como una aplicación en la nube. Sin embargo, al seleccionar ese servicio de búsqueda específico no se aplica la directiva. En su lugar, seleccione la aplicación en la nube general Búsqueda de Azure AI para aplicar directivas de acceso condicional al servicio de búsqueda.
Solución de problemas
Al desarrollar aplicaciones que usan el control de acceso basado en rol para la autenticación, es posible que encuentre algunos problemas comunes:
La configuración predeterminada de un servicio de búsqueda es la autenticación basada en claves. Si no cambia esta configuración a Ambos o Control de acceso basado en rol, todas las solicitudes que usan la autenticación basada en rol se deniegan automáticamente, independientemente de los permisos subyacentes.
Si la solicitud incluye una clave de API junto con las credenciales basadas en roles, el servicio se autentica mediante la clave . Quite la clave de API de los encabezados de solicitud para usar la autenticación basada en roles.
Si el token de autorización procede de una identidad administrada y ha asignado recientemente los permisos adecuados, es posible que las asignaciones de permisos tarden varias horas en surtir efecto.
Si las consultas con permisos de nivel de documento no devuelven resultados esperados, use Colaborador de datos de índice de búsqueda o cree un rol personalizado con permisos elevados (versión preliminar) para investigar.
Paso siguiente
En este artículo se explica cómo asignar roles para las operaciones de plano de datos y control en Búsqueda de Azure AI. Para obtener instrucciones completas sobre cómo agregar acceso basado en roles al código de la aplicación: