Fabric – Pipeline a Key Vault pro bezpečné předání Secretů (riziko kompromitace SecureString)

Ve Fabricu se pro automatizaci datových toků běžně používají Pipelines. Ty často potřebují předávat autentizační údaje, například API klíče nebo hesla (tzv. secrets), do notebooků, které vykonají nějaký kód. I když platforma umožňuje “bezpečné” uložení těchto hodnot v rámci Pipeline v typu SecureString, samotné předání do runtime prostředí Notebooku představuje určité riziko, pokud není správně ošetřeno, protože SecureStringy se objevují v logu.

Tento článek popisuje, proč přímé předávání secretů není zcela bezpečné, a popisuje řešení pomocí Azure Key Vault a nativní python knihovny Fabric pro komunikaci s key vault. Riziko kompromitace SecureString v logu Notebooku.

Tento technický průvodce je přípravou pro následnou přípravu pipeline zajišťující volání Azure contrainer app jobs, kde se nachází náš kontejnerizovaný dbt projekt a CD funkcionalita (aktualizace dbt projektu z repozitáře)

Chráněné (SecureString) parametry mohou uniknout do logů

V Azure Data Factory nebo Fabric Data Pipelines je možné označit parametry jako Secure string. Tím se zajistí, že se jejich hodnota nezobrazí v logu samotné Pipeline. Jakmile je ale taková hodnota předána jako argument do Notebooku, stává se součástí spouštěného kódu ve Spark Session. Tím pádem se může objevit ve standardním výstupu (stdout/stderr) a tedy i v logu Notebooku. Příklad ukazuje, jak se i „bezpečně“ předaný parametr může objevit v logu:

1) Vytvořil jsem novou pipeline a do ní nové parametry uložené jako SecureString a dále novou aktivitu – Notebook

fabric-pipeline-secure-parameters

2) No notebooku předám tyto parametry z pipeline do proměnných var_client_id a var_client_secret

3) Notebook obsahuje pouze print(“Hello, world!”)

4) Když se podíváme do notebook logu po doběhnutí pipeline, tak vidíme toto

fabric-secret-log

Technické vysvětlení: Atribut SecureString chrání pouze logy orchestrátoru Pipeline, nikoliv prostředí, ve kterém Fabric notebook běží. Notebook ani Spark Session nemají nativní mechanismus pro maskování citlivých proměnných. Jakýkoli print()  výjimka nebo debugovací výpis tak může obsahovat celé heslo.

Secrets se objevují v logu. To není úplná tragédie, protože přístup k logům má omezená množina uživatelů, ale i tak platí, že secrets by měly být předány tak, aby nebyly nikde exponovány.

Bezpečné získání tajných klíčů: Implementace Azure Key Vault

Bezpečný přístup: Zero – Trust model pomocí Key Vault a Managed identity

Bezpečné řešení spočívá v tom, že se citlivé hodnoty nikdy nepředávají jako parametry. Pipeline by měla předávat pouze referenci (např. název secretu), zatímco samotný secret se načte přímo v Notebooku pomocí autorizované identity.

Postup pro platformu Fabric:

  1. Secret je uložen v Azure Key Vault (AKV).
  2. Managed Identity workspace Fabricu má oprávnění k jeho čtení
  3. Notebook získá secret pomocí knihovny notebookutils ,která využívá Managed Identity. 1 2

Minimalistická implementace Key Vault

Ukázkový kód v Notebooku:

import notebookutils

print("Hello, world!")

KEY_VAULT_URI = "https://example-vault.vault.azure.net/"
SECRET_NAME = "my-client-secret-name"

try:
    client_secret = notebookutils.credentials.getSecret(KEY_VAULT_URI, SECRET_NAME)
    print("Secret byl úspěšně získán a je připraven k použití.")

except Exception as e:
    print(f"FATÁLNÍ CHYBA: Přístup k Secretu selhal: {e}")
    raise

Závěr

Bezpečné předávání citlivých údajů v datových pracovních tocích vyžaduje, aby se žádné heslo nebo klíč nikdy neobjevilo v logu ani jako parametr. Použití Azure Key Vault v kombinaci s Managed Identity a metodou notebookutils.credentials.getSecret() představuje bezpečný a architektonicky správný přístup, který odpovídá principům Zero – Trust a splňuje požadavky bezpečnostních auditů.

Rate this post

Reference

  1. Microsoft documentation, Create, develop, and maintain Synapse notebooks [on-line]. [cit. 2025-10-26]. Dostupné z WWW: https://learn.microsoft.com/en-us/azure/synapse-analytics/spark/apache-spark-development-using-notebooks?tabs=classical#assign-parameters-values-from-a-pipeline
  2. Syntera, How-To Access Azure Key Vault Secrets from Fabric Notebook [on-line]. [cit. 2025-10-26]. Dostupné z WWW: https://www.syntera.ch/blog/2023/10/18/how-to-access-azure-key-vault-secrets-from-fabric-notebook/
Rubrika: Fabric

O Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako data engineer freelancer. Během cca 10 let jsem zde shromáždil přes 600 IT case studies, průvodců, návodů a tipů určených zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Data Engineeringu, korporátních financí a reportingu. Zaměřuji se především na Microsoft technologie (on-prem i cloud) a různé synergické efekty v rámci jejich produktového portfolia pro dataře a finanční profesionály. Věnuji se také dalším platformám a významným hráčům z oblasti open source technologií. 🔥 Pokud vám tento článek pomohl, ocením referenci na vašem webu nebo zmínku v komunitě. A mám pro vás ještě tip: řešíte-li nějaký zapeklitý Excel problém, přihlašte se do naší Excel Facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse ».

Leave a Reply

Your email address will not be published. Required fields are marked *