Pesquisa de IA do Azure suporta controlo de acesso baseado em funções através do Microsoft Entra ID. O acesso baseado em funções é opcional, mas recomendado. A alternativa é a autenticação baseada em chave, que é o padrão.
Se atribuir múltiplos papéis a um principal de segurança, as permissões são combinadas. As atribuições de funções aplicam-se a todas as ferramentas e bibliotecas de clientes.
Este artigo explica como atribuir funções incorporadas para administração de serviços, desenvolvimento e acesso de consulta e recuperação apenas de leitura. Também fornece passos para criar papéis personalizados e testar atribuições de funções.
Pré-requisitos
Um serviço Pesquisa de IA do Azure (qualquer região e qualquer camada) com funções de acesso ativadas.
Permissão para atribuir funções no Azure. Qualquer um dos seguintes papéis serve:
Revise as instruções de atribuição de funções para o seu cliente preferido:
Identifique o valor atribuído exigido pelo seu cliente preferido. Dependendo do cliente e do tipo de destinatário, este valor pode ser um nome principal de utilizador, ID de objeto de grupo, nome principal de serviço, ID de aplicação principal de serviço ou ID de objeto Microsoft Entra.
Funções incorporadas
As funções são um conjunto de permissões que afetam o plano de controlo ou o plano de dados.
Plano de controlo: Operações para provisionamento de serviços, configuração e administração. As operações do plano de controlo incluem criar ou eliminar serviços de pesquisa, listar chaves API e gerir definições de rede e autenticação. Disponível através das APIs REST Azure Resource Manager, APIs REST de Gestão de Pesquisa e bibliotecas equivalentes do cliente SDK do Azure.
Plano de dados: Operações contra o endpoint do serviço de pesquisa. As operações no plano de dados dividem-se em duas categorias: gestão de objetos e acesso ao conteúdo. Disponível através das APIs REST do Search Service e das bibliotecas de cliente do SDK do Azure equivalentes.
Descrições de funções
Os seguintes funções predefinidas concedem permissões ao Pesquisa de IA do Azure. Os papéis no plano de controlo estão sempre disponíveis, enquanto os papéis no plano de dados exigem acesso baseado em funções para estar ativado no seu serviço de pesquisa. Pode combinar funções incorporadas para um acesso mais amplo ou criar uma função personalizada com as permissões específicas de que precisa.
| Funções |
Avião |
Descrição |
|
Proprietário |
Controlo |
- Acesso total ao plano de controlo, incluindo a capacidade de atribuir papéis e alterar as definições de autenticação.
- Os administradores de subscrição têm esta função por defeito.
- Consegue gerir chaves API.
- Não é possível criar objetos de pesquisa, carregar documentos, consultar índices ou recuperar de bases de conhecimento.
|
|
Contribuinte |
Controlo |
- Mesmo nível de acesso ao plano de controlo que o Proprietário, menos a possibilidade de atribuir funções.
|
|
Leitor |
Controlo |
- Acesso de leitura ao plano de controlo.
- Pode visualizar métricas de serviço e definições de objetos.
- Não consigo visualizar ou gerir chaves de API, carregar documentos, consultar índices ou recuperar de bases de conhecimento.
|
|
Colaborador do Serviço de Pesquisa |
Controlo & Dados |
- Acesso total ao plano de controlo. O acesso à camada de dados está limitado à gestão de objetos.
- Pode criar índices, indexadores, conjuntos de competências, bases de conhecimento e outros objetos de pesquisa.
- Permite recuperar chaves de API de administração e de consulta através de operações do plano de controlo.
- Não é possível carregar documentos, consultar índices ou recuperar diretamente de bases de conhecimento através de acesso baseado em funções.
- Para a lista completa de permissões, veja
Microsoft.Search/searchServices/*.
|
|
Contribuidor de dados do índice de pesquisa |
Dados |
- Acesso a conteúdos de leitura e escrita.
- Pode carregar documentos, consultar índices e recuperar a partir de bases de conhecimento.
- Não é possível modificar definições de objetos nem recuperar chaves de administração.
|
|
Leitor de dados de índice de pesquisa |
Dados |
- Acesso a conteúdos apenas de leitura.
- Pode consultar índices e recuperar de bases de conhecimento.
- Não é possível carregar documentos, modificar definições de objetos ou recuperar chaves de administração.
|
Importante
- Proprietário, Contribuidor e Contribuidor do Serviço de Pesquisa podem obter chaves de administração, que fornecem acesso total de leitura e escrita ao plano de dados. Conceda estes papéis apenas a utilizadores de confiança.
- Por defeito, as funções da camada de dados aplicam-se a todos os índices do serviço de pesquisa. Para englobar o Contribuidor de Dados do Índice de Pesquisa ou Leitor de Dados do Índice de Pesquisa a um único índice, veja Conceder acesso a um único índice.
Resumo das permissões
Use a tabela seguinte para encontrar rapidamente qual a função que oferece as permissões de que precisa.
| Permissões |
Proprietário/Colaborador |
Leitor |
Colaborador do Serviço de Pesquisa |
Contribuidor de dados do índice de pesquisa |
Leitor de dados de índice de pesquisa |
| Criar e configurar serviços Pesquisa de IA do Azure |
✅ |
❌ |
✅ |
❌ |
❌ |
| Aceder ao serviço no portal Azure |
✅ |
✅ |
✅ |
❌ |
❌ |
| Ver as propriedades do serviço, métricas e ponto de extremidade |
✅ |
✅ |
✅ |
❌ |
❌ |
| Liste todos os objetos no serviço |
✅ |
✅ |
✅ |
❌ |
❌ |
| Aceder a quotas e estatísticas de serviços |
✅ |
❌ |
✅ |
❌ |
❌ |
| Visualizar, copiar e regenerar chaves |
✅ |
❌ |
✅ |
❌ |
❌ |
| Definir opções de autenticação |
✅ |
❌ |
✅ |
❌ |
❌ |
| Ver funções, políticas e definições |
✅ |
✅ |
✅ |
❌ |
❌ |
| Configurar a segurança da rede e as ligações privadas |
✅ |
❌ |
✅ |
❌ |
❌ |
| Criar, executar e gerir objetos de pesquisa 1 |
❌ |
❌ |
✅ |
❌ |
❌ |
| Carregar dados para indexação 2 |
❌ |
❌ |
❌ |
✅ |
❌ |
| Consultar um índice |
❌ |
❌ |
❌ |
✅ |
✅ |
| Recuperar a partir de uma base de conhecimento |
❌ |
❌ |
❌ |
✅ |
✅ |
| Ignorar filtros de permissões com leitura com privilégios elevados (pré-visualização) |
❌ |
❌ |
❌ |
✅ |
❌ |
1 Inclui índices, indexadores, fontes de dados, conjuntos de competências, pseudónimos, mapas de sinónimos, sessões de depuração, bases de conhecimento e fontes de conhecimento. Os indexadores também suportam operações de execução e reset.
2 Um Proprietário ou Contribuinte pode executar o assistente Importar dados para criar e carregar índices, mesmo que não possa carregar documentos noutros clientes. De forma semelhante, os indexadores podem escrever para qualquer índice no serviço de pesquisa, independentemente das atribuições de funções por índice. Em ambos os casos, o serviço de pesquisa (não o utilizador) executa as ações do plano de dados usando as suas permissões Microsoft.Search/searchServices/indexes/documents/*.
Atribuir funções incorporadas
Nesta secção, atribui funções para:
Atribuir funções para administração de serviços
Os seguintes papéis permitem-lhe criar, configurar e gerir um serviço de pesquisa. Estas funções são hierárquicas, por isso escolhe uma com base no nível de acesso que precisas.
| Funções |
ID |
|
Proprietário |
8E3AF657-A8FF-443C-A75C-2FE8C4BCB635 |
|
Contribuinte |
B24988AC-6180-42A0-AB88-20F7382DD24C |
|
Leitor |
acdd72a7-3385-48ef-bd42-f606fba81ae7 |
Vá ao seu serviço de pesquisa no portal Azure.
No painel esquerdo, selecione Access control (IAM).
Selecione + Adicionar>Adicionar atribuição de função.
Selecione uma função: Proprietário, Colaborador ou Leitor.
No separador Members, selecione a identidade do utilizador ou grupo Microsoft Entra. Se estiver a configurar permissões para outro serviço Azure, selecione uma identidade gerida atribuída pelo sistema ou pelo utilizador.
Na aba Rever + atribuir, selecione Rever + atribuir para atribuir a função.
Entre na sua assinatura do Azure.
az login
Crie uma atribuição de função com âmbito no serviço de pesquisa. Forneça o destinatário e o âmbito.
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
Importa o módulo necessário e liga-te à tua conta Azure.
Import-Module Az.Resources
Connect-AzAccount
Crie uma atribuição de função com âmbito no serviço de pesquisa. Este exemplo utiliza um nome de login do utilizador.
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 comandos e inicie sessão na sua subscrição do Azure.
az login
Obtenha um token de acesso para o Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envie um pedido PUT para criar uma atribuição de função no âmbito do serviço de pesquisa. Definir principalType para User, Group, ou 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ções - Criar
Atribuir funções para desenvolvimento
Os seguintes papéis permitem-lhe criar objetos de pesquisa, carregar documentos, consultar índices e recuperar a partir de bases de conhecimento. Atribuir as três funções para cobrir toda a gama de tarefas de desenvolvimento.
Vá ao seu serviço de pesquisa no portal Azure.
No painel esquerdo, selecione Access control (IAM).
Selecione + Adicionar>Adicionar atribuição de função.
Selecione Contribuidor do Serviço de Pesquisa.
No separador Members, selecione a identidade do utilizador ou grupo Microsoft Entra. Se estiver a configurar permissões para outro serviço Azure, selecione uma identidade gerida atribuída pelo sistema ou pelo utilizador.
Na aba Rever + atribuir, selecione Rever + atribuir para atribuir a função.
Repita estes passos para atribuir o Contribuidor de Dados do Índice de Pesquisa e o Leitor de Dados do Índice de Pesquisa.
Entre na sua assinatura do Azure.
az login
Crie uma atribuição de função com âmbito no serviço de pesquisa. Forneça o destinatário e o âmbito.
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ções com âmbito a um índice. Forneça o destinatário e o âmbito.
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
Importa o módulo necessário e liga-te à tua conta Azure.
Import-Module Az.Resources
Connect-AzAccount
Crie uma atribuição de função com âmbito no serviço de pesquisa. Este exemplo utiliza um nome de login do utilizador.
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ções com âmbito a um índice. Este exemplo utiliza um nome de login do utilizador.
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 comandos e inicie sessão na sua subscrição do Azure.
az login
Obtenha um token de acesso para o Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envie um pedido PUT para criar uma atribuição de função no âmbito do serviço de pesquisa. Definir principalType para User, Group, ou 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ções - Criar
(Opcional) Envie um pedido PUT para criar uma atribuição de função com âmbito definido 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ções - Criar
Atribuir funções com acesso só de leitura
Use o seguinte papel para aplicações e processos que só precisam de acesso de leitura a índices e bases de conhecimento. As operações suportadas incluem pesquisa, pesquisa, autocompletar e sugestões de índices e recuperação para bases de conhecimento.
Vá ao seu serviço de pesquisa no portal Azure.
No painel esquerdo, selecione Access control (IAM).
Selecione + Adicionar>Adicionar atribuição de função.
Selecione a função de Leitor de Dados do Índice de Pesquisa .
No separador Members, selecione a identidade do utilizador ou grupo Microsoft Entra. Se estiver a configurar permissões para outro serviço Azure, selecione uma identidade gerida atribuída pelo sistema ou pelo utilizador.
Na aba Rever + atribuir, selecione Rever + atribuir para atribuir a função.
Entre na sua assinatura do Azure.
az login
Crie uma atribuição de função com âmbito no serviço de pesquisa. Forneça o destinatário e o âmbito.
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ções com âmbito a um índice. Forneça o destinatário e o âmbito.
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
Importa o módulo necessário e liga-te à tua conta Azure.
Import-Module Az.Resources
Connect-AzAccount
Crie uma atribuição de função com âmbito no serviço de pesquisa. Este exemplo utiliza um nome de login do utilizador.
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ções com âmbito a um índice. Este exemplo utiliza um nome de login do utilizador.
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 comandos e inicie sessão na sua subscrição do Azure.
az login
Obtenha um token de acesso para o Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envie um pedido PUT para criar uma atribuição de função no âmbito do serviço de pesquisa. Definir principalType para User, Group, ou 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ções - Criar
(Opcional) Envie um pedido PUT para criar uma atribuição de função com âmbito definido 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ções - Criar
Teste de atribuições de função
Use um cliente para testar atribuições de função. Lembrem-se que as funções são cumulativas. Não podes eliminar ou negar funções herdadas que abrangem o nível de subscrição ou grupo de recursos ao nível do recurso (serviço de pesquisa).
Antes de avançar, configure a sua aplicação para ligações sem chave e tenha as atribuições de funções definidas.
Vá ao seu serviço de pesquisa no portal Azure.
No painel esquerdo, selecione Indexes de gestão> de pesquisa para testar permissões relacionadas com o índice:
Os Contribuintes do Serviço de Pesquisa podem criar, modificar e eliminar objetos de pesquisa, mas não podem carregar documentos nem executar consultas. Para verificar as permissões, crie um índice de pesquisa.
Os contribuidores de dados do índice de pesquisa podem carregar documentos. Não existe opção de carregar documentos no portal de Azure fora do assistente Importar dados, mas podes reset e correr um indexador para confirmar permissões de carregamento de documentos.
Os Leitores de Dados de Índice de Pesquisa podem consultar índices. Para verificar as permissões, use o Gerenciador de pesquisa. Deves conseguir enviar consultas e ver resultados, mas não deves conseguir ver definições de índices ou criar índices.
Esta abordagem assume Visual Studio Code com a extensão REST Client.
Abra um shell de comandos para o CLI do Azure e inicie sessão na sua subscrição do Azure.
az login
Obtenha um token de acesso para o Pesquisa de IA do Azure data plane.
az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
Cole estas variáveis num novo ficheiro de texto no Visual Studio Code.
@baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
@index-name = PASTE-YOUR-INDEX-NAME-HERE
@token = PASTE-YOUR-TOKEN-HERE
Envie um pedido que use as variáveis que especificar. Para a função de Leitor de Dados de Índice de Pesquisa, pode enviar uma consulta usando qualquer versão da API suportada.
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
}
Referência:Pesquisa de Documentos
Uma consulta bem-sucedida devolve resultados de pesquisa com documentos correspondentes. Se o índice estiver vazio ou não tiver correspondências, value contém um array vazio.
Instale os pacotes necessários.
dotnet add package Azure.Search.Documents
dotnet add package Azure.Identity
Usa Azure. Identidade para .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 usando 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());
Referência:SearchClient, SearchIndexClient, DefaultAzureCredential
Aqui está outro exemplo de utilização de credencial secreta de 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 devolve resultados de pesquisa. Se nenhum documento coincidir, a coleção de resultados fica vazia.
Instale os pacotes necessários.
pip install azure-search-documents azure-identity
Usa Azure. Identidade para Python para autenticação de tokens.
Use DefaultAzureCredential se o cliente Python for uma aplicação que executa do lado do servidor. Habilite a autenticação interativa se o aplicativo for executado em um navegador.
Eis 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 ficheiro 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>
Usa Azure. Identidade para Java para autenticação de tokens.
Use DefaultAzureCredential para aplicações que correm em Azure.
Conceder acesso a um único índice
Em alguns cenários, talvez você queira limitar o acesso de um aplicativo a um único recurso, como um índice.
Atualmente, o portal do Azure não suporta atribuições de funções ao nível do índice. Utilize a CLI do Azure, o PowerShell ou a API REST para atribuir funções com âmbito limitado a um único índice.
Entre na sua assinatura do Azure.
az login
Crie uma atribuição de função limitada a um único índice. Forneça o destinatário e o âmbito ao nível do í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
Importa o módulo necessário e liga-te à tua conta Azure.
Import-Module Az.Resources
Connect-AzAccount
Crie uma atribuição de função limitada a um único índice. Este exemplo utiliza um nome de login do utilizador.
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 comandos e inicie sessão na sua subscrição do Azure.
az login
Obtenha um token de acesso para o Azure Resource Manager.
az account get-access-token --scope https://management.azure.com/.default --query accessToken --output tsv
Envie um pedido PUT para criar uma atribuição de função com âmbito a um único índice. Definir principalType para User, Group, ou 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ções - Criar
Operações de indexação e âmbito por índice
As atribuições de funções por índice aplicam-se apenas a operações diretas da API, como consultas ou uploads de documentos por utilizadores ou aplicações. Os indexadores não estão limitados por permissões por índice porque operam com credenciais de nível de serviço.
Um utilizador com o papel de Contribuidor do Serviço de Pesquisa pode criar indexadores que escrevem em qualquer índice do serviço de pesquisa, mesmo em índices onde esse utilizador não tem atribuição de função por índice.
Para isolamento rigoroso de dados entre índices, considere estas abordagens:
- Use serviços de pesquisa separados para equipas ou utilizadores que necessitem de isolamento ao nível do índice.
- Atribuir o Contribuidor de Serviço de Pesquisa apenas a administradores que gerem indexadores.
- Use controlo de acesso ao nível do documento com filtros de segurança para restringir os resultados das consultas dentro de um índice partilhado.
Criar uma função personalizada
Se os papéis incorporados não fornecerem a combinação certa de permissões, pode criar um papel personalizado para apoiar as operações de que necessita.
Os exemplos seguintes clonam o Search Index Data Reader e depois adicionam a capacidade de listar índices por nome. Normalmente, a listagem dos índices num serviço de pesquisa é considerada um direito administrativo.
Inicie sessão no portal Azure e navegue até ao seu serviço de pesquisa.
No painel esquerdo, selecione Access control (IAM).
No separador de funções Papéis, encontre Search Index Data Reader ou outra função, selecione o ícone de reticências (...) e depois selecione Clonar.
No separador Basics, introduza um nome para a função personalizada, como "Search Index Data Explorer", e depois selecione Next.
Na guia Permissões , selecione Adicionar permissões.
No painel Add permissions, selecione o mosaico Microsoft Pesquisa.
Com as Ações selecionadas no topo, 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 : Índice de Leitura.
Mude para Ações de Dados no topo e, sob Microsoft.Search/searchServices/indexes/documents, selecione Leia : Ler Documentos.
A definição JSON se parece com o exemplo a seguir:
{
"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": []
}
]
}
}
Selecionar Adicionar para fechar o painel.
Selecione Revisão e criação para criar o papel.
Agora você pode atribuir usuários e grupos à função. Para mais informações sobre estes passos, consulte Criar ou atualizar Azure papéis personalizados usando o portal Azure.
O exemplo do CLI do Azure mostra a sintaxe JSON para criar um papel personalizado que é um clone do Search Index Data Reader, mas com a capacidade de listar todos os índices pelo nome. Para instruções passo a passo sobre criação de papéis personalizados, veja Criar ou atualizar papéis personalizados no Azure usando CLI do Azure.
Revise a lista de permissões atômicas para determinar quais você precisa. Para este exemplo, precisa das seguintes permissões:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Guardar a seguinte definição de função num ficheiro JSON chamado search-index-data-explorer.json. Para Id, forneça um novo GUID gerado por si.
{
"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 o papel personalizado passando o ficheiro 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 um papel personalizado que é um clone do Search Index Data Reader, mas com a capacidade de listar todos os índices por nome. Para instruções passo a passo sobre criação de papéis personalizados, veja Criar ou atualizar papéis personalizados no Azure usando Azure PowerShell.
Revise a lista de permissões atômicas para determinar quais você precisa. Para este exemplo, precisa das seguintes permissões:
"Microsoft.Search/operations/read",
"Microsoft.Search/searchServices/indexes/read",
"Microsoft.Search/searchServices/indexes/documents/read"
Guardar a seguinte definição de função num ficheiro JSON chamado search-index-data-explorer.json. Para Id, forneça um novo GUID gerado por si.
{
"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 o papel personalizado passando o ficheiro JSON para New-AzRoleDefinition.
New-AzRoleDefinition -InputFile "search-index-data-explorer.json"
Referência:New-AzRoleDefinition
O exemplo da API REST mostra a sintaxe JSON para criar um papel personalizado que é um clone do Search Index Data Reader, mas com a capacidade de listar todos os índices por nome. Para instruções passo a passo sobre criação de papéis personalizados, consulte Criar ou atualizar papéis personalizados no Azure usando a API REST.
Revise a lista de permissões atômicas para determinar quais você precisa. Para este exemplo, 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 o seguinte pedido para o endpoint de definição de 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ções - Criar ou Atualizar
Criar uma política de Acesso Condicional
Se precisar de aplicar políticas organizacionais, como autenticação multifator, use Acesso Condicional do Microsoft Entra.
Para criar uma política de Acesso Condicional para o Pesquisa de IA do Azure:
Inicie sessão no portal Azure.
Procure por Acesso Condicional do Microsoft Entra.
Na página de Visão Geral , selecione Criar nova política.
Em aplicações ou ações, adicione Pesquisa de IA do Azure como aplicação cloud, dependendo de como pretende configurar a sua política.
Atualize os restantes parâmetros da sua apólice. Por exemplo, especifique a que utilizadores e grupos a política se aplica.
Guardar a política.
Importante
Se o seu serviço de pesquisa tiver uma identidade gerida atribuída, o serviço de pesquisa específico aparece como uma aplicação na cloud. No entanto, selecionar esse serviço de pesquisa específico não faz cumprir a política. Em vez disso, selecione a aplicação geral na cloud Pesquisa de IA do Azure para aplicar políticas de Acesso Condicional ao seu serviço de pesquisa.
Troubleshooting
Quando desenvolve aplicações que utilizam controlo de acesso baseado em funções para autenticação, pode encontrar alguns problemas comuns:
A configuração padrão para um serviço de pesquisa é a autenticação baseada em chave. Caso não altere esta definição para Ambos ou Controlo de Acesso Baseado em Funções, todos os pedidos que utilizem autenticação baseada em funções são automaticamente recusados, independentemente das permissões subjacentes.
Se o seu pedido incluir uma chave API juntamente com credenciais baseadas em funções, o serviço autentica-se usando a chave. Remova a chave API dos cabeçalhos dos pedidos para usar autenticação baseada em funções.
Se o token de autorização provém de uma identidade gerida e recentemente atribuiu as permissões apropriadas, pode demorar várias horas até que as atribuições de permissões entrem em vigor.
Se as consultas com permissões ao nível do documento não devolverem os resultados esperados, use o Search Index Data Contributor ou crie um papel personalizado com permissões elevadas (pré-visualização) para investigar.
Próximo passo
Este artigo explica como atribuir funções para operações de controlo e planos de dados no Pesquisa de IA do Azure. Para instruções completas sobre como adicionar acesso baseado em funções ao código da sua aplicação: