Sdílet prostřednictvím


Spuštění úlohy s instančním objektem Microsoft Entra ID

Úlohy poskytují neinteraktivní způsob spouštění aplikací v clusteru Azure Databricks, například úlohy ETL nebo úlohy analýzy dat, které by se měly spouštět podle plánu. Tyto úlohy se obvykle spouštějí jako uživatel, který je vytvořil, ale může mít určitá omezení:

  • Vytváření a spouštění úloh závisí na uživateli, který má příslušná oprávnění.
  • K úloze má přístup pouze uživatel, který úlohu vytvořil.
  • Uživatel může být odebrán z pracovního prostoru Azure Databricks.

Použití účtu služby – účtu přidruženého k aplikaci místo konkrétního uživatele – je běžnou metodou, jak tato omezení vyřešit. V Azure můžete k vytvoření účtu služby použít aplikaci Microsoft Entra ID a instanční objekt.

Příkladem toho, kde je to důležité, je, když instanční objekty řídí přístup k datům uloženým v účtu Azure Data Lake Storage Gen2. Spouštění úloh s těmito instančními objekty umožňuje úlohám přistupovat k datům v účtu úložiště a poskytuje kontrolu nad oborem přístupu k datům.

Tento kurz popisuje, jak vytvořit aplikaci Microsoft Entra ID a instanční objekt a nastavit tento instanční objekt jako vlastníka úlohy. Dozvíte se také, jak udělit oprávnění ke spuštění úlohy jiným skupinám, které nejsou vlastníky úlohy. Následuje základní přehled úkolů, které tento kurz provede:

  1. Vytvořte instanční objekt v Microsoft Entra ID .
  2. Vytvořte token PAT (Personal Access Token) v Azure Databricks. Pat použijete k ověření v rozhraní Databricks REST API.
  3. Přidejte instanční objekt jako uživatele, který není správcem, do Azure Databricks pomocí rozhraní API SCIM Databricks.
  4. Vytvořte obor tajných kódů založený na službě Azure Key Vault v Azure Databricks.
  5. Udělte instančnímu objektu přístup pro čtení k oboru tajných kódů.
  6. Vytvořte úlohu v Azure Databricks a nakonfigurujte cluster úloh tak, aby četl tajné kódy z oboru tajných kódů.
  7. Přeneste vlastnictví úlohy na instanční objekt.
  8. Otestujte úlohu spuštěním jako instančního objektu.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

Poznámka:

Cluster s předáváním přihlašovacích údajů nelze použít ke spuštění úlohy vlastněné instančním objektem. Pokud vaše úloha vyžaduje instanční objekt pro přístup ke službě Azure Storage, přečtěte si téma Připojení k Azure Data Lake Storage Gen2 nebo Blob Storage pomocí přihlašovacích údajů Azure.

Požadavky

Pro tento kurz budete potřebovat následující:

  • Uživatelský účet s oprávněními potřebnými k registraci aplikace v tenantovi Microsoft Entra ID.
  • Oprávnění správce v pracovním prostoru Azure Databricks, kde budete spouštět úlohy.
  • Nástroj pro vytváření požadavků rozhraní API do Azure Databricks Tento kurz používá cURL, ale můžete použít libovolný nástroj, který umožňuje odesílat požadavky rozhraní REST API.

Vytvoření instančního objektu v Microsoft Entra ID

Instanční objekt je identita aplikace Microsoft Entra ID. Vytvoření instančního objektu, který se použije ke spouštění úloh:

  1. Na webu Azure Portal vyberte Novou registraci aplikace > Microsoft Entra ID>. Zadejte název aplikace a klikněte na Zaregistrovat.
  2. Přejděte na Certifikáty a tajné kódy, klikněte na Nový tajný klíč klienta a vygenerujte nový tajný klíč klienta. Zkopírujte tajný kód a uložte ho na bezpečném místě.
  3. Přejděte do části Přehled a poznamenejte si ID aplikace (klienta) a ID adresáře (tenanta).

Vytvoření tokenu pat azure Databricks

K ověření pomocí tokenu PAT (Personal Access Token) Azure Databricks použijete rozhraní Databricks REST API. Vytvoření pat, které se dá použít k provádění požadavků rozhraní API:

  1. Přejděte do svého pracovního prostoru Azure Databricks.
  2. Klikněte na své uživatelské jméno v pravém horním rohu obrazovky a klikněte na Nastavení.
  3. Klikněte na Vývojář.
  4. Vedle přístupových tokenů klikněte na Spravovat.
  5. Klikněte na Vygenerovat nový token.
  6. Zkopírujte a uložte hodnotu tokenu.

Tip

