Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A hitelesítő adatok segédprogramjaival hozzáférési jogkivonatokat szerezhet be, és titkos kulcsokat kezelhet az Azure Key Vaultban. A notebookutils.credentials modul integrálható a Microsoft Entra-azonosítóval a jogkivonatok beszerzéséhez és az Azure Key Vault titkos kulcskezeléshez, így biztonságosan csatlakozhat az Azure-erőforrásokhoz anélkül, hogy hitelesítő adatokat ad meg a kódban.
A hitelesítő adatok segédprogramjai Python-, PySpark-, Scala- és R-jegyzetfüzetekben érhetők el. Az ezen a lapon szereplő példák a Pythont használják elsődleges nyelvként, és a Scala és az R-ekvivalensek azt mutatják, hogy hol támogatja őket a nyilvános API.
Fontos
Soha ne kódoljon titkos kulcsokat vagy hitelesítő adatokat közvetlenül a jegyzetfüzet kódjában. Mindig használja az Azure Key Vaultot a bizalmas értékek tárolására és lekérésére futásidőben a következővel notebookutils.credentials.getSecret: .
Korlátozások és biztonság
A hitelesítő adatok segédprogramjainak használata előtt vegye figyelembe az alábbi korlátozásokat:
- Jogkivonat lejárata – A jogkivonatok egy időszak után lejárnak. Hosszú ideig futó műveletek esetén implementáljon frissítési logikát egy új jogkivonat lekéréséhez a lejárat előtt.
-
Szolgáltatásnév hatókörének korlátozásai – Ha szolgáltatásnév alatt fut, a célközönség jogkivonatai korlátozott hatókörrel rendelkeznek a
pbifelhasználói identitáshoz képest. -
MSAL a teljes hatókörért – Ha egy szolgáltatásnév alatt szüksége van a teljes Fabric szolgáltatástartományra, használja az MSAL-hitelesítést
getTokenhelyett. - Titkos adatok elrejtése – A jegyzetfüzet kimenetei automatikusan elfedik a titkos értékeket, hogy elkerüljék a véletlen kiszivárogtatást.
- Key Vault-engedélyek – A titkos kódok eléréséhez vagy tárolásához megfelelő engedélyekkel kell rendelkeznie az Azure Key Vaultban (olvasáshoz, íráshoz beállítva).
- Közönségváltozások – A token közönség hatókörei idővel fejlődhetnek. Ellenőrizze az aktuális hatóköröket a dokumentációban.
Futtassa a következő parancsot az elérhető módszerek áttekintéséhez:
Az alábbi táblázat a rendelkezésre álló hitelesítő adatokat sorolja fel:
| Módszer | Signature | Leírás |
|---|---|---|
getToken |
getToken(audience: String): String |
Egy Microsoft Entra-jogkivonatot ad vissza a megadott célközönség számára. |
getSecret |
getSecret(akvName: String, secret: String): String |
Egy titkos kód értékét adja vissza a megadott Azure Key Vaultból. |
putSecret |
putSecret(akvName: String, secretName: String, secretValue: String): String |
Titkos kulcsot tárol a megadott Azure Key Vaultban. Ez a módszer nem érhető el a nyilvános Scala API-ban. |
isValidToken |
isValidToken(token: String): Boolean |
Ellenőrzi, hogy a megadott jogkivonat érvényes-e, és nem járt-e le. Ez a módszer nem érhető el a nyilvános Scala API-ban. |
Token lekérése
getToken Egy Microsoft Entra-jogkivonatot ad vissza egy adott célközönség számára. Az alábbi táblázat a jelenleg elérhető célközönségkulcsokat mutatja be:
| Célközönségkulcs | erőforrás | Felhasználási eset |
|---|---|---|
storage |
Azure Storage | Hozzáférés az ADLS Gen2-hez és a Blob Storage-hoz |
pbi |
Power BI | Power BI és Fabric REST API-k meghívása |
keyvault |
Azure Key Vault | Key Vault-titkos kulcsok lekérése |
kusto |
Synapse RTA KQL DB | Csatlakozás az Azure Data Explorerhez |
Futtassa a következő parancsot a jogkivonat lekéréséhez:
Token használati példák
A visszaadott jogkivonattal különböző Azure-szolgáltatásokon végezhet hitelesítést.
Azure Storage
storage_token = notebookutils.credentials.getToken('storage')
Power BI és Fabric REST API-k
import requests
pbi_token = notebookutils.credentials.getToken('pbi')
headers = {
'Authorization': f'Bearer {pbi_token}',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.powerbi.com/v1.0/myorg/datasets',
headers=headers
)
if response.status_code == 200:
datasets = response.json()
print(f"Found {len(datasets['value'])} datasets")
Azure Data Explorer (Kusto)
kusto_token = notebookutils.credentials.getToken('kusto')
Azure Key Vault
keyvault_token = notebookutils.credentials.getToken('keyvault')
Az Azure SDK tokenjeinek használata
A szövet jegyzetfüzetek nem támogatják közvetlenül a DefaultAzureCredential-t. Áthidaló megoldásként használhat egyéni hitelesítő osztályt a NotebookUtils-jogkivonatok Azure SDK-ügyfeleknek való átadásához.
from azure.core.credentials import AccessToken, TokenCredential
import jwt
class NotebookUtilsCredential(TokenCredential):
"""Custom credential that uses notebookutils tokens for Azure SDK."""
def __init__(self, audience="storage"):
self.audience = audience
def get_token(self, *scopes, claims=None, tenant_id=None, **kwargs):
token = notebookutils.credentials.getToken(self.audience)
# Decode token to get expiration time
token_json = jwt.decode(
token, algorithms="RS256",
options={"verify_signature": False}
)
return AccessToken(token, int(token_json.get("exp", 0)))
# Example: use with Azure Blob Storage
from azure.storage.blob import BlobServiceClient
account_url = "https://mystorageaccount.blob.core.windows.net"
credential = NotebookUtilsCredential(audience="storage")
blob_client = BlobServiceClient(account_url=account_url, credential=credential)
for container in blob_client.list_containers():
print(f"Container: {container.name}")
Jótanács
A tokenek egy idő után lejárnak. Ha a notebook hosszú műveleteket futtat, valósítson meg egy frissítési logikát, amely új jogkivonatot kér az aktuális lejárat előtt.
Megfontolások
A
pbinézőként meghatározott token hatókörök idővel változhatnak.Híváskor
notebookutils.credentials.getToken("pbi")a visszaadott jogkivonat korlátozott hatókörrel rendelkezik, ha a jegyzetfüzet szolgáltatásnév alatt fut. A token nem rendelkezik a Fabric szolgáltatás teljes hatókörével. Ha a jegyzetfüzet a felhasználói identitás alatt fut, a jogkivonat továbbra is a teljes Fabric-szolgáltatás hatókörrel rendelkezik, de ez a biztonsági fejlesztésekkel változhat. Annak érdekében, hogy a token teljes Fabric szolgáltatási hatókörrel rendelkezzen, használjon MSAL-hitelesítést aznotebookutils.credentials.getTokenAPI helyett. További információ: Hitelesítés a Microsoft Entra-azonosítóval.A következő hatókörök érhetők el, ha a célközönség kulccsal
notebookutils.credentials.getTokenhívjapbimeg a szolgáltatásnév identitása alatt:-
Lakehouse.ReadWrite.All– Olvasás és írás hozzáférése tóházi tárgyakhoz -
MLExperiment.ReadWrite.All– Olvasási és írási hozzáférés kísérleti tárgyakhoz -
MLModel.ReadWrite.All– Olvasási és írási hozzáférés ML modell elemekhez -
Notebook.ReadWrite.All– Olvasási és írási hozzáférés jegyzetfüzetek tárgyaihoz -
SparkJobDefinition.ReadWrite.All– Olvasni és írni a hozzáférést a Spark munkadefiníciós elemekhez -
Workspace.ReadWrite.All– Olvasási és írási hozzáférés a munkaterületekhez -
Dataset.ReadWrite.All– Olvasási és írási hozzáférés szemantikai modellelemekhez
-
Jótanács
Ha további Fabric-szolgáltatásokhoz vagy szélesebb körű engedélyekhez szeretne hozzáférni egy szolgáltatásnév alatt, az MSAL for Python használatával közvetlenül a teljes Fabric-szolgáltatás hatókörével hitelesíthet ahelyett, hogy azokra getToken("pbi")támaszkodhat.
Titkos kód lekérése
getSecret Egy Azure Key Vault-titkos kulcsot ad vissza egy adott Azure Key Vault-végponthoz és titkos névhez. A hívás az aktuális felhasználói hitelesítő adatokkal hitelesíti a Key Vaultot.
notebookutils.credentials.getSecret('https://<name>.vault.azure.net/', 'secret name')
A kapcsolati sztringek létrehozásához vagy a szolgáltatások konfigurálásához több titkos kulcs is lekérhető:
vault_url = "https://myvault.vault.azure.net/"
db_host = notebookutils.credentials.getSecret(vault_url, "db-host")
db_user = notebookutils.credentials.getSecret(vault_url, "db-user")
db_password = notebookutils.credentials.getSecret(vault_url, "db-password")
connection_string = f"Server={db_host};User={db_user};Password={db_password}"
Megjegyzés:
A jegyzetfüzet kimenetei automatikusan módosítják a titkos kódok értékeit a biztonság érdekében. Ha kinyomtat vagy megjelenít egy lekért titkot, a kimenet a tényleges érték helyett egy kitakart helyőrzőt mutat.
Használja a kulcstár teljesen érvényesített URL-címét a következő formátumban: https://<vault-name>.vault.azure.net/. A Key Vault és az egyes titkos kódok eléréséhez megfelelő engedélyekkel kell rendelkeznie.
Ajánlott biztonsági eljárások
Kövesse az alábbi ajánlásokat, amikor a Fabric-jegyzetfüzetekben hitelesítő adatokkal dolgozik:
- Az összes bizalmas érték tárolása az Azure Key Vaultban. Soha ne ágyazza be közvetlenül a jegyzetfüzet kódjába a hitelesítő adatokat, kapcsolati sztringeket vagy API-kulcsokat.
- Ne naplózza a titkos kódok értékeit. A jegyzetfüzet kimeneteiben az automatikus titkos kódátadásra támaszkodhat. Ne írjon titkos kulcsokat a fájloknak, vagy adja át őket jegyzetfüzet-paraméterként.
- Használja a megfelelő célközönségkulcsot. Célozza meg az Azure-erőforrást a megfelelő jogosultsági kulccsal, így a token csak a szükséges engedélyeket tartalmazza.
- Az identitás kontextusának megismerése. Tudja meg, hogy a jegyzetfüzet felhasználói azonosító vagy szolgáltatásazonosító alatt fut-e, mert a rendelkezésre álló jogkivonat-hatókörök eltérhetnek. Tesztelje a hitelesítést interaktív és folyamatkörnyezetekben is.
- A tokent lejáratának kezelése. A tokenek lejárnak. Hosszú ideig futó műveletek esetén a frissítési logikát implementálva kérjen új jogkivonatot az aktuális lejárata előtt.
- A Key Vault hozzáférésének korlátozása. Csak a minimálisan szükséges engedélyeket adja meg a Key Vaulthoz. Titkos kódokhoz való hozzáférés naplózása az Azure Key Vault diagnosztikai naplóiban.
- Ha lehetséges, használjon felügyelt identitásokat. A felügyelt identitások csökkentik a hitelesítő adatok manuális kezelését, és biztonságosabb hitelesítési folyamatot biztosítanak.
Titkos kód elhelyezése
putSecret titkos kulcsokat tárol a megadott Azure Key Vaultban. Ha a titkos kód már létezik, az érték frissül.
notebookutils.credentials.putSecret('https://<name>.vault.azure.net/', 'secret name', 'secret value')
Titkos kulcsok írásához megfelelő engedélyekkel (beállítási engedéllyel) kell rendelkeznie az Azure Key Vaultban.
vault_url = "https://myvault.vault.azure.net/"
notebookutils.credentials.putSecret(vault_url, "api-key", "my-secret-api-key-value")
Token érvényesítése
Használja a isValidToken-t annak ellenőrzésére, hogy érvényes-e és nem járt-e le a jogkivonat, mielőtt meghív egy API-t vele.
token = notebookutils.credentials.getToken('storage')
is_valid = notebookutils.credentials.isValidToken(token)
if is_valid:
print("Token is valid")
else:
print("Token is expired or invalid, requesting a new one")
token = notebookutils.credentials.getToken('storage')