Pesquisa de IA do Azure dá suporte ao controle de acesso baseado em funções por meio de Microsoft Entra ID. O acesso baseado em função é opcional, mas recomendado. A alternativa é a autenticação baseada em chave, que é o padrão.
Ao atribuir várias funções a um principal de segurança, as permissões são combinadas. As atribuições de função se aplicam em todas as ferramentas e bibliotecas de clientes.
Este artigo descreve como atribuir funções internas para administração do serviço, desenvolvimento e acesso somente leitura para consultas e recuperação de dados. Ele também fornece etapas para criar funções personalizadas e testar atribuições de função.
Pré-requisitos
Um serviço de Pesquisa de IA do Azure (em qualquer região ou nível) com acesso baseado em função habilitado.
Permissão para atribuir Azure funções. Qualquer uma das seguintes funções funciona:
Examine as instruções de atribuição de função para seu cliente preferencial:
Identifique o valor do destinatário exigido pelo cliente preferencial. De acordo com o tipo de cliente e de destinatário, esse valor pode ser um nome principal de usuário, uma ID de objeto de grupo, um nome de entidade de serviço, uma ID do aplicativo da entidade de serviço ou uma ID de objeto do Microsoft Entra.
Funções incorporadas
As funções são uma coleção de permissões que afetam o plano de controle ou o plano de dados:
Plano de controle: Operações de provisionamento, configuração e administração de serviços. As operações do plano de controle incluem a criação ou exclusão de serviços de pesquisa, a listagem de chaves de API e o gerenciamento de configurações de rede e autenticação. Disponível por meio das APIs REST Azure Resource Manager, Search Management REST APIs e bibliotecas de cliente SDK do Azure equivalentes.
Plano de dados: refere-se às operações realizadas no ponto de extremidade do serviço de pesquisa. As operações do plano de dados se enquadram em duas categorias: gerenciamento de objetos e acesso ao conteúdo. Disponível por meio das APIs REST do serviço Search e bibliotecas de cliente SDK do Azure equivalentes.
Descrições de função
As funções internas a seguir concedem permissões para Pesquisa de IA do Azure . As funções do plano de controle estão sempre disponíveis, enquanto as funções do plano de dados exigem que o acesso baseado em função seja habilitado em seu serviço de pesquisa. Você pode combinar funções internas para acesso mais amplo ou criar uma função personalizada com as permissões específicas necessárias.
| Função |
Avião |
Descrição |
|
Proprietário |
Controle |
- Acesso total ao plano de controle, incluindo a capacidade de atribuir funções e alterar as configurações de autenticação.
- Os administradores de assinatura têm essa função por padrão.
- Pode gerenciar chaves de API.
- Não é possível criar objetos de pesquisa, carregar documentos, consultar índices ou recuperar de bases de dados de conhecimento.
|
|
Colaborador |
Controle |
- Mesmo nível de acesso ao plano de controle que o Proprietário, menos a capacidade de atribuir funções.
|
|
Leitor |
Controle |
- Acesso somente leitura ao plano de controle.
- Pode exibir métricas de serviço e definições de objeto.
- Não é possível exibir ou gerenciar chaves de API, carregar documentos, consultar índices ou recuperar de bases de dados de conhecimento.
|
|
Colaborador do Serviço de Pesquisa |
Controle e dados |
- Acesso total ao plano de controle. O acesso ao plano de dados é limitado ao gerenciamento de objetos.
- Pode criar índices, indexadores, conjuntos de habilidades, bases de dados de conhecimento e outros objetos de pesquisa.
- Pode recuperar chaves de API administrativas e de consulta por meio de operações do plano de controle.
- Não é possível carregar documentos, índices de consulta ou recuperar de bases de dados de conhecimento diretamente por meio do acesso baseado em função.
- Para obter a lista completa de permissões, consulte
Microsoft.Search/searchServices/*.
|
|
Contribuinte de dados do índice de pesquisa |
Dados |
- Acesso de leitura e gravação ao conteúdo.
- Pode carregar documentos, consultar índices e recuperar de bases de dados de conhecimento.
- Não é possível modificar definições de objeto nem recuperar chaves de administrador.
|
|
Leitor de dados de índice de pesquisa |
Dados |
- Acesso de conteúdo somente leitura.
- Pode consultar índices e recuperar de bases de conhecimento.
- Não é possível carregar documentos, modificar definições de objeto ou recuperar chaves de administrador.
|
Importante
- As funções Proprietário, Colaborador e Colaborador do Serviço de Pesquisa podem recuperar chaves de administrador, que concedem acesso completo de leitura e gravação ao plano de dados. Conceda apenas essas funções a usuários confiáveis.
- Por padrão, as funções do plano de dados se aplicam a todos os índices no serviço de pesquisa. Para definir o escopo do Colaborador de Dados do Índice de Pesquisa ou do Leitor de Dados de Índice de Pesquisa para um único índice, consulte Conceder acesso a um único índice.
Resumo das permissões
Use a tabela a seguir para localizar rapidamente qual função fornece as permissões necessárias.
| Permissões |
Proprietário/Colaborador |
Leitor |
Colaborador do Serviço de Pesquisa |
Colaborador de dados de índice de pesquisa |
Leitor de dados de índice de pesquisa |
| Criar e configurar serviços de Pesquisa de IA do Azure |
✅ |
❌ |
✅ |
❌ |
❌ |
| Acessar o serviço no portal do Azure |
✅ |
✅ |
✅ |
❌ |
❌ |
| Exibir propriedades de serviço, métricas e ponto de extremidade |
✅ |
✅ |
✅ |
❌ |
❌ |
| Listar todos os objetos no serviço |
✅ |
✅ |
✅ |
❌ |
❌ |
| Cotas de acesso e estatísticas de serviço |
✅ |
❌ |
✅ |
❌ |
❌ |
| Exibir, copiar e regenerar chaves |
✅ |
❌ |
✅ |
❌ |
❌ |
| Definir opções de autenticação |
✅ |
❌ |
✅ |
❌ |
❌ |
| Exibir funções, políticas e definições |
✅ |
✅ |
✅ |
❌ |
❌ |
| Configurar a segurança de rede e conexões privadas |
✅ |
❌ |
✅ |
❌ |
❌ |
| Criar, executar e gerenciar objetos de pesquisa 1 |
❌ |
❌ |
✅ |
❌ |
❌ |
| Carregar dados para indexação 2 |
❌ |
❌ |
❌ |
✅ |
❌ |
| Consultar um índice |
❌ |
❌ |
❌ |
✅ |
✅ |
| Recuperar de uma base de conhecimento |
❌ |
❌ |
❌ |
✅ |
✅ |
| Ignorar filtros de permissão com leitura elevada (versão prévia) |
❌ |
❌ |
❌ |
✅ |
❌ |
1 Inclui índices, indexadores, fontes de dados, conjuntos de habilidades, aliases, mapas de sinônimos, sessões de depuração, bases de dados de conhecimento e fontes de conhecimento. Os indexadores também dão suporte a operações de execução e redefinição.
2 Um Proprietário ou Colaborador pode executar o assistente de importação de dados para criar e carregar índices, mesmo que eles não possam carregar documentos em outros clientes. Da mesma forma, os indexadores podem escrever em qualquer índice no serviço de pesquisa, independentemente das atribuições de funções específicas por índice. Em ambos os casos, o serviço de pesquisa (não o usuário) executa as ações do plano de dados usando suas permissões de Microsoft.Search/searchServices/indexes/documents/*.
Atribuir papéis predefinidos
Nesta seção, você atribui funções para:
Atribuir funções para administração de serviço
As funções a seguir permitem que você crie, configure e gerencie um serviço de pesquisa. Essas funções são hierárquicas, portanto, selecione uma com base no nível de acesso necessário.
| Função |
ID |
|
Proprietário |
8e3af657-a8ff-443c-a75c-2fe8c4bcb635 |
|
Colaborador |
b24988ac-6180-42a0-ab88-20f7382dd24c |
|
Leitor |
acdd72a7-3385-48ef-bd42-f606fba81ae7 |
Acesse o serviço de pesquisa no Azure portal.
No painel esquerdo, selecione Access control (IAM).
Selecione +Adicionar>Adicionar atribuição de função.
Selecione uma função: Proprietário, Colaborador ou Leitor.
Na guia Members, selecione a Microsoft Entra identidade do usuário ou do grupo. Se você estiver configurando permissões para outro serviço Azure, selecione uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário.
Na guia Examinar + atribuir, selecione Examinar + atribuir para atribuir a função.
Entre em sua assinatura do Azure.
az login
Crie uma atribuição de função com escopo para o serviço de pesquisa. Forneça o destinatário e o escopo.
az role assignment create \
--assignee <assignee> \
--role "Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referência:az role assignment create
Importe o módulo necessário e conecte-se à sua conta Azure.
Import-Module Az.Resources
Connect-AzAccount
Crie uma atribuição de função com escopo para o serviço de pesquisa. Este exemplo usa um nome de entrada do usuário.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referência:New-AzRoleAssignment
Abra um shell de comando e entre em sua assinatura Azure.
az login
Obtenha um token de acesso para Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envie uma solicitação PUT para criar uma atribuição de função no escopo do serviço de pesquisa. Defina principalType como User, Groupou ServicePrincipal para corresponder ao destinatário.
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>"
}
}
Referência:Atribuições de Função - Criar
Atribuir funções para desenvolvimento
As funções a seguir permitem criar objetos de pesquisa, carregar documentos, consultar índices e recuperar de bases de dados de conhecimento. Atribua todas as três funções para abranger toda a gama de tarefas de desenvolvimento.
Acesse o serviço de pesquisa no Azure portal.
No painel esquerdo, selecione Access control (IAM).
Selecione +Adicionar>Adicionar atribuição de função.
Selecione Colaborador do Serviço de Pesquisa.
Na guia Members, selecione a Microsoft Entra identidade do usuário ou do grupo. Se você estiver configurando permissões para outro serviço Azure, selecione uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário.
Na guia Examinar + atribuir, selecione Examinar + atribuir para atribuir a função.
Repita estas etapas para atribuir o Colaborador de Dados do Índice de Pesquisa e o Leitor de Dados do Índice de Pesquisa.
Entre em sua assinatura do Azure.
az login
Crie uma atribuição de função com escopo para o serviço de pesquisa. Forneça o destinatário e o escopo.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Contributor" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referência:az role assignment create
(Opcional) Crie uma atribuição de função no escopo de um índice. Forneça o destinatário e o escopo.
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>"
Referência:az role assignment create
Importe o módulo necessário e conecte-se à sua conta Azure.
Import-Module Az.Resources
Connect-AzAccount
Crie uma atribuição de função com escopo para o serviço de pesquisa. Este exemplo usa um nome de entrada do usuário.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referência:New-AzRoleAssignment
(Opcional) Crie uma atribuição de função no escopo de um índice. Este exemplo usa um nome de entrada do usuário.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referência:New-AzRoleAssignment
Abra um shell de comando e entre em sua assinatura Azure.
az login
Obtenha um token de acesso para Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envie uma solicitação PUT para criar uma atribuição de função no escopo do serviço de pesquisa. Defina principalType como User, Groupou ServicePrincipal para corresponder ao destinatário.
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>"
}
}
Referência:Atribuições de Função - Criar
(Opcional) Envie uma solicitação PUT para criar uma atribuição de função com escopo para um í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>"
}
}
Referência:Atribuições de Função - Criar
Atribuir funções para acesso somente leitura
Use a função a seguir para aplicativos e processos que só precisam de acesso de leitura a índices e bases de dados de conhecimento. As operações com suporte incluem pesquisa, pesquisa, preenchimento automático e sugestões de índices e recuperação para bases de dados de conhecimento.
Acesse o serviço de pesquisa no Azure portal.
No painel esquerdo, selecione Access control (IAM).
Selecione +Adicionar>Adicionar atribuição de função.
Selecione a função Leitor de Dados do Índice de Pesquisa .
Na guia Members, selecione a Microsoft Entra identidade do usuário ou do grupo. Se você estiver configurando permissões para outro serviço Azure, selecione uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário.
Na guia Examinar + atribuir, selecione Examinar + atribuir para atribuir a função.
Entre em sua assinatura do Azure.
az login
Crie uma atribuição de função com escopo para o serviço de pesquisa. Forneça o destinatário e o escopo.
az role assignment create \
--assignee <assignee> \
--role "Search Index Data Reader" \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referência:az role assignment create
(Opcional) Crie uma atribuição de função no escopo de um índice. Forneça o destinatário e o escopo.
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>"
Referência:az role assignment create
Importe o módulo necessário e conecte-se à sua conta Azure.
Import-Module Az.Resources
Connect-AzAccount
Crie uma atribuição de função com escopo para o serviço de pesquisa. Este exemplo usa um nome de entrada do usuário.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>"
Referência:New-AzRoleAssignment
(Opcional) Crie uma atribuição de função no escopo de um índice. Este exemplo usa um nome de entrada do usuário.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Reader" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referência:New-AzRoleAssignment
Abra um shell de comando e entre em sua assinatura Azure.
az login
Obtenha um token de acesso para Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envie uma solicitação PUT para criar uma atribuição de função no escopo do serviço de pesquisa. Defina principalType como User, Groupou ServicePrincipal para corresponder ao destinatário.
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>"
}
}
Referência:Atribuições de Função - Criar
(Opcional) Envie uma solicitação PUT para criar uma atribuição de função com escopo para um í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>"
}
}
Referência:Atribuições de Função - Criar
Testar atribuições de função
Use um cliente para testar atribuições de função. Lembre-se de que as funções são cumulativas. Você não pode excluir ou negar funções herdadas que estão delimitadas para o nível de assinatura ou grupo de recursos no nível do recurso (como um serviço de busca).
Antes de continuar, configure seu aplicativo para conexões sem chave e tenha atribuições de função em vigor.
Acesse o serviço de pesquisa no Azure portal.
No painel esquerdo, selecione gerenciamento de pesquisa>Índices para testar permissões relacionadas ao índice:
Os Colaboradores do Serviço de Pesquisa podem criar, modificar e excluir objetos de pesquisa, mas não podem carregar documentos ou executar consultas. Para verificar as permissões, crie um índice de pesquisa.
Os Colaboradores de Dados de Índice de Pesquisa podem carregar documentos. Não há nenhuma opção de carregar documentos no portal de Azure fora do Import data wizard, mas você pode reset e executar um indexador para confirmar as permissões de carregamento do documento.
Os Leitores de Dados do Índice de Pesquisa podem consultar índices. Para verificar as permissões, use Gerenciador de Pesquisa. Você deve ser capaz de enviar consultas e exibir resultados, mas não deve ser capaz de exibir definições de índice ou criar índices.
Essa abordagem pressupõe Visual Studio Code com a extensão do cliente REST.
Abra um shell de comando para a CLI do Azure e entre em sua assinatura do Azure.
az login
Obtenha um token de acesso para o plano de dados Pesquisa de IA do Azure .
az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
Cole essas variáveis em um novo arquivo de texto em Visual Studio Code.
@baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
@index-name = PASTE-YOUR-INDEX-NAME-HERE
@token = PASTE-YOUR-TOKEN-HERE
Envie uma solicitação que use as variáveis especificadas. Para a função Leitor de Dados de Índice de Pesquisa, você pode enviar uma consulta usando qualquer versão de API com suporte.
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
}
Reference:Search Documents
Uma consulta bem-sucedida retorna os resultados da pesquisa com documentos correspondentes. Se o índice estiver vazio ou não tiver correspondências, value conterá uma matriz vazia.
Instale os pacotes necessários.
dotnet add package Azure.Search.Documents
dotnet add package Azure.Identity
Use Azure.Identity for .NET para autenticação de token. Microsoft recomenda DefaultAzureCredential() para a maioria dos cenários.
Aqui está um exemplo de uma conexão de cliente com o uso de 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
Aqui está outro exemplo de como usar a credencial de segredo do cliente.
var tokenCredential = new ClientSecretCredential(aadTenantId, aadClientId, aadSecret);
SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, tokenCredential);
Aqui está um exemplo de como executar uma consulta.
SearchResults<SearchDocument> response = srchclient.Search<SearchDocument>("motel");
foreach (SearchResult<SearchDocument> result in response.GetResults())
{
Console.WriteLine(result.Document["HotelName"]);
}
Uma consulta bem-sucedida retorna os resultados da pesquisa. Se nenhum documento corresponder, a coleção de resultados estará vazia.
Instale os pacotes necessários.
pip install azure-search-documents azure-identity
Utilize Azure.Identity para Python para autenticação de token.
Use DefaultAzureCredential se o cliente Python for um aplicativo executado no lado do servidor. Habilite a autenticação interativa se o aplicativo for executado em um navegador.
Veja um exemplo.
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
Adicione as dependências necessárias ao seu 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 autenticação de token.
Use DefaultAzureCredential para aplicativos executados no Azure.
Conceder acesso a apenas um índice
Em alguns cenários, talvez você queira limitar o acesso de um aplicativo a um único recurso, como um índice.
Atualmente, o portal Azure não dá suporte a atribuições de função no nível do índice. Use o CLI do Azure, o PowerShell ou a API REST para atribuir funções com escopo a um único índice.
Entre em sua assinatura do Azure.
az login
Crie uma atribuição de função restrita a um único índice. Forneça o destinatário e o escopo em nível 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>"
Referência:az role assignment create
Importe o módulo necessário e conecte-se à sua conta Azure.
Import-Module Az.Resources
Connect-AzAccount
Crie uma atribuição de função restrita a um único índice. Este exemplo usa um nome de entrada do usuário.
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Search Index Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
Referência:New-AzRoleAssignment
Abra um shell de comando e entre em sua assinatura Azure.
az login
Obtenha um token de acesso para Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envie uma solicitação PUT para criar uma atribuição de função com escopo para um único índice. Defina principalType como User, Groupou ServicePrincipal para corresponder ao destinatário.
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>"
}
}
Referência:Atribuições de Função - Criar
Operações de indexador e escopo por índice
As atribuições de função por índice se aplicam somente a operações diretas de API, como consultas ou uploads de documentos de usuários ou aplicativos. Os indexadores não são restritos por permissões por índice porque operam com credenciais de nível de serviço.
Um usuário com a função Colaborador do Serviço de Pesquisa pode criar indexadores que gravam em qualquer índice no serviço de pesquisa, mesmo índices em que esse usuário não tem atribuição de função por índice.
Para o isolamento estrito de dados entre índices, considere estas abordagens:
- Use serviços de pesquisa separados para equipes ou usuários que exigem isolamento no nível do índice.
- Atribua o Colaborador do Serviço de Pesquisa somente aos administradores que gerenciam indexadores.
- Use o controle de acesso no nível do documento com filtros de segurança para restringir os resultados da consulta em um índice compartilhado.
Criar uma função personalizada
Se as funções internas não fornecerem a combinação certa de permissões, você poderá criar uma função personalizada para dar suporte às operações necessárias.
Os exemplos a seguir clonam o Leitor de Dados do Índice de Pesquisa e, em seguida, adicionam a capacidade de listar índices por nome. Normalmente, listar os índices em um serviço de pesquisa é considerado um direito administrativo.
Entre no portal Azure e navegue até o serviço de pesquisa.
No painel esquerdo, selecione Access control (IAM).
Na guia Funções, localize Leitor de Dados do Índice de Pesquisa (ou outra função), clique nas reticências (...) e selecione Clonar.
Na guia Basics, insira um nome para a função personalizada, como "Pesquisar Índice Data Explorer", e selecione Next.
Na guia Permissões , selecione Adicionar permissões.
No painel Adicionar permissões, selecione o bloco Pesquisa da Microsoft.
Com ações selecionadas na parte superior, defina as seguintes permissões:
- Em
Microsoft.Search/operations, selecione Read: Listar todas as operações disponíveis.
- Em
Microsoft.Search/searchServices/indexes, selecione Ler: Ler Índice.
Alterne para Ações de Dados na parte superior e, em seguida, em Microsoft.Search/searchServices/indexes/documents, selecione Ler: Ler Documentos.
A definição JSON se parece com o seguinte exemplo:
{
"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": []
}
]
}
}
Selecione Adicionar para fechar o painel.
Selecione Revisar + criar para criar o papel.
Agora você pode atribuir usuários e grupos à função. Para obter mais informações sobre essas etapas, consulte Criar ou atualizar Azure funções personalizadas usando o portal Azure.
O exemplo CLI do Azure mostra a sintaxe JSON para criar uma função personalizada que é um clone do Leitor de Dados de Índice de Pesquisa, mas com a capacidade de listar todos os índices por nome. Para obter instruções passo a passo sobre a criação de função personalizada, consulte Criar ou atualizar Azure funções personalizadas usando CLI do Azure.
Revise a lista de permissões atômicas para determinar de quais você precisa. Para este exemplo, você precisa das seguintes permissões:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Salve a definição de função a seguir em um arquivo JSON chamado search-index-data-explorer.json. Para Id, forneça um novo GUID gerado por você.
{
"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>"
]
}
Crie a função personalizada passando o arquivo JSON para az role definition create.
az role definition create --role-definition @search-index-data-explorer.json
Referência:az role definition create
O exemplo do PowerShell mostra a sintaxe JSON para criar uma função personalizada que é um clone do Leitor de Dados de Índice de Pesquisa, mas com a capacidade de listar todos os índices por nome. Para obter instruções passo a passo sobre a criação de função personalizada, consulte Criar ou atualizar Azure funções personalizadas usando Azure PowerShell.
Revise a lista de permissões atômicas para determinar de quais você precisa. Para este exemplo, você precisa das seguintes permissões:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Salve a definição de função a seguir em um arquivo JSON chamado search-index-data-explorer.json. Para Id, forneça um novo GUID gerado por você.
{
"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>"
]
}
Crie a função personalizada passando o arquivo JSON para New-AzRoleDefinition.
New-AzRoleDefinition -InputFile "search-index-data-explorer.json"
Reference:New-AzRoleDefinition
O exemplo da API REST mostra a sintaxe JSON para criar uma função personalizada que é um clone do Leitor de Dados de Índice de Pesquisa, mas com a capacidade de listar todos os índices por nome. Para obter instruções passo a passo sobre a criação de função personalizada, consulte Criar ou atualizar Azure funções personalizadas usando a API REST.
Revise a lista de permissões atômicas para determinar de quais você precisa. Para este exemplo, você precisa das seguintes permissões:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Crie a função personalizada enviando a solicitação a seguir ao endpoint de definição da função.
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>"
]
}
}
Referência:Definições de função – Criar ou atualizar
Criar uma política de Acesso Condicional
Se for necessário aplicar políticas organizacionais, como autenticação multifator, utilize o Acesso Condicional do Microsoft Entra.
Para criar uma política de Acesso Condicional para Pesquisa de IA do Azure :
Entre no portal Azure.
Pesquise Acesso Condicional do Microsoft Entra.
Na página Visão geral , selecione Criar nova política.
Em Acionamentos ou ações doCloud, adicione Pesquisa de IA do Azure como um aplicativo de nuvem, dependendo de como você deseja configurar sua política.
Atualize os parâmetros restantes da política. Por exemplo, especifique a quais usuários e grupos a política se aplica.
Salve a política.
Importante
Se o serviço de pesquisa tiver uma identidade gerenciada atribuída a ele, o serviço de pesquisa específico aparecerá como um aplicativo de nuvem. No entanto, selecionar esse serviço de pesquisa específico não impõe a política. Em vez disso, selecione o aplicativo de nuvem Pesquisa de IA do Azure geral para aplicar políticas de Acesso Condicional ao serviço de pesquisa.
Solução de problemas
Ao desenvolver aplicativos que usam controle de acesso baseado em função para autenticação, você pode encontrar alguns problemas comuns:
A configuração padrão de um serviço de pesquisa é autenticação baseada em chave. Se você não alterar essa configuração para Ambos ou controle de acesso baseado em função, todas as solicitações que usam autenticação baseada em função serão negadas automaticamente, independentemente das permissões subjacentes.
Se sua solicitação incluir uma chave de API junto com credenciais baseadas em função, o serviço será autenticado usando a chave. Remova a chave de API dos cabeçalhos de solicitação para usar a autenticação baseada em função.
Se o token de autorização vem de uma identidade gerenciada e você recentemente atribuiu as permissões apropriadas, pode levar várias horas para que as atribuições de permissões entrem em vigor.
Se as consultas com permissões no nível do documento não retornarem os resultados esperados, use o Colaborador de Dados do Índice de Pesquisa ou crie uma função personalizada com permissões elevadas (versão prévia) para investigar.
Próxima etapa
Este artigo explica como atribuir funções para operações de controle e plano de dados em Pesquisa de IA do Azure . Para obter instruções abrangentes sobre como adicionar acesso baseado em função ao código do aplicativo: