Uso de claves de API para la autenticación de Azure Cognitive Search

Cognitive Search utiliza la autenticación basada en claves como metodología de autenticación principal. Para las solicitudes entrantes a los punto de conexión del servicio de búsqueda, como aquellas que crean o consultan un índice, las claves de API son la única opción de autenticación disponible con carácter general. Algunos escenarios de solicitudes salientes, sobre todo los que implican indizadores, pueden usar identidades y roles de Azure Active Directory.

Nota

La autorización para las operaciones del plano de datos mediante el control de acceso basado en roles (RBAC) de Azure está ahora en versión preliminar. Puede usar esta funcionalidad en versión preliminar para complementar o reemplazar las claves de API en las solicitudes de índice de búsqueda.

Las claves de API se generan cuando se crea el servicio. Pasar una clave de API válida en la solicitud se considera una prueba de que esta última procede de un cliente autorizado. Existen dos tipos de claves. Las claves de administración transmiten permisos de escritura en el servicio y también conceden derechos para consultar la información del sistema. Las claves de consulta transmiten permisos de lectura y las aplicaciones pueden usarlas para consultar un índice específico.

Al conectarse a un servicio de búsqueda, todas la solicitudes deben incluir una clave de API generada de forma específica para el servicio.

Puede ver y administrar las claves de API en Azure Portal, o a través de PowerShell, la CLI de Azureo la API de REST.

Portal page, retrieve settings, keys section

¿Qué es una clave de API?

Una clave de API es una cadena única formada por números y letras generados aleatoriamente que se pasan en cada solicitud al servicio de búsqueda. El servicio aceptará la solicitud, si tanto la solicitud como la clave son válidas.

Se usan dos tipos de claves para obtener acceso al servicio de búsqueda: administración (lectura y escritura) y consulta (solo lectura).

Clave Descripción límites
Administración Concede derechos completos para todas las operaciones, incluida la capacidad para administrar el servicio, crear y eliminar índices, indexadores y orígenes de datos.

Cuando se crea el servicio, se generan dos claves de administración, a las que se hace referencia como claves principal y secundaria en el portal. También se pueden volver a generar individualmente a petición. Tener dos claves le permite la rotación de una clave mientras se usa la segunda clave para un acceso continuado al servicio.

Las claves de administración solo se especifican en los encabezados de la solicitud HTTP. No se puede colocar una clave de API de administración en una dirección URL.
Máximo 2 por servicio
Consultar Conceden acceso de solo lectura a índices y documentos y, normalmente, se distribuyen entre las aplicaciones cliente que emiten solicitudes de búsqueda.

Las claves de consulta se crean bajo petición.

Las claves de consulta se pueden especificar en un encabezado de solicitud HTTP para operaciones de búsqueda y sugerencias. Como alternativa, puede pasar una clave de consulta como un parámetro en una dirección URL. En función de cómo formule la solicitud la aplicación cliente, puede resultar más fácil pasar la clave como un parámetro de consulta:

GET /indexes/hotels/docs?search=*&$orderby=lastRenovationDate desc&api-version=2020-06-30&api-key=[query key]
50 por servicio

Visualmente, no hay distinción entre las claves de administración y de consulta. Ambas claves son cadenas formadas por 32 caracteres alfanuméricos generados aleatoriamente. Si necesita saber qué tipo de clave se especifica en la aplicación, puede comprobar los valores de las claves en el portal.

Nota

Se considera una práctica poco segura pasar datos confidenciales, como una api-key en el identificador URI de la solicitud. Por este motivo, Azure Cognitive Search solo acepta una clave de consulta como api-key en la cadena de consulta, y debe evitar hacerlo a menos que el contenido del índice deba estar disponible públicamente. Como regla general, se recomienda pasar la api-key como un encabezado de solicitud.

Encontrar las claves existentes

Puede obtener las claves de acceso en el portal o mediante la PowerShell, la CLI de Azure o la API de REST.

  1. Inicie sesión en Azure Portal.

  2. Obtenga la lista de los servicios de búsqueda de su suscripción.

  3. Seleccione el servicio y, en la página de información general, haga clic en Configuración>Claves para ver las claves de administración y de consulta.

    Portal page, view settings, keys section

Creación de claves de consulta

Las claves de consulta se usan para el acceso de solo lectura a los documentos dentro de un índice para las operaciones destinadas a una colección de documentos. Las consultas de búsqueda, filtro y sugerencias son todas las operaciones que toman una clave de consulta. Cualquier operación de solo lectura que devuelve definiciones de objetos o datos del sistema, como una definición del índice o el estado del indexador, requiere una clave de administración.

Restringir el acceso y las operaciones en las aplicaciones cliente es esencial para proteger los activos de búsqueda en el servicio. Use siempre una clave de consulta en lugar de una clave de administración para cualquier consulta originada desde una aplicación cliente.

  1. Inicie sesión en Azure Portal.

  2. Obtenga la lista de los servicios de búsqueda de su suscripción.

  3. Seleccione el servicio y, en la página de información general, haga clic en Configuración>Claves.

  4. Haga clic en Administrar claves de consulta.

  5. Use la clave de consulta ya generada para el servicio o cree hasta 50 claves de consulta nuevas. La clave de consulta predeterminada no tiene nombre, pero se puede asignar un nombre a las claves de consulta adicionales para facilitar la administración.

    Create or use a query key

Nota

Un ejemplo de código que muestra el uso de claves de consulta puede encontrarse en DotNetHowTo.

Regeneración de claves de administración

Se crean dos claves de administración para cada servicio para que pueda rotar una clave principal mediante la clave secundaria para la continuidad empresarial.

  1. En la página Configuración>Claves, copie la clave secundaria.
  2. Para todas las aplicaciones, actualice la configuración de la clave de API para usar la clave secundaria.
  3. Regenere la clave principal
  4. Actualice todas las aplicaciones para usar la nueva clave principal.

Si regenera las claves al mismo tiempo sin querer, se producirá un error HTTP 403 Prohibido en todas las solicitudes de cliente que usen esas claves. Sin embargo, no se elimina el contenido ni se le bloquea permanentemente.

Todavía puede acceder al servicio a través del portal o mediante programación. Las funciones de administración están operativas a través de un identificador de suscripción, no un servicio de claves de API; por lo tanto, seguirán estando disponibles aunque las claves de API no lo estén.

Después de crear nuevas claves a través del portal o la capa de administración, se restaura el acceso al contenido (índices, indexadores, orígenes de datos, las asignaciones de sinónimos) una vez que tiene las nuevas claves y las proporciona en las solicitudes.

Protección de las claves de API

Las asignaciones de roles determinan quiénes puede leer y administrar las claves. Los miembros de los roles siguientes pueden ver y regenerar las claves: Propietario, Colaborador, Colaboradores de Search Service. El rol Lector no tiene acceso a las claves de API.

Los administradores de suscripciones pueden ver y volver a generar todas las claves de API. Como medida de precaución, revise las asignaciones de roles para conocer quién tiene acceso a las claves de administración.

  1. Vaya a la página del servicio de búsqueda de Azure Portal.
  2. En el panel de navegación izquierdo, seleccione Control de acceso (IAM) y después seleccione la pestaña Asignaciones de rol.
  3. Establezca Ámbito en Este recurso para ver las asignaciones de roles para el servicio.

Consulte también