Beheerde Azure-identiteiten gebruiken in Unity Catalog voor toegang tot opslag

In dit artikel wordt beschreven hoe u door Azure beheerde identiteiten gebruikt voor het maken van verbinding met opslagcontainers namens Unity Catalog-gebruikers.

Wat zijn door Azure beheerde identiteiten?

Unity Catalog kan worden geconfigureerd voor het gebruik van een door Azure beheerde identiteit voor toegang tot opslagcontainers namens Unity Catalog-gebruikers. Beheerde identiteiten bieden een identiteit die toepassingen kunnen gebruiken wanneer ze verbinding maken met resources die ondersteuning bieden voor Microsoft Entra ID-verificatie (voorheen Azure Active Directory).

U kunt beheerde identiteiten in Unity Catalog gebruiken ter ondersteuning van twee primaire use cases:

  • Als identiteit om verbinding te maken met de beheerde opslagaccounts van de metastore (waar beheerde tabellen worden opgeslagen).
  • Als identiteit om verbinding te maken met andere externe opslagaccounts (voor bestandstoegang of voor toegang tot bestaande gegevenssets via externe tabellen).

Het configureren van Unity Catalog met een beheerde identiteit heeft de volgende voordelen ten opzichte van het configureren van Unity Catalog met een service-principal:

Een beheerde identiteit configureren voor Unity Catalog

Als u een beheerde identiteit wilt configureren voor gebruik met Unity Catalog, maakt u eerst een toegangsconnector voor Azure Databricks in Azure. De toegangsconnector wordt standaard geïmplementeerd met een door het systeem toegewezen beheerde identiteit. U kunt in plaats daarvan kiezen om een door de gebruiker toegewezen beheerde identiteit toe te voegen. Vervolgens verleent u de beheerde identiteit toegang tot uw Azure Data Lake Storage Gen2-account en gebruikt u de toegangsconnector wanneer u een Unity Catalog-metastore of opslagreferentie maakt.

Vereisten

De Azure-gebruiker of service-principal die de toegangsconnector maakt, moet:

  • Wees inzender of eigenaar van een Azure-resourcegroep.

De Azure-gebruiker of -service-principal die de beheerde identiteit aan het opslagaccount verleent, moet:

  • Wees een eigenaar of een gebruiker met de rol User Access Beheer istrator Azure RBAC in het opslagaccount.

Stap 1: Een toegangsconnector maken voor Azure Databricks

De Access Verbinding maken or voor Azure Databricks is een eigen Azure-resource waarmee u beheerde identiteiten kunt verbinden met een Azure Databricks-account.

Elke toegangsconnector voor Azure Databricks kan één door het systeem toegewezen beheerde identiteit of één door de gebruiker toegewezen beheerde identiteit bevatten. Als u meerdere beheerde identiteiten wilt gebruiken, maakt u een afzonderlijke toegangsconnector voor elke identiteit.

