Sdílet prostřednictvím


Správa tajemství

Mnoho pracovních postupů vyžaduje citlivé informace, jako jsou přihlašovací údaje, klíče rozhraní API a tokeny. Místo přímého zadávání těchto hodnot do poznámkových bloků nebo jejich ukládání ve formátu prostého textu je můžete bezpečně uložit pomocí tajných kódů Databricks a odkazovat na ně v poznámkových blocích a úlohách. Tento přístup vylepšuje zabezpečení a zjednodušuje správu přihlašovacích údajů. Tato stránka obsahuje přehled tajných kódů Databricks.

Poznámka:

Databricks doporučuje nakonfigurovat přístup k datům v cloudovém úložišti pomocí katalogu Unity. Viz Připojení ke cloudovému úložišti objektů pomocí katalogu Unity.

Přehled tajemství

Konfigurace a používání tajných kódů:

  1. Vytvořte tajný rozsah. Tajný prostor je kolekce tajemství identifikovaná názvem.
  2. Přidat tajemství do rozsahu
  3. Přiřaďte oprávnění k tajnému oboru.
  4. Vkládejte tajnosti do svého kódu.

Kompletní příklad použití tajných kódů v pracovních postupech najdete v tématu Kurz: Vytvoření a použití tajného kódu Databricks. Pokud chcete tajný kód použít ve vlastnosti konfigurace Sparku nebo proměnné prostředí, přečtěte si téma Použití tajného kódu ve vlastnosti konfigurace Sparku nebo proměnné prostředí.

Varování

Správci pracovních prostorů, tvůrci tajných kódů a uživatelé, kteří mají udělená oprávnění, můžou přistupovat k tajným kódům Databricks a číst je. I když se Databricks pokouší v výstupech poznámkového bloku redactovat hodnoty tajných kódů, není možné těmto uživatelům úplně zabránit v prohlížení tajného obsahu. Vždy pečlivě přiřazujte tajná přístupová oprávnění, abyste ochránili citlivé informace.

Správa oborů tajných kódů

Tajný prostor je kolekce tajemství identifikovaná názvem. Databricks doporučuje sladit rozsahy tajných kódů s rolemi nebo aplikacemi, nikoli s jednotlivci.

Existují dva typy tajného rozsahu:

  • Podporováno službou Azure Key Vault: Můžete odkazovat na tajemství uložená v Azure Key Vault pomocí oborů tajemství podporovaných službou Azure Key Vault. Obor tajných kódů podporovaný službou Azure Key Vault je rozhraní pouze pro čtení k Key Vault. Musíte spravovat tajnosti v oborech tajemství podporovaných službou Azure Key Vault v Azure.
  • Podporováno Databricks: Úložiště tajemství podporované službou Databricks je uložené v šifrované databázi vlastněné a spravované službou Azure Databricks.

Po vytvoření oboru tajných kódů můžete uživatelům přiřadit oprávnění k udělení přístupu ke čtení, zápisu a správě oborů tajných kódů.

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

Tato část popisuje, jak vytvořit obor tajných kódů založený na službě Azure Key Vault pomocí webu Azure Portal a uživatelského rozhraní pracovního prostoru Azure Databricks. Pomocí příkazového řádku Databricks můžete také vytvořit tajnou oblast s podporou Azure Key Vault.

Požadavky

  • Musíte mít instanci služby Azure Key Vault. Pokud nemáte instanci trezoru klíčů, postupujte podle pokynů v tématu Vytvoření služby Key Vault pomocí webu Azure Portal.
  • V instanci Azure Key Vault, kterou chcete použít k zabezpečení oboru tajných údajů, musíte mít roli Key Vault Contributor, Přispěvatel nebo Vlastník.

Poznámka:

Vytvoření oblasti tajných kódů podporované Azure Key Vaultem vyžaduje roli Contributor nebo vlastníka v instanci trezoru klíčů Azure, i přesto, že služba Azure Databricks již měla k trezoru klíčů přístup.

Pokud trezor klíčů existuje v jiném tenantovi než pracovní prostory Azure Databricks, musí mít uživatel Azure AD, který vytváří obor tajných kódů, oprávnění k vytváření služebních identit v tenantovi trezoru klíčů. V opačném případě dojde k následující chybě:

Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}