Tento příklad používá osobní přístupový token, ale pro většinu rozhraní API můžete použít token ID Microsoft Entra. Osvědčeným postupem je, že pat je vhodný pro úlohy konfigurace správy, ale tokeny ID Microsoftu jsou upřednostňované pro produkční úlohy.

Generování pracovních stanic s privilegovanými oprávněními můžete omezit pouze na správce pro účely zabezpečení. Další podrobnosti najdete v tématu Monitorování a odvolávání tokenů patového přístupu.

Přidání instančního objektu do pracovního prostoru Azure Databricks

Instanční objekt Microsoft Entra ID přidáte do pracovního prostoru pomocí rozhraní API instančních objektů. Musíte také instančnímu objektu udělit oprávnění ke spouštění clusterů automatizovaných úloh. Můžete to udělit prostřednictvím allow-cluster-create oprávnění. Otevřete terminál a pomocí rozhraní příkazového řádku Databricks spusťte následující příkaz pro přidání instančního objektu a udělení požadovaných oprávnění:

databricks service-principals create --json '{
  "schemas":[
    "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
  ],
  "applicationId":"<application-id>",
  "displayName": "test-sp",
  "entitlements":[
    {
      "value":"allow-cluster-create"
    }
  ]
}'

Nahraďte <application-id> registrací Application (client) ID aplikace Microsoft Entra ID.

Vytvoření oboru tajných kódů založených na službě Azure Key Vault v Azure Databricks

Správa rozsahů tajných kódů poskytuje zabezpečené úložiště a správu tajných kódů. Tajný kód přidružený k instančnímu objektu uložíte v oboru tajných kódů. Tajné kódy můžete ukládat v oboru tajných kódů Azure Databricks nebo v oboru tajných kódů založeném na službě Azure Key Vault. Tyto pokyny popisují možnost založené na službě Azure Key Vault:

  1. Vytvořte instanci služby Azure Key Vault na webu Azure Portal.
  2. Vytvořte obor tajných kódů Azure Databricks založený na instanci služby Azure Key Vault.

Krok 1: Vytvoření instance služby Azure Key Vault

  1. Na webu Azure Portal vyberte Trezory > klíčů + Přidat a zadejte název služby Key Vault.

  2. Klikněte na Zkontrolovat a vytvořit.

  3. Po dokončení ověření klikněte na vytvořit .

  4. Po vytvoření služby Key Vault přejděte na stránku Vlastnosti nového trezoru klíčů.

  5. Zkopírujte a uložte identifikátor URI trezoru a ID prostředku.

    Vlastnosti služby Azure Key Vault

Krok 2: Vytvoření oboru tajných kódů založených na službě Azure Key Vault

Prostředky Azure Databricks můžou odkazovat na tajné kódy uložené ve službě Azure Key Vault vytvořením oboru tajných kódů založených na službě Key Vault. Vytvoření oboru tajných kódů Azure Databricks:

  1. Přejděte na stránku Azure Databricks Create Secret Scope na adrese https://<per-workspace-url>/#secrets/createScope. Nahraďte per-workspace-url jedinečnou adresou URL pracovního prostoru pro váš pracovní prostor Azure Databricks.

  2. Zadejte název oboru.

  3. Zadejte identifikátor URI trezoru a ID prostředku pro službu Azure Key Vault, které jste vytvořili v kroku 1: Vytvoření instance služby Azure Key Vault.

  4. Klikněte na Vytvořit.

    Vytvoření oboru tajných kódů

Uložení tajného klíče klienta ve službě Azure Key Vault

  1. Na webu Azure Portal přejděte do služby Trezory klíčů.

  2. Vyberte službu Key Vault vytvořenou v kroku 1: Vytvoření instance služby Azure Key Vault.

  3. V části Tajné kódy nastavení > klikněte na Generovat/Importovat.

  4. Vyberte možnost Ruční nahrání a do pole Hodnota zadejte tajný klíč klienta.

    Vytvořte tajný kód .

  5. Klikněte na Vytvořit.

Udělení přístupu pro čtení instančního objektu k oboru tajných kódů

Vytvořili jste obor tajného kódu a uložili jste tajný klíč klienta instančního objektu do tohoto oboru. Teď instančnímu objektu udělíte přístup ke čtení tajného kódu z oboru tajných kódů.

Otevřete terminál a pomocí rozhraní příkazového řádku Databricks spusťte následující příkaz:

databricks secrets put-acl <scope-name> <application-id> READ
  • Nahraďte <scope-name> názvem oboru tajných kódů Azure Databricks, který obsahuje tajný klíč klienta.
  • Nahraďte <application-id> registrací Application (client) ID aplikace Microsoft Entra ID.

