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
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
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:
- Secret je uložen v Azure Key Vault (AKV).
- Managed Identity workspace Fabricu má oprávnění k jeho čtení
- 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ů.
Reference
- 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
- 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/


