Uso del control de acceso basado en roles de Azure (RBAC de Azure) en Azure Cognitive Search

Azure proporciona un sistema de autorización de control de acceso basado en roles (RBAC) global para todos los servicios que se ejecutan en la plataforma. En Cognitive Search, puede:

  • Use roles disponibles con carácter general para la administración de servicios.

  • Use nuevos roles de versión preliminar para las solicitudes de datos, incluida la creación, carga y consulta de índices.

No se admite el acceso por usuario a través de los resultados de búsqueda (a veces denominado seguridad de nivel de fila o de nivel de documento). Una solución alternativa es crear filtros de seguridad que recortan los resultados por identidad del usuario y quitar los documentos para los que el solicitante no debe tener acceso.

Los roles integrados incluyen roles disponibles con carácter general y en versión preliminar. Si estos roles no son suficientes, cree un rol personalizado en su lugar.

Rol Descripción y disponibilidad
Propietario (Disponibilidad general) Acceso total al recurso de búsqueda, incluida la capacidad de asignar roles de Azure. Los administradores de suscripciones son miembros de manera predeterminada.

(Versión preliminar) Este rol tiene el mismo nivel de acceso que el rol Colaborador de servicio de búsqueda del plano de datos. Este incluye acceso a todas las acciones del plano de datos, excepto a la capacidad de consultar el índice de búsqueda o los documentos de índice.
Colaborador (Disponibilidad general) El mismo nivel de acceso que Propietario, menos la capacidad de asignar roles o cambiar opciones de autorización.

(Versión preliminar) Este rol tiene el mismo nivel de acceso que el rol Colaborador de servicio de búsqueda del plano de datos. Este incluye acceso a todas las acciones del plano de datos, excepto a la capacidad de consultar el índice de búsqueda o los documentos de índice.
Lector (Disponibilidad general) Acceso limitado a la información de servicio parcial. En el portal, el rol Lector puede acceder a la información de la página Información general del servicio, en la sección Essentials y en la pestaña Supervisión. Todas las demás pestañas y páginas están fuera de los límites.

Este rol tiene acceso a la información del servicio: nombre del servicio, grupo de recursos, estado del servicio, ubicación, nombre e identificador de la suscripción, etiquetas, dirección URL, plan de tarifa, réplicas, particiones y unidades de búsqueda. Este rol también tiene acceso a las métricas del servicio: latencia de búsqueda, porcentaje de solicitudes limitadas y promedio de consultas por segundo.

No hay acceso a las claves de API, las asignaciones de roles, el contenido (índices o asignaciones de sinónimos) ni las métricas de contenido (almacenamiento consumido, número de objetos).
Colaborador del servicio Search (Disponible con carácter general) Este rol es idéntico al rol Colaborador y se aplica a las operaciones del plano de control.