Konfigurace instance služby Azure Key Vault pro Azure Databricks

  1. Přihlaste se k webu Azure Portal, vyhledejte a vyberte instanci trezoru klíčů Azure.

  2. V části Nastavení klikněte na kartu Konfigurace přístupu.

  3. Nastavte model oprávnění na zásada přístupu k trezoru.

    Poznámka:

    Vytvoření role pro utajenou oblast, která je založená na Azure Key Vault, uděluje oprávnění Get a List pro ID aplikace služby Azure Databricks pomocí přístupových zásad do trezoru klíčů. Model oprávnění řízení přístupu na základě role Azure se v Azure Databricks nepodporuje.

  4. V části Nastavenívyberte Síťové.

  5. V bránách firewall a virtuálních sítích nastavte Povolit přístup z: na Povolit veřejný přístup z konkrétních virtuálních sítí a IP adres.

    V části Výjimka zaškrtněte políčko Povolit důvěryhodné služby Microsoft obejít tuto bránu firewall.

    Poznámka:

    Můžete také nastavit Povolit přístup z: na Povolit veřejný přístup ze všech sítí.

Vytvoření tajného rozsahu s podporou Azure Key Vault

  1. Přejděte na https://<databricks-instance>#secrets/createScope . Nahraďte <databricks-instance> URL adresou pracovního prostoru pro vaše nasazení Azure Databricks. V této adrese URL se rozlišují malá a velká písmena. Například scopecreateScope musí používat velká písmena S).

    Vytvořit rozsah

  2. Zadejte název tajného rozsahu. V názvech rozsahů tajných kódů se nerozlišují malá a velká písmena.

  3. V Spravovat hlavní objekt vyberte Creator nebo Všichni uživatelé pracovního prostoru, chcete určit, kteří uživatelé mají oprávnění SPRAVOVAT v oboru tajných kódů.

    Oprávnění MANAGE umožňuje uživatelům číst, zapisovat a udělovat oprávnění k rozsahu. Aby váš účet mohl zvolit Tvůrce, musí mít Plán Premium.

  4. Zadejte název DNS (napříkladhttps://databrickskv.vault.azure.net/) a ID prostředku, například:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Tyto vlastnosti jsou k dispozici na kartě > služby Azure Key Vault ve vašem Azure portálu.

  5. Klikněte na Vytvořit.

  6. Pomocí příkazu Databricks CLIdatabricks secrets list-scopes ověřte, že obor byl úspěšně vytvořen.

Vytvoření tajného oboru podporovaného Databricks

Tato část popisuje, jak vytvořit rozsah tajností pomocí Databricks CLI (verze 0.205 a vyšší). Můžete také použít rozhraní API pro tajné kódy.

Názvy oborů tajných kódů:

  • Musí být v rámci pracovního prostoru jedinečný.
  • Musí obsahovat alfanumerické znaky, pomlčky, @podtržítka a tečky a nesmí být delší než 128 znaků.
  • Nerozlišují se malá a velká písmena.

Názvy neveřejných rozsahů se považují za necitlivé a jsou viditelné všem uživatelům v pracovním prostoru.

Chcete-li vytvořit obor pomocí rozhraní příkazového řádku Databricks:

databricks secrets create-scope <scope-name>

Ve výchozím nastavení se obory vytvářejí s oprávněním MANAGE pro uživatele, který obor vytvořil. Jakmile vytvoříte obor tajných kódů založený na Databricks, můžete do něj přidat tajné kódy.

Seznam tajných rozsahů

Zobrazení seznamu existujících oborů v pracovním prostoru pomocí rozhraní příkazového řádku:

databricks secrets list-scopes

Můžete také vypsat tajné rozsahy pomocí rozhraní API Secrets.

Smazat tajnou oblast

Odstraněním rozsahu tajných informací odstraníte všechny tajné informace a ACL (seznamy řízení přístupu) použité v tomto rozsahu. Pokud chcete odstranit obor pomocí rozhraní příkazového řádku, spusťte následující příkaz:

databricks secrets delete-scope <scope-name>

Můžete také odstranit tajný okruh pomocí API pro tajnosti.

Správa tajných kódů

Tajemství je pár klíč-hodnota, který ukládá citlivý materiál pomocí názvu klíče, který je jedinečný v rámci rozsahu tajemství.

Tato část popisuje, jak vytvořit rozsah tajností pomocí Databricks CLI (verze 0.205 a vyšší). Můžete také použít rozhraní API pro tajné kódy. V názvech tajných kódů se nerozlišují malá a velká písmena.

Vytvořit tajemství

Metoda vytvoření tajného kódu závisí na tom, jestli používáte obor založený na službě Azure Key Vault nebo obor založený na Databricks.

Vytvoření tajemství v rozsahu, který je založen na službě Azure Key Vault

K vytvoření tajemství ve službě Azure Key Vault použijete Azure Portal nebo Azure Set Secret rozhraní REST API. Příklad najdete v kroku 4: Přidání tajného klíče klienta do služby Azure Key Vault.

Vytvoření tajného kódu v oboru založeném na Databricks

Tato část popisuje, jak vytvořit tajný kód pomocí rozhraní příkazového řádku Databricks (verze 0.205 a novější) nebo v poznámkovém bloku pomocí sady Databricks SDK pro Python. Můžete také použít rozhraní API pro tajné kódy. V názvech tajných kódů se nerozlišují malá a velká písmena.

Rozhraní příkazového řádku Databricks

Když vytvoříte tajný klíč v oboru založeném na Databricks, můžete hodnotu tajného kódu zadat jedním ze tří způsobů:

  • Zadejte hodnotu jako řetězec pomocí příznaku -string-value.
  • Po zobrazení výzvy zadejte tajný kód interaktivně (jednořádkové tajné kódy).
  • Předejte tajný klíč pomocí standardního vstupu (víceřádkové tajné kódy).

Příklad:

databricks secrets put-secret --json '{
  "scope": "<scope-name>",
  "key": "<key-name>",
  "string_value": "<secret>"
}'