Een door het systeem toegewezen beheerde identiteit gebruiken

  1. Meld u aan bij Azure Portal als inzender of eigenaar van een resourcegroep.

  2. Klik op + Maken of Een nieuwe resource maken.

  3. Zoek naar Access Verbinding maken or op Azure Databricks en selecteer deze.

  4. Klik op Create.

  5. Accepteer, selecteer of voer waarden in voor de volgende velden op het tabblad Basisbeginselen :

    • Abonnement: Dit is het Azure-abonnement waarin de toegangsconnector wordt gemaakt. De standaardwaarde is het Azure-abonnement dat u momenteel gebruikt. Dit kan elk abonnement in de tenant zijn.
    • Resourcegroep: dit is de Azure-resourcegroep waarin de toegangsconnector wordt gemaakt.
    • Naam: Voer een naam in die het doel van de connector aangeeft.
    • Regio: Dit moet dezelfde regio zijn als het opslagaccount waarmee u verbinding maakt.
  6. Klik op Controleren + maken.

  7. Wanneer u het bericht Validatie geslaagd ziet, klikt u op Maken.

    Wanneer de implementatie slaagt, wordt de toegangsconnector geïmplementeerd met een door het systeem toegewezen beheerde identiteit.

  8. Nadat de implementatie is voltooid, klikt u op Ga naar resource.

  9. Noteer de resource-id.

    De resource-id heeft de volgende indeling:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Een door de gebruiker toegewezen beheerde identiteit gebruiken

  1. Als u nog geen door de gebruiker toegewezen beheerde identiteit hebt, maakt u een nieuwe identiteit en noteert u de resource-id.

    Zie Door de gebruiker toegewezen beheerde identiteiten beheren.

  2. Meld u aan bij Azure Portal als inzender of eigenaar van een resourcegroep.

    De resourcegroep moet zich in dezelfde regio bevinden als het opslagaccount waarmee u verbinding wilt maken.

  3. Zoek naar Een aangepaste sjabloon implementeren en selecteer deze.

  4. Selecteer Uw eigen sjabloon bouwen en plak de volgende sjabloon in de editor:

    {
     "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
     "contentVersion": "1.0.0.0",
     "parameters": {
         "connectorName": {
             "defaultValue": "testConnector",
             "type": "String",
             "metadata": {
                 "description": "The name of the Azure Databricks Access Connector to create."
             }
         },
         "accessConnectorRegion": {
             "defaultValue": "[resourceGroup().location]",
             "type": "String",
             "metadata": {
                 "description": "Location for the access connector resource."
             }
         },
         "userAssignedManagedIdentiy": {
             "type": "String",
             "metadata": {
                 "description": "The resource Id of the user assigned managed identity."
             }
         }
     },
     "resources": [
         {
             "type": "Microsoft.Databricks/accessConnectors",
             "apiVersion": "2023-05-01",
             "name": "[parameters('connectorName')]",
             "location": "[parameters('accessConnectorRegion')]",
             "identity": {
                 "type": "UserAssigned",
                 "userAssignedIdentities": {
                     "[parameters('userAssignedManagedIdentiy')]": {}
                 }
              }
          }
       ]
    }
    
  5. Accepteer, selecteer of voer waarden in voor de volgende velden op het tabblad Basisbeginselen:

    • Abonnement: het Azure-abonnement waarin de toegangsconnector wordt gemaakt. De standaardwaarde is het Azure-abonnement dat u momenteel gebruikt. Dit kan elk abonnement in de tenant zijn.
    • Resourcegroep: Een resourcegroep in dezelfde regio als het opslagaccount waarmee u verbinding maakt.
    • Naam: Een naam die het doel van de connector aangeeft.
    • Regio: Dit moet dezelfde regio zijn als het opslagaccount waarmee u verbinding maakt. U kunt de vooraf ingevulde waarde [resourceGroup().location] kiezen als de resourcegroep is gemaakt in dezelfde regio als het opslagaccount waarmee u verbinding maakt.
    • Door de gebruiker toegewezen beheerde identiteit: de resource-id van de door de gebruiker toegewezen beheerde identiteit die u wilt gebruiken.
  6. Klik op Controleren + maken.

  7. Wanneer u het bericht Validatie geslaagd ziet, klikt u op Maken.

  8. Nadat de implementatie is voltooid, klikt u op Ga naar resource.

  9. Noteer de resource-id.

    De resource-id heeft de volgende indeling:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Stap 2: De beheerde identiteit toegang verlenen tot het opslagaccount

Als u de machtigingen in deze stap wilt verlenen, moet u de rol Eigenaar of Gebruikerstoegang hebben Beheer istrator Azure RBAC in uw opslagaccount.

  1. Meld u aan bij uw Azure Data Lake Storage Gen2-account.
  2. Ga naar Toegangsbeheer (IAM), klik op + Toevoegen en selecteer Roltoewijzing toevoegen.
  3. Selecteer de rol Inzender voor opslagblobgegevens en klik op Volgende.
  4. Selecteer beheerde identiteit onder Toegang toewijzen aan.
  5. Klik op +Leden selecteren en selecteer toegangsconnector voor Azure Databricks of door de gebruiker toegewezen beheerde identiteit.
  6. Zoek de naam van uw connector of door de gebruiker toegewezen identiteit, selecteer deze en klik op Controleren en toewijzen.

U kunt de toegang tot het opslagaccount ook beperken door de beheerde identiteit toegang te geven tot een specifieke container. Volg dezelfde stappen hierboven, maar verleen de rol Storage Blob Delegator voor het opslagaccount en de rol Inzender voor opslagblobgegevens in de container.

Stap 3: De beheerde identiteit toegang verlenen tot bestandsevenementen