(Versión preliminar) Al habilitar la versión preliminar de RBAC para el plano de datos, este rol también proporciona acceso completo a todas las acciones del plano de datos en índices, mapas de sinónimos, indexadores, orígenes de datos y conjuntos de aptitudes, tal y como se define en Microsoft.Search/searchServices/*. Este rol no proporciona acceso a los índices de búsqueda de consultas ni a los documentos de índice. Este rol es para los administradores del servicio de búsqueda que necesiten administrar los índices de servicios de búsqueda y otros recursos.

Al igual que Colaborador, los miembros de este rol no pueden realizar ni administrar asignaciones de roles ni cambiar opciones de autorización. Para usar las funcionalidades en versión preliminar de este rol, el servicio debe tener habilitada la característica en versión preliminar, como se describe en este artículo.
Colaborador de datos de índice de búsqueda (Versión preliminar) Proporciona acceso completo de plano de datos al contenido de todos los índices del servicio de búsqueda. Este rol está pensado para desarrolladores o propietarios de índices que necesitan importar, actualizar o consultar la colección de documentos de un índice.
Lector de datos de índice de búsqueda (Versión preliminar) Proporciona acceso de plano de datos de solo lectura a los índices de búsqueda del servicio de búsqueda. Este rol está pensado para aplicaciones y usuarios que ejecutan consultas.

Nota

Los recursos de Azure tienen el concepto de categorías de plano de control y plano de datos de las operaciones. En Cognitive Search, "plano de control" hace referencia a cualquier operación que se admita en la API de REST de administración o bibliotecas cliente equivalentes. "Plano de datos" hace referencia a operaciones con relación al punto de conexión del servicio de búsqueda, como la indexación o las consultas, o cualquier otra operación que se especifique en la API de REST de búsqueda o bibliotecas cliente equivalentes.

Funcionalidades y limitaciones de la versión preliminar

  • El control de acceso basado en roles para las operaciones del plano de datos, como la creación o la consulta de un índice, se encuentra actualmente en versión preliminar pública y está disponible conforme a los Términos de uso complementarios.

  • No hay ninguna restricción regional, de nivel o de precios para usar la versión preliminar de RBAC de Azure, pero el servicio Search debe estar en la nube pública de Azure. La versión preliminar no está disponible en Azure Government, Azure Alemania ni Azure China 21Vianet.

  • Si migra la suscripción de Azure a un nuevo inquilino, será necesario volver a habilitar la versión preliminar de RBAC.

  • La adopción de RBAC de Azure podría aumentar la latencia de algunas solicitudes. Cada combinación única de recurso de servicio (índice, indexador, etc.) y entidad de servicio que se use en una solicitud desencadenará una comprobación de autorización. Estas comprobaciones de autorización pueden agregar hasta 200 milisegundos de latencia a una solicitud.

  • En raras ocasiones, cuando las solicitudes se originan a partir de un gran número de entidades de servicio diferentes, todas dirigidas a recursos de servicio diferentes (índices, indexadores, etc.), es posible que las comprobaciones de autorización den lugar a una limitación. La limitación solo se produciría si se usaran cientos de combinaciones únicas de recursos del servicio Search y entidades de servicio en un segundo.

Suscríbase a la vista previa

Se aplica a: Colaborador de datos de índice de búsqueda, Lector de datos de índice de búsqueda y Colaborador de servicio de búsqueda.

Los nuevos roles en versión preliminar integrados conceden permisos sobre el contenido en el servicio Search. Aunque los roles integrados siempre están visibles en Azure Portal, es necesario el registro en la versión preliminar para que estén operativos.

  1. Abra Azure Portal y busque su servicio Search.

  2. En el panel de navegación izquierdo, seleccione Claves.

  3. En el banner azul que menciona la versión preliminar, seleccione Registrar para agregar la característica a la suscripción.

    screenshot of how to sign up for the rbac preview in the portal

También puede registrarse en la versión preliminar mediante el control de exposición de características de Azure (AFEC) y buscar Control de acceso basado en roles para servicio de búsqueda (versión preliminar) . Para más información sobre cómo agregar características en vista previa, consulte Configuración de las características en vista previa en la suscripción de Azure.

Nota

Una vez que se agrega la versión preliminar a la suscripción, todos los servicios de esta se inscriben permanentemente en la versión preliminar. Si no quiere RBAC en un servicio determinado, puede deshabilitarlo para las operaciones del plano de datos como se muestra en una sección posterior.

Habilitación de la versión preliminar de RBAC para las operaciones del plano de datos

Se aplica a: Colaborador de datos de índice de búsqueda, Lector de datos de índice de búsqueda y Colaborador de servicio de búsqueda.

En este paso, configure su servicio de búsqueda para que reconozca un encabezado Authorization en solicitudes de datos que proporcionen un token de acceso de OAuth2.

  1. Inicie sesión en Azure Portal y abra la página del servicio de búsqueda.

  2. En el panel de navegación izquierdo, seleccione Claves.

  3. Elija un mecanismo de Control de acceso de API.

    Opción Status Descripción
    Clave de API Disponible con carácter general (predeterminado) Requiere un administrador o claves de API de consulta en el encabezado de solicitud para la autorización. No se usa ningún rol.
    Control de acceso basado en rol Vista previa Requiere la pertenencia a una asignación de roles para completar la tarea, según se describe en el paso siguiente. También requiere un encabezado de autorización. La elección de esta opción le limita a los clientes que admiten la API REST 2021-04-30-preview.
    Ambos Vista previa Las solicitudes son válidas mediante una clave de API o un token de autorización.

Si no puede guardar la selección u obtiene el mensaje "No se ha actualizado el control de acceso de API para el servicio de búsqueda <name>. DisableLocalAuth se encuentra en versión preliminar y no está habilitado para esta suscripción", no se ha iniciado o procesado la inscripción de su suscripción.

Asignar roles

Las asignaciones de roles son acumulativas y generalizadas en todas las herramientas y bibliotecas cliente. Puede asignar roles mediante cualquiera de los enfoques admitidos que se describen en la documentación del control de acceso basado en roles de Azure.

Debe ser Propietario o tener permisos Microsoft.Authorization/roleAssignments/write para administrar asignaciones de roles.

Las asignaciones de roles en el portal son de todo el servicio. Si desea conceder permisos a un único índice, use PowerShell o la CLI de Azure en su lugar.

  1. Abra Azure Portal.

  2. Vaya al servicio de búsqueda.

  3. Seleccione Control de acceso (IAM) en el panel de navegación izquierdo.

  4. Seleccione Agregar>Agregar asignación de roles.

    Access control (IAM) page with Add role assignment menu open.

  5. Seleccione un rol aplicable:

    • Propietario
    • Colaborador
    • Lector
    • Colaborador del servicio Search (versión preliminar de las solicitudes del plano de datos)
    • Colaborador de datos de índice de búsqueda (versión preliminar)
    • Lector de datos de índice de búsqueda (versión preliminar)
  6. En la pestaña Miembros, seleccione la identidad del usuario o grupo de Azure AD.

  7. En la pestaña Revisión y asignación, seleccione Revisión y asignación para asignar el rol.

Prueba de asignaciones de roles

  1. Abra Azure Portal.

  2. Vaya al servicio de búsqueda.

  3. En la página Información general, seleccione la pestaña Índices:

    • Los miembros de Lector de datos de índice de búsqueda pueden usar el Explorador de búsqueda para consultar el índice. Puede usar cualquier versión de la API para comprobar el acceso. Debería poder emitir consultas y ver resultados, pero no ver la definición del índice.

    • Los miembros de Colaborador de datos de índice de búsqueda pueden seleccionar Nuevo índice para crear uno. Al guardar un nuevo índice, se comprobará el acceso de escritura en el servicio.

Concesión de acceso a un único índice

En algunos escenarios, es posible que quiera limitar el acceso de una aplicación a un único recurso, como un índice.

El portal no admite actualmente asignaciones de roles en este nivel de granularidad, pero se puede realizar con PowerShell o la CLI de Azure.

En PowerShell, use New-AzRoleAssignment, proporcionando el nombre de usuario o grupo de Azure y el ámbito de la asignación.

  1. Cargue los módulos de Azure y AzureAD y conéctese a su cuenta de Azure:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Agregue una asignación de roles limitada a un índice individual:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

Crear un rol personalizado

Si los roles integrados no proporcionan la combinación adecuada de permisos, puede crear un rol personalizado para admitir las operaciones que necesita.

En este ejemplo se clona el rol Lector de datos de índice de búsqueda y, luego, se agrega la posibilidad de enumerar los índices por el nombre. Normalmente, enumerar los índices de un servicio de búsqueda se considera un derecho administrativo.

Estos pasos se derivan del artículo Creación o actualización de roles personalizados de Azure mediante Azure Portal. La clonación a partir de un rol existente se admite en una página del servicio de búsqueda.

Estos pasos crean un rol personalizado que aumenta los derechos de consulta de búsqueda para incluir índices de enumeración por nombre. Normalmente, la enumeración de índices se considera una función de administrador.

  1. En Azure Portal, vaya al servicio de búsqueda.

  2. En el panel de navegación izquierdo, seleccione Access Control (IAM).

  3. En la barra de acciones, seleccione Roles.

  4. Haga clic con el botón derecho en Lector de datos de índice de búsqueda (u otro rol) y seleccione Clonar para abrir el Asistente para crear un rol personalizado.

  5. En la pestaña Aspectos básicos, proporcione un nombre para el rol personalizado, como "Explorador de datos de índice de búsqueda" y, luego, haga clic en Siguiente.

  6. En la pestaña "Permisos", seleccione Agregar permiso.

  7. En la pestaña "Agregar permisos", busque y seleccione el icono Búsqueda de Microsoft.

  8. Establezca los permisos del rol personalizado. En la parte superior de la página, con la selección de Acciones predeterminada:

    • En Microsoft.Search/operations, seleccione Leer: Enumerar todas las operaciones disponibles.
    • En Microsoft.Search/searchServices/indexes, seleccione Leer : Leer índice.
  9. En la misma página, cambie a Acciones de datos y, en Microsoft.Search/searchServices/indexes/documents, seleccione Leer: Leer documentos.

    El código JSON resultante tendrá un aspecto similar al siguiente:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/a5b1ca8b-bab3-4c26-aebe-4cf7ec4791a0/resourceGroups/heidist-free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Seleccione Revisar y crear para crear el rol. Ahora puede asignar usuarios y grupos al rol.

Deshabilitación de la autenticación de clave de API

Las claves de API no se pueden eliminar, pero se pueden deshabilitar en el servicio. Si usa los roles de versión preliminar Colaborador de servicio Search, Colaborador de datos de índice de búsqueda y Lector de datos de índice de búsqueda junto con la autenticación de Azure AD, puede deshabilitar las claves de API. Esta acción provoca que el servicio Search rechace todas las solicitudes relacionadas con datos que pasen una clave de API en el encabezado en el caso de solicitudes relacionadas con contenido.

Para deshabilitar la autenticación basada en claves, use la API de REST de administración versión 2021-04-01-Preview y envíe dos solicitudes consecutivas para el servicio Update.

Para deshabilitar características se necesitan permisos de Propietario o Colaborador. Use Postman u otra herramienta de pruebas web para completar los siguientes pasos (consulte la sugerencia en la parte inferior):

  1. En la primera solicitud, establezca AuthOptions en "aadOrApiKey" para habilitar la autenticación de Azure AD. Observe que la opción indica la disponibilidad de cualquiera de los enfoques: Azure AD o las claves de API nativas.

    PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2021-04-01-Preview
    {
      "location": "{{region}}",
      "sku": {
        "name": "standard"
      },
      "properties": {
        "authOptions": {
          "aadOrApiKey": {
            "aadAuthFailureMode": "http401WithBearerChallenge"
          }
        }
      }
    }
    
  2. En la segunda solicitud, establezca disableLocalAuth en "true". Este paso desactiva la parte de la clave de API de la opción "aadOrApiKey", lo que le deja únicamente con la autenticación de Azure AD.

    PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2021-04-01-Preview
    {
      "location": "{{region}}",
      "sku": {
        "name": "standard"
      },
      "properties": {
        "disableLocalAuth": true
      }
    }
    

No se pueden combinar los pasos uno y dos. En el paso uno, "disableLocalAuth" debe ser "false" con el fin de cumplir los requisitos para establecer "AuthOptions", mientras que el paso dos cambia dicho valor a "true".

Para volver a habilitar la autenticación de clave, ejecute de nuevo la última solicitud, estableciendo "disableLocalAuth" en "false". El servicio de búsqueda reanudará la aceptación de las claves de API en la solicitud automáticamente (suponiendo que se especifiquen).

Sugerencia

Las llamadas a la API REST de administración se autentican mediante Azure Active Directory. Puede encontrar una guía sobre cómo configurar una solicitud y una entidad de seguridad en la entrada de blog API REST de Azure con Postman (2021). El ejemplo anterior se probó con las instrucciones y la colección de Postman que se proporcionan en la entrada de blog.

Acceso condicional

Acceso condicional es una herramienta de Azure Active Directory que se usa para aplicar las directivas de la organización. Mediante el uso de directivas de acceso condicional puede aplicar los controles de acceso correctos cuando sea necesario para mantener protegida la organización. Al acceder a un servicio de Azure Cognitive Search mediante el control de acceso basado en rol, el acceso condicional puede aplicar directivas de la organización.

Para habilitar una directiva de acceso condicional para Azure Cognitive Search, siga estos pasos:

  1. Inicie sesión en Azure Portal.

  2. Busque Acceso condicional de Azure AD.

  3. Seleccione Directivas.

  4. Seleccione + Nueva directiva.

  5. En la sección Aplicaciones en la nube o acciones de la directiva, agregue Azure Cognitive Search como una aplicación en la nube en función de cómo quiera configurar la directiva.

  6. Actualice los parámetros restantes de la directiva. Por ejemplo, especifique a qué usuarios y grupos se aplica esta directiva.

  7. Guarde la directiva.

Importante

Si el servicio de búsqueda tiene asignada una identidad administrada, el servicio de búsqueda específico se mostrará como una aplicación en la nube que se puede incluir o excluir como parte de la directiva de acceso condicional. Las directivas de acceso condicional no se pueden aplicar en un servicio de búsqueda específico. En su lugar, asegúrese de seleccionar la aplicación en la nube Azure Cognitive Search.