Udostępnij przez


Przewodnik: Metadane uprawnień indeksowania z usługi ADLS Gen2 i zapytania z wynikami filtrowanymi według uprawnień.

W tym samouczku przedstawiono sposób indeksowania list kontroli dostępu (ACL) usługi Azure Data Lake Storage (ADLS) Gen2 i zakresu kontroli dostępu opartej na rolach (RBAC) do indeksu wyszukiwania przy użyciu indeksatora.

Pokazano również, jak utworzyć strukturę zapytania, które szanuje uprawnienia dostępu użytkowników. Wynik pomyślnego zapytania potwierdza transfer uprawnień, który odbył się podczas indeksowania.

Aby uzyskać więcej informacji na temat indeksowania list ACL, zobacz Używanie indeksatora usługi ADLS Gen2 do pozyskiwania metadanych uprawnień.

W tym poradniku nauczysz się, jak:

  • Konfiguracja zakresu RBAC i listy ACL w źródle danych
  • Tworzenie indeksu usługi Azure AI Search zawierającego pola informacji o uprawnieniach
  • Tworzenie i uruchamianie indeksatora w celu pozyskiwania informacji o uprawnieniach do indeksu ze źródła danych
  • Przeszukać utworzony indeks

Użyj klienta REST, aby ukończyć ten samouczek i najnowszy interfejs API REST w wersji zapoznawczej. Obecnie w witrynie Azure Portal nie ma obsługi indeksowania listy ACL.

Wymagania wstępne

  • Konto Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.

  • Uwierzytelnianie i autoryzacja identyfikatora Entra firmy Microsoft. Usługi i aplikacje muszą znajdować się w tej samej tenancie. Przypisania ról są używane dla każdego uwierzytelnionego połączenia. Użytkownicy i grupy muszą znajdować się w tym samym tenancie. Należy mieć użytkowników i grupy do pracy. Tworzenie dzierżawców i podmiotów zabezpieczających jest poza zakresem tego samouczka.

  • ADLS Gen2 z hierarchiczną przestrzenią nazw.

  • Pliki w strukturze folderów hierarchicznych. W tym samouczku zakłada się, że demonstracja struktury folderów w usłudze ADLS Gen2 dla pliku /Oregon/Portland/Data.txt została przeprowadzona. Ten samouczek przeprowadzi cię przez proces przypisywania listy kontroli dostępu (ACL) w folderach i plikach, abyś mógł/mogła pomyślnie ukończyć ćwiczenie.

  • Azure AI Search, dowolnym regionie. Do obsługi tożsamości zarządzanej wymagana jest warstwa Podstawowa lub nowsza.

  • Program Visual Studio Code z klientem REST lub klientem języka Python i pakietem Jupyter.

Przygotowywanie przykładowych danych

Przekaż przykładowe dane parków stanu do kontenera w usłudze ADLS Gen2. Nazwa kontenera powinna być "parki", a powinien zawierać dwa foldery: "Oregon" i "Washington".

Sprawdzanie konfiguracji usługi wyszukiwania

Twoja usługa wyszukiwania musi być skonfigurowana do uwierzytelniania i autoryzacji za pomocą Microsoft Entra ID. Przejrzyj tę listę kontrolną, aby upewnić się, że jesteś przygotowany.

Uzyskiwanie osobistego tokenu tożsamości na potrzeby testowania lokalnego

W tym samouczku założono, że klient REST w systemie lokalnym łączy się z platformą Azure za pośrednictwem publicznego połączenia internetowego.

Wykonaj następujące kroki , aby uzyskać osobisty token tożsamości i skonfigurować program Visual Studio Code na potrzeby połączeń lokalnych z zasobami platformy Azure.

Ustawianie uprawnień w usłudze ADLS Gen2

Najlepszym rozwiązaniem jest użycie Group zestawów zamiast bezpośredniego przypisywania User zestawów.

  1. Udziel usłudze wyszukiwania tożsamości dostępu do odczytu kontenera. Indeksator łączy się z usługą Azure Storage w ramach tożsamości usługi wyszukiwania. Aby pobrać dane, usługa wyszukiwania musi mieć uprawnienia Odczytującego danych obiektu blob Storage.

  2. Przyznaj uprawnienia dla poszczególnych grup lub użytkowników w hierarchii plików. W hierarchii plików zidentyfikuj wszystkie zestawy Group oraz elementy User przypisane do kontenerów, katalogów i plików.

  3. Aby zarządzać listami ACL, możesz użyć witryny Azure Portal. W przeglądarce, wybierz katalog Oregon, a następnie wybierz Zarządzanie ACL z menu kontekstowego.

  4. Dodaj nowe zasady zabezpieczeń dla użytkowników i grup.

  5. Usuń istniejące podmioty zabezpieczeń dla grup, właścicieli użytkowników i innych. Te zasady nie są obsługiwane w przypadku indeksowania ACL w wersji publicznej.

Tworzenie indeksu wyszukiwania dla metadanych uprawnień

Utwórz indeks zawierający pola zawartości i metadanych uprawnień.

Pamiętaj, aby użyć najnowszego w wersji zapoznawczej interfejsu API REST lub pakietu zestawu Azure SDK w wersji zapoznawczej, który zapewnia równoważne funkcje. Właściwości filtru uprawnień są dostępne tylko w interfejsach API w wersji zapoznawczej.

W celach demonstracyjnych pole uprawnień zostało retrievable włączone, aby można było sprawdzić wartości z indeksu. W środowisku produkcyjnym należy wyłączyć, retrievable aby uniknąć wycieku poufnych informacji.

{
  "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"
}

Utwórz źródło danych

Zmodyfikuj konfigurację źródła danych , aby określić pozyskiwanie uprawnień indeksatora oraz typy metadanych uprawnień, które chcesz indeksować.

Źródło danych wymaga indexerPermissionOptions.

W tym samouczku użyj przypisanej przez system tożsamości zarządzanej do uwierzytelnionego połączenia.

{
    "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
    }
}

Tworzenie i uruchamianie indeksatora

Konfiguracja indeksatora pozyskiwania uprawnień dotyczy głównie definiowania fieldMappingsz metadanych uprawnień.

{
  "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" }
    ]
  }
}

Po utworzeniu indeksatora i natychmiastowym uruchomieniu zawartość pliku wraz z informacjami o metadanych uprawnień jest indeksowana do indeksu.

Uruchamianie zapytania w celu sprawdzenia wyników

Teraz, gdy dokumenty są ładowane, możesz wysyłać zapytania względem nich przy użyciu funkcji Dokumenty — wyszukiwanie w wpisie (REST).

Identyfikator URI jest rozszerzony w celu uwzględnienia danych wejściowych zapytania, które jest określane przy użyciu /docs/search operatora . Token zapytania jest przekazywany w nagłówku żądania. Aby uzyskać więcej informacji, zobacz Wymuszanie ACL przy czasie zapytania i kontroli dostępu opartej na rolach.

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"
}