Door uw beheerde identiteit toegang te verlenen tot bestandsevenementen, kan Azure Databricks zich abonneren op meldingen van bestandsevenementen die worden verzonden door cloudproviders. Dit maakt bestandsverwerking efficiënter. Als u de machtigingen in deze stap wilt verlenen, moet u de rol Eigenaar of Gebruikerstoegang hebben Beheer istrator Azure RBAC in uw opslagaccount.

  1. Meld u aan bij uw Azure Data Lake Storage Gen2-account.
  2. Ga naar Toegangsbeheer (IAM), klik op + Toevoegen en selecteer Roltoewijzing toevoegen.
  3. Selecteer de rol Inzender voor opslagwachtrijgegevens en klik op Volgende.
  4. Selecteer beheerde identiteit onder Toegang toewijzen aan.
  5. Klik op +Leden selecteren en selecteer toegangsconnector voor Azure Databricks of door de gebruiker toegewezen beheerde identiteit.
  6. Zoek de naam van uw connector of door de gebruiker toegewezen identiteit, selecteer deze en klik op Controleren en toewijzen.

Met deze stap kan Azure Databricks bestandsevenementen automatisch instellen. Als u Azure Databricks geen toegang verleent om bestandsevenementen namens u te configureren, moet u bestandsevenementen handmatig configureren voor elke locatie. Als u de machtigingen in deze stap wilt verlenen, moet u beschikken over de rollen Eigenaar of Gebruikerstoegang Beheer istrator Azure RBAC voor uw beheerde identiteit en de resourcegroep waarin uw Azure Data Lake Storage Gen2-account zich bevindt.

  1. Volg de bovenstaande stappen in stap 3: De beheerde identiteit toegang verlenen tot bestandsevenementen en de rol Inzender voor opslagaccounts, naast de rol Inzender voor opslagwachtrijgegevens, toewijzen aan uw beheerde identiteit.
  2. Navigeer naar de Azure-resourcegroep waarin uw Azure Data Lake Storage Gen2-account zich bevindt.
  3. Ga naar Toegangsbeheer (IAM), klik op + Toevoegen en selecteer Roltoewijzing toevoegen.
  4. Selecteer de rol EventGrid EventSubscription-inzender en klik op Volgende.
  5. Selecteer beheerde identiteit onder Toegang toewijzen aan.
  6. Klik op +Leden selecteren en selecteer toegangsconnector voor Azure Databricks of door de gebruiker toegewezen beheerde identiteit.
  7. Zoek de naam van uw connector of door de gebruiker toegewezen identiteit, selecteer deze en klik op Controleren en toewijzen.

Een beheerde identiteit gebruiken om toegang te krijgen tot het hoofdopslagaccount van de Unity Catalog

In deze sectie wordt beschreven hoe u de beheerde identiteit toegang geeft tot het hoofdopslagaccount wanneer u een Unity Catalog-metastore maakt.

Zie Upgrade your existing Unity Catalog metastore to use a managed identity(Upgrade your existing Unity Catalog metastore to use a managed identity to access its root storage) (Upgrade your existing Unity Catalog metastore to use a managed identity to use a managed identity to access its root storage).

  1. Meld u als azure Databricks-accountbeheerder aan bij de Azure Databricks-accountconsole.
  2. Klik op CataloguspictogramCatalogus.
  3. Klik op Metastore maken.
  4. Voer waarden in voor de volgende velden:
    • Naam voor de metastore.

    • Regio waar de metastore wordt geïmplementeerd.

      Voor de beste prestaties zoekt u de toegangsconnector, werkruimten, metastore en cloudopslaglocatie in dezelfde cloudregio.

    • ADLS Gen 2-pad: voer het pad in naar de opslagcontainer die u gaat gebruiken als hoofdopslag voor de metastore.

      Het abfss:// voorvoegsel wordt automatisch toegevoegd.

    • Toegang Verbinding maken or-id: voer de resource-id van de Azure Databricks-toegangsconnector in de indeling in:

      /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
      
    • (Optioneel) Beheerde identiteit-id: Als u de toegangsconnector hebt gemaakt met behulp van een door de gebruiker toegewezen beheerde identiteit, voert u de resource-id van de beheerde identiteit in.

  5. Klik op Create.
  6. Wanneer u hierom wordt gevraagd, selecteert u werkruimten die u wilt koppelen aan de metastore.

Een beheerde identiteit gebruiken voor toegang tot externe opslag die wordt beheerd in Unity Catalog

Unity Catalog biedt u de mogelijkheid om toegang te krijgen tot bestaande gegevens in opslagaccounts met behulp van opslagreferenties en externe locaties. Opslagreferenties slaan de beheerde identiteit op en externe locaties definiëren een pad naar opslag, samen met een verwijzing naar de opslagreferentie. U kunt deze methode gebruiken om bestaande gegevens in cloudopslag toegang te verlenen en te beheren en externe tabellen te registreren in Unity Catalog.