Vytvoření úlohy v Azure Databricks a konfigurace clusteru pro čtení tajných kódů z oboru tajných kódů

Teď jste připraveni vytvořit úlohu, která se dá spustit jako nový instanční objekt. Použijete poznámkový blok vytvořený v uživatelském rozhraní Azure Databricks a přidáte konfiguraci, která clusteru úloh umožní načíst tajný klíč instančního objektu.

  1. Přejděte na cílovou stránku Azure Databricks a vyberte Nový > poznámkový blok. Pojmenujte poznámkový blok a jako výchozí jazyk vyberte SQL .

  2. Zadejte SELECT 1 první buňku poznámkového bloku. Jedná se o jednoduchý příkaz, který v případě úspěchu zobrazí jenom 1. Pokud jste instančnímu objektu udělili přístup k určitým souborům nebo cestám ve službě Azure Data Lake Storage Gen2, můžete místo toho tyto cesty číst.

  3. Přejděte na Pracovní postupy a klikněte na Vytvořit úlohu. Pojmenujte úlohu a úkol, klikněte na Vybrat poznámkový blok a vyberte poznámkový blok, který jste právě vytvořili.

  4. Klikněte na Upravit vedle informací o clusteru.

  5. Na stránce Konfigurovat cluster klepněte na tlačítko Upřesnit možnosti.

  6. Na kartě Spark zadejte následující konfiguraci Sparku:

    fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope-name>/<secret-name>}}
    fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
    
    • Nahraďte <storage-account> názvem účtu úložiště obsahujícího vaše data.
    • Nahraďte <secret-scope-name> názvem oboru tajných kódů Azure Databricks, který obsahuje tajný klíč klienta.
    • Nahraďte <application-id> registrací Application (client) ID aplikace Microsoft Entra ID.
    • Nahraďte <secret-name> názvem přidruženým k hodnotě tajného klíče klienta v oboru tajných kódů.
    • Nahraďte <directory-id> registrací Directory (tenant) ID aplikace Microsoft Entra ID.

Převod vlastnictví úlohy na instanční objekt

Úloha může mít přesně jednoho vlastníka, takže budete muset přenést vlastnictví úlohy od sebe do instančního objektu. Pokud chcete zajistit, aby tuto úlohu mohli spravovat i ostatní uživatelé, můžete skupině udělit oprávnění SPRAVOVAT. V tomto příkladu použijeme rozhraní API pro oprávnění k nastavení těchto oprávnění.

Otevřete terminál a pomocí rozhraní příkazového řádku Databricks spusťte následující příkaz:

databricks permissions set jobs <job-id> --json '{
  "access_control_list": [
    {
      "service_principal_name": "<application-id>",
      "permission_level": "IS_OWNER"
    },
    {
      "group_name": "admins",
      "permission_level": "CAN_MANAGE"
    }
  ]
}'
  • Nahraďte <job-id> jedinečným identifikátorem úlohy. Id úlohy najdete kliknutím na Pracovní postupy na bočním panelu a kliknutím na název úlohy. ID úlohy je na bočním panelu Podrobnosti úlohy.
  • Nahraďte <application-id> registrací Application (client) ID aplikace Microsoft Entra ID.

Úloha bude také potřebovat oprávnění ke čtení poznámkového bloku. Spuštěním následujícího příkazu pomocí rozhraní příkazového řádku Databricks udělte požadovaná oprávnění:

databricks permissions set notebooks <notebook-id> --json '{
  "access_control_list": [
    {
      "service_principal_name": "<application-id>",
      "permission_level": "CAN_READ"
    }
  ]
}'
  • Nahraďte <notebook-id> ID poznámkového bloku přidruženého k úloze. Id najdete tak, že přejdete do poznámkového bloku v pracovním prostoru Azure Databricks a vyhledáte číselné ID, které následuje notebook/ v adrese URL poznámkového bloku.
  • Nahraďte <application-id> registrací Application (client) ID aplikace Microsoft Entra ID.

Otestování úlohy

Úlohy s instančním objektem spouštíte stejným způsobem jako uživatel, a to buď prostřednictvím uživatelského rozhraní, rozhraní API nebo rozhraní příkazového řádku. Testování úlohy pomocí uživatelského rozhraní Azure Databricks:

  1. V uživatelském rozhraní Azure Databricks přejděte na Pracovní postupy a vyberte úlohu.
  2. Klikněte na možnost Spustit.

Pokud se vše spustí správně, zobrazí se pro úlohu stav Úspěch . Výběrem úlohy v uživatelském rozhraní můžete ověřit výstup:

Výstup úlohy

Další informace

Další informace o vytváření a spouštění úloh najdete v tématu Plánování a orchestrace pracovních postupů.