Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tutorial demonstra como indexar as ACLs (Listas de Controle de Acesso) Gen2 do Armazenamento do Azure Data Lake (ADLS) e o escopo do RBAC (controle de acesso baseado em função) em um índice de pesquisa usando um indexador.
Ele também mostra como estruturar uma consulta que respeita as permissões de acesso do usuário. Um resultado de consulta bem-sucedido confirma a transferência de permissão que ocorreu durante o processo de indexação.
Para obter mais informações sobre indexação de ACLs, consulte Usar um indexador ADLS Gen2 para ingerir metadados de permissão.
Neste tutorial, aprenderás como:
- Configurar o escopo RBAC e as ACLs numa fonte de dados
adlsgen2 - Criar um índice do Azure AI Search contendo campos de informações de permissão
- Criar e executar um indexador para ingerir informações de permissão em um índice a partir de uma fonte de dados
- Pesquisar o índice que acabou de criar
Use um cliente REST para concluir este tutorial e a API REST de visualização mais recente. Atualmente, não há suporte para indexação de ACL no portal do Azure.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Autenticação e autorização do Microsoft Entra ID. Serviços e aplicativos devem estar no mesmo locatário. As atribuições de função são usadas para cada conexão autenticada. Usuários e grupos devem estar no mesmo locatário. Você deve ter usuários e grupos para trabalhar. A criação de locatários e entidades de segurança está fora do escopo deste tutorial.
ADLS Gen2 com um namespace hierárquico.
Arquivos em uma estrutura hierárquica de pastas. Este tutorial assume a demonstração do ADLS Gen2 da estrutura de pastas para o arquivo
/Oregon/Portland/Data.txt. Este tutorial orienta você através da atribuição de ACL em pastas e arquivos para que você possa concluir o exercício com êxito.Azure AI Search, qualquer região. A camada básica ou superior é necessária para o suporte de identidade gerenciada.
Visual Studio Code com um cliente REST ou um cliente Python e pacote Jupyter.
Preparar dados de exemplo
Carregue os dados de amostra dos parques estaduais em um contêiner no ADLS Gen2. O nome do contêiner deve ser "parques" e deve ter duas pastas: "Oregon" e "Washington".
Verificar a configuração do serviço de pesquisa
O serviço de pesquisa deve ser configurado para autenticação e autorização do Microsoft Entra ID. Reveja esta lista de verificação para se certificar de que está preparado.
Obter um token de identidade pessoal para testes locais
Este tutorial pressupõe um cliente REST em um sistema local, conectando-se ao Azure por meio de uma conexão pública com a Internet.
Siga estas etapas para adquirir um token de identidade pessoal e configurar o Visual Studio Code para conexões locais com seus recursos do Azure.
Definir permissões no ADLS Gen2
Como prática recomendada, use Group conjuntos em vez de atribuir User conjuntos diretamente.
Conceda à identidade do serviço de pesquisa acesso de leitura ao contêiner. O indexador se conecta ao Armazenamento do Azure sob a identidade do serviço de pesquisa. O serviço de pesquisa deve ter permissões de Leitor de Dados de Blobs de Armazenamento para recuperar dados.
Conceda permissões por grupo ou usuário na hierarquia de arquivos. Na hierarquia de ficheiros, identifique todos os conjuntos
GroupeUseratribuídos a contentores, diretórios e ficheiros.Você pode usar o portal do Azure para gerenciar ACLs. Em Storage Browser, selecione o diretório Oregon e, em seguida, selecione Manage ACL no menu de contexto.
Adicione novos principais de segurança para utilizadores e grupos.
Remova princípios existentes para grupos proprietários, utilizadores proprietários e outros. Esses principais não são suportados para indexação de ACL durante a pré-visualização pública.
Criar um índice de pesquisa para metadados de permissão
Crie um índice que contenha campos para metadados de conteúdo e permissão.
Certifique-se de usar a API REST de pré-visualização mais recente ou um pacote Azure SDK de pré-visualização que forneça funcionalidades equivalentes. As propriedades do filtro de permissão só estão disponíveis nas APIs de visualização.
Para fins de demonstração, o campo de permissão foi retrievable ativado para que você possa verificar os valores do índice. Em um ambiente de produção, você deve desativar retrievable para evitar o vazamento de informações confidenciais.
{
"name" : "my-adlsgen2-acl-index",
"fields": [
{
"name": "name", "type": "Edm.String",
"searchable": true, "filterable": false, "retrievable": true
},
{
"name": "description", "type": "Edm.String",
"searchable": true, "filterable": false, "retrievable": true
},
{
"name": "location", "type": "Edm.String",
"searchable": true, "filterable": false, "retrievable": true
},
{
"name": "state", "type": "Edm.String",
"searchable": true, "filterable": false, "retrievable": true
},
{
"name": "AzureSearch_DocumentKey", "type": "Edm.String",
"searchable": true, "filterable": false, "retrievable": true
"stored": true,
"key": true
},
{
"name": "UserIds", "type": "Collection(Edm.String)",
"permissionFilter": "userIds",
"searchable": true, "filterable": false, "retrievable": true
},
{
"name": "GroupIds", "type": "Collection(Edm.String)",
"permissionFilter": "groupIds",
"searchable": true, "filterable": false, "retrievable": true
},
{
"name": "RbacScope", "type": "Edm.String",
"permissionFilter": "rbacScope",
"searchable": true, "filterable": false, "retrievable": true
}
],
"permissionFilterOption": "enabled"
}
Criar uma fonte de dados
Modifique a configuração da fonte de dados para especificar a ingestão de permissão do indexador e os tipos de metadados de permissão que você deseja indexar.
Uma fonte de dados precisa de indexerPermissionOptions.
Neste tutorial, use uma identidade gerenciada atribuída ao sistema para a conexão autenticada.
{
"name" : "my-adlsgen2-acl-datasource",
"type": "adlsgen2",
"indexerPermissionOptions": ["userIds", "groupIds", "rbacScope"],
"credentials": {
"connectionString": "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;"
},
"container": {
"name": "parks",
"query": null
}
}
Criar e executar o indexador
A configuração do indexador para ingestão de permissão foca principalmente na definição fieldMappings de metadados de permissão.
{
"name" : "my-adlsgen2-acl-indexer",
"dataSourceName" : "my-adlsgen2-acl-datasource",
"targetIndexName" : "my-adlsgen2-acl-index",
"parameters": {
"batchSize": null,
"maxFailedItems": 0,
"maxFailedItemsPerBatch": 0,
"configuration": {
"dataToExtract": "contentAndMetadata",
"parsingMode": "delimitedText",
"firstLineContainsHeaders": true,
"delimitedTextDelimiter": ",",
"delimitedTextHeaders": ""
},
"fieldMappings": [
{ "sourceFieldName": "metadata_user_ids", "targetFieldName": "UserIds" },
{ "sourceFieldName": "metadata_group_ids", "targetFieldName": "GroupIds" },
{ "sourceFieldName": "metadata_rbac_scope", "targetFieldName": "RbacScope" }
]
}
}
Após a criação do indexador e a execução imediata, o conteúdo do arquivo juntamente com as informações de metadados de permissão são indexados no índice.
Executar uma consulta para verificar os resultados
Agora que os documentos estão carregados, você pode emitir consultas contra eles usando Documents - Search Post (REST).
O URI é estendido para incluir uma entrada de consulta, que é especificada usando o /docs/search operador . O token de consulta é passado no cabeçalho da solicitação. Para mais informações, consulte Implementação de ACL em tempo de consulta e RBAC.
POST {{endpoint}}/indexes/stateparks/docs/search?api-version=2025-11-01-preview
Authorization: Bearer {{search-token}}
x-ms-query-source-authorization: {{search-token}}
Content-Type: application/json
{
"search": "*",
"select": "name,description,location,GroupIds",
"orderby": "name asc"
}