Een opslagreferentie kan een beheerde identiteit of service-principal bevatten. Het gebruik van een beheerde identiteit heeft het voordeel dat Unity Catalog toegang heeft tot opslagaccounts die worden beveiligd door netwerkregels, wat niet mogelijk is met behulp van service-principals, en de noodzaak om geheimen te beheren en te roteren, wordt verwijderd.

Als u een opslagreferentie wilt maken met behulp van een beheerde identiteit en die opslagreferentie wilt toewijzen aan een externe locatie, volgt u de instructies in Verbinding maken naar cloudobjectopslag met behulp van Unity Catalog.

Als uw Azure Databricks-werkruimte is geïmplementeerd in uw eigen virtuele Azure-netwerk, ook wel 'VNet-injectie' genoemd, en u een opslagfirewall gebruikt om een Azure Data Lake Storage Gen2-account te beveiligen, moet u het volgende doen:

  1. Schakel uw Azure Databricks-werkruimte in voor toegang tot Azure Storage.
  2. Uw beheerde identiteit toegang geven tot Azure Storage.

Stap 1. Uw Azure Databricks-werkruimte toegang geven tot Azure Storage

U moet netwerkinstellingen configureren om uw Azure Databricks-werkruimte toegang te geven tot Azure Data Lake Storage Gen2. U kunt privé-eindpunten of toegang vanuit uw virtuele netwerk in Azure Data Lake Storage Gen2 configureren om verbindingen van uw subnetten met uw Azure Data Lake Storage Gen2-account toe te staan.

Zie Uw Azure Databricks-werkruimte toegang verlenen tot Azure Data Lake Storage Gen2 voor instructies.

Stap 2: Uw beheerde identiteit toegang geven tot Azure Storage

Deze stap is alleen nodig als Azure-services in de lijst met vertrouwde services toegang hebben tot dit opslagaccount is uitgeschakeld voor uw Azure Storage-account. Als deze configuratie is ingeschakeld:

  • Elke toegangsconnector voor Azure Databricks in dezelfde tenant als het opslagaccount heeft toegang tot het opslagaccount.
  • Elke vertrouwde Azure-service heeft toegang tot het opslagaccount. Zie Toegang verlenen tot vertrouwde Azure-services.

De onderstaande instructies bevatten een stap waarin u deze configuratie uitschakelt. U kunt De Azure-portal of de Azure CLI gebruiken.

De Azure-portal gebruiken

  1. Meld u aan bij Azure Portal, zoek en selecteer het Azure Storage-account en ga naar het tabblad Netwerken .

  2. Stel openbare netwerktoegang in op Ingeschakeld vanuit geselecteerde virtuele netwerken en IP-adressen.

    Als optie kunt u in plaats daarvan openbare netwerktoegang instellen op Uitgeschakeld. De beheerde identiteit kan worden gebruikt om de controle over openbare netwerktoegang te omzeilen.

  3. Selecteer onder Resource-exemplaren een resourcetype Microsoft.Databricks/access Verbinding maken ors en selecteer uw Azure Databricks-toegangsconnector.

  4. Schakel onder Uitzonderingen het selectievakje Azure-services in de lijst met vertrouwde services toestaan uit voor toegang tot dit opslagaccount .

De Azure CLI gebruiken

  1. Installeer de Azure CLI en meld u aan.

    Als u zich wilt aanmelden met behulp van een Service-principal voor Microsoft Entra ID, raadpleegt u de Azure CLI-aanmelding met een Service-principal voor Microsoft Entra ID.

    Als u zich wilt aanmelden met behulp van een Azure Databricks-gebruikersaccount, raadpleegt u azure CLI-aanmelding met een Azure Databricks-gebruikersaccount.

  2. Voeg een netwerkregel toe aan het opslagaccount:

    az storage account network-rule add \
    -–subscription <subscription id of the resource group> \
    -–resource-id <resource Id of the access connector for Azure Databricks> \
    -–tenant-id <tenant Id> \
    -g <name of the Azure Storage resource group> \
    -–account-name <name of the Azure Storage resource> \
    

    Voeg de resource-id toe in de indeling:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  3. Nadat u de netwerkregel hebt gemaakt, gaat u naar uw Azure Storage-account in Azure Portal en bekijkt u de beheerde identiteit op het tabblad Netwerken onder Resource-exemplaren, resourcetype Microsoft.Databricks/accessConnectors.

  4. Schakel onder Uitzonderingen het selectievakje Azure-services in de lijst met vertrouwde services toestaan uit voor toegang tot dit opslagaccount .

  5. U kunt desgewenst openbare netwerktoegang instellen op Uitgeschakeld. De beheerde identiteit kan worden gebruikt om de controle over openbare netwerktoegang te omzeilen.

    De standaardmethode is om deze waarde ingesteld te houden op Ingeschakeld vanuit geselecteerde virtuele netwerken en IP-adressen.