Pokud vytváříte víceřádkový tajný klíč, můžete tajný kód předat pomocí standardního vstupu. Příklad:

(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <scope-name> <key-name>

Databricks SDK pro Python

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")

Čtení tajného kódu

Tato část popisuje, jak číst tajný kód pomocí rozhraní příkazového řádku Databricks (verze 0.205 a vyšší) nebo v poznámkovém bloku pomocí nástroje Tajné kódy (dbutils.secrets).

Rozhraní příkazového řádku Databricks

Abyste mohli číst hodnotu tajného kódu pomocí rozhraní příkazového řádku Databricks, musíte dekódovat zakódovanou hodnotu base64. Tuto hodnotu můžete jq extrahovat a base --decode dekódovat:

databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode

Nástroj pro správu tajných informací (dbutils.secrets)

password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")

Vypsat tajemství

Výpis tajemství v daném rozsahu:

databricks secrets list-secrets <scope-name>

Odpověď zobrazí informace o metadatech týkajících se tajemství, jako jsou názvy klíčů těchto tajemství. K výpisu těchto metadat použijete nástroj Secrets (dbutils.secrets) v poznámkovém bloku nebo úloze. Příklad:

dbutils.secrets.list('my-scope')

Odstranit tajemství

Odstranění tajemství z rozsahu pomocí rozhraní příkazového řádku Databricks:

databricks secrets delete-secret <scope-name> <key-name>

Můžete také použít rozhraní API pro tajné kódy.

Pokud chcete odstranit tajný klíč z oboru zálohovaného službou Azure Key Vault, použijte rozhraní REST API služby Azure SetSecret nebo uživatelské rozhraní webu Azure Portal.

Správa oprávnění rozsahu tajemství

Ve výchozím nastavení je uživateli, který vytváří tajné rozsahy, uděleno oprávnění SPRAVOVAT. To umožňuje tvůrci oboru číst tajné kódy v oboru, zapisovat tajné kódy do oboru a spravovat oprávnění k oboru.

Poznámka:

Seznamy ACL tajných kódů jsou na úrovni oboru. Pokud používáte obory založené na službě Azure Key Vault, mají uživatelé s uděleným přístupem k oboru přístup ke všem tajným kódům ve službě Azure Key Vault. Pokud chcete omezit přístup, použijte samostatné instance služby Azure Key Vault.

Tato část popisuje, jak spravovat řízení přístupu k tajným kódům pomocí rozhraní příkazového řádku Databricks (verze 0.205 a vyšší). Můžete také použít rozhraní API pro tajné kódy. Pro úrovně tajného oprávnění viz tajné seznamy ACL.

Udělte uživatelská oprávnění k tajnému rozsahu

Udělení uživatelských oprávnění k tajnému prostoru pomocí příkazového řádku Databricks CLI:

databricks secrets put-acl <scope-name> <principal> <permission>

Vložení žádosti pro principála, který už má použité oprávnění, přepíše stávající úroveň oprávnění.

Pole principal určuje existující objekt zabezpečení Azure Databricks. Uživatel je určen pomocí své e-mailové adresy, služební principál pomocí jeho applicationId hodnoty a skupina podle názvu. Další informace naleznete v tématu Principál.

Zobrazit oprávnění oblasti tajemství

Zobrazení všech oprávnění tajného oboru pro daný tajný obor:

databricks secrets list-acls <scope-name>

Chcete-li získat oprávnění pro práci s tajným oborem přiděleným určitému subjektu:

databricks secrets get-acl <scope-name> <principal>

Pokud pro daný objekt zabezpečení a obor neexistuje žádný ACL, tento požadavek selže.

Odstranit oprávnění k tajnému oboru

Pro odstranění oprávnění k oboru tajemství, které bylo aplikováno na subjekt pro daný obor tajemství:

databricks secrets delete-acl <scope-name> <principal>

Redakce tajných informací

Ukládání přihlašovacích údajů jako tajných kódů Azure Databricks usnadňuje ochranu přihlašovacích údajů při spouštění poznámkových bloků a úloh. Je ale snadné omylem vytisknout tajný kód do standardních výstupních vyrovnávacích pamětí nebo zobrazit hodnotu během přiřazení proměnné.

Aby tomu zabránila, Azure Databricks rediguje všechny tajné hodnoty, které se čtou pomocí dbutils.secrets.get() a jsou uvedeny v konfigurační vlastnosti Sparku. Při zobrazení jsou tajné hodnoty nahrazeny znakem [REDACTED].

Pokud například nastavíte proměnnou na hodnotu tajného kódu pomocí dbutils.secrets.get() a pak tuto proměnnou vytisknete, nahradí se tato proměnná [REDACTED].

Varování

Redakce se vztahuje pouze na doslovné tajné hodnoty. Funkce redakce tajných kódů nebrání záměrným a libovolným transformacím tajného literálu. Pokud chcete zajistit správnou kontrolu nad tajnými kódy, měli byste použít seznamy řízení přístupu k omezení oprávnění ke spouštění příkazů. Tím se zabrání neoprávněnému přístupu ke sdíleným kontextům poznámkového bloku.

Redaction tajného kódu v SQL

Azure Databricks se pokouší redigovat všechny příkazy JAZYKa SQL DQL (Data Query Language), které vyvolávají tajnou funkci, včetně odkazovaných zobrazení a uživatelem definovaných funkcí. secret Při použití funkce se výstup nahradí tam, kde [REDACTED] je to možné. Podobně jako u redigování poznámkového bloku se to týká pouze literálních hodnot, nikoli transformovaných nebo nepřímo odkazovaných tajných informací.

Pro příkazy SQL DML (Data Manipulation Language) umožňuje Azure Databricks tajné vyhledávání, pokud je tajemství považováno za bezpečné – například když je zabalené do kryptografické funkce, jako je sha() nebo aes_encrypt(), které brání uložení nezpracovaných hodnot v nešifrované podobě.

Ověřování tajných kódů v SQL

Azure Databricks také používá ověřování pro blokování příkazů SQL DML, které by mohly vést k ukládání nešifrovaných tajných kódů do tabulek. Analyzátor dotazů se pokusí identifikovat a zabránit těmto scénářům, což pomáhá vyhnout se náhodnému uložení citlivých informací ve formátu prostého textu.