Serverloze SQL-warehouses zijn rekenresources die worden uitgevoerd in het Azure-abonnement voor Azure Databricks, niet uw Azure-abonnement. Als u een firewall configureert in Azure Data Lake Storage Gen2 en u van plan bent serverloze SQL Warehouses te gebruiken, moet u de firewall configureren om toegang vanuit serverloze SQL-warehouses toe te staan.

Zie Een firewall configureren voor serverloze rekentoegang voor instructies.

Upgrade uw bestaande Unity Catalog-metastore om een beheerde identiteit te gebruiken voor toegang tot de hoofdopslag

Als u een Unity Catalog-metastore hebt die is gemaakt met behulp van een service-principal en u deze wilt upgraden om een beheerde identiteit te gebruiken, kunt u deze bijwerken met behulp van een API-aanroep.

  1. Maak een Access Verbinding maken or voor Azure Databricks en wijs deze machtigingen toe aan de opslagcontainer die wordt gebruikt voor de hoofdopslag van uw Unity Catalog-metastore met behulp van de instructies in Een beheerde identiteit configureren voor Unity Catalog.

    U kunt de toegangsconnector maken met een door het systeem toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit.

    Noteer de resource-id van de toegangsconnector. Als u een door de gebruiker toegewezen beheerde identiteit gebruikt, noteert u ook de resource-id.

  2. Meld u als accountbeheerder aan bij een Azure Databricks-werkruimte die is toegewezen aan de metastore.

    U hoeft geen werkruimtebeheerder te zijn.

    Noteer de werkruimte-URL, het eerste gedeelte van de URL, na https:// en inclusief azuredatabricks.net.

  3. Genereer een persoonlijk toegangstoken.

  4. Voeg het persoonlijke toegangstoken toe aan het .netrc bestand in uw basismap. Dit verbetert de beveiliging door te voorkomen dat het persoonlijke toegangstoken wordt weergegeven in de opdrachtgeschiedenis van uw shell. Zie de tokenbeheer-API.

  5. Voer de volgende cURL-opdracht uit om de opslagreferentie opnieuw te maken.

    Vervang de waarden van de tijdelijke aanduidingen:

    • <databricks-instance>: De werkruimte-URL van de werkruimte waarin het persoonlijke toegangstoken is gegenereerd.
    • <credential-name>: Een naam voor de opslagreferentie.
    • <access-connector-id>: Resource-id voor de Azure Databricks-toegangsconnector in de indeling /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    • <managed-identity-id>: Als u de toegangsconnector hebt gemaakt met behulp van een door de gebruiker toegewezen beheerde identiteit, geeft u de resource-id van de beheerde identiteit op.
    curl -n -X POST --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/storage-credentials --data "{
      \"name\": \"<credential-name>\",
      \"azure_managed_identity\": {
        \"access_connector_id\": \"<access-connector-id>\",
        \"managed_identity_id\": \"<managed-identity-id>\"
      }
    }"
    
  6. Noteer de opslagreferentie-id in het antwoord.

  7. Voer de volgende cURL-opdracht uit om de metastore_id<databricks-instance>werkruimte-URL op te halen van de werkruimte waarin het persoonlijke toegangstoken is gegenereerd.

    curl -n GET--header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastore_summary
    
  8. Voer de volgende cURL-opdracht uit om de metastore bij te werken met de nieuwe basisopslagreferenties.

    Vervang de waarden van de tijdelijke aanduidingen:

    • <databricks-instance>: De werkruimte-URL van de werkruimte waarin het persoonlijke toegangstoken is gegenereerd.
    • <metastore-id>: de metastore-id die u in de vorige stap hebt opgehaald.
    • <storage-credential-id>: de opslagreferentie-id.
    curl -n -X PATCH --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastores/<metastore-id> --data
    "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"