Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt de hulpprogramma's voor referenties gebruiken om toegangstokens op te halen en geheimen in Azure Key Vault te beheren. De notebookutils.credentials module kan worden geïntegreerd met Microsoft Entra ID voor het verkrijgen van tokens en Azure Key Vault voor geheimbeheer, zodat u veilig verbinding kunt maken met Azure-resources zonder referenties in code weer te geven.
Je kunt de inloggegevensprogramma's gebruiken in Python-notebooks en Fabric Spark-notebooks. In Fabric Spark-notebooks kun je PySpark, Scala of R gebruiken. De beschikbaarheid van methoden verschilt per notebook-runtime en API. Bijvoorbeeld, putSecret werkt alleen in Python-notebooks, die de Python-runtime gebruiken. Spark-notebooks ondersteunen het niet, zelfs niet als ze Python-code draaien met PySpark.
Spark-notebooks die Scala of R gebruiken, ondersteunen het ook niet.
De volgende voorbeelden gebruiken Python als primaire taal. Scala- en R-equivalenten verschijnen waar de notebook-runtime en de publieke API de methode ondersteunen.
Belangrijk
Codeer geheimen of referenties nooit rechtstreeks in notebookcode. Gebruik Altijd Azure Key Vault om gevoelige waarden op te slaan en op te halen tijdens runtime met notebookutils.credentials.getSecret.
Beperkingen en veiligheid
Voordat u hulpprogramma's voor referenties gebruikt, moet u rekening houden met deze beperkingen:
- Verloop van tokens: tokens verlopen na een periode. Implementeer voor langlopende bewerkingen vernieuwingslogica om een nieuw token aan te vragen voordat deze verloopt.
-
Beperkingen voor het bereik van de service-principal : bij uitvoering onder een service-principal hebben tokens voor de
pbidoelgroep beperkte bereiken vergeleken met de gebruikersidentiteit. -
MSAL voor volledig bereik : als u het volledige Fabric-servicebereik onder een service-principal nodig hebt, gebruikt u MSAL-verificatie in plaats van
getToken. - Maskering van geheimen – Notebookuitvoer probeert de oorspronkelijke waarde van het geheim te maskeren wanneer code deze rechtstreeks afdrukt of weergeeft. Deze zo goed mogelijke beveiliging vermindert onbedoelde openbaarmaking, ook tijdens het delen van uw scherm. Het is geen beveiligingsgrens. Na het ophalen ontvangt de geautoriseerde notebookcode plattekst en kan deze de geheime inhoud of inhoud die van het geheim is afgeleid verwerken, omzetten of openbaar maken.
- Key Vault-machtigingen : u moet over de juiste machtigingen beschikken (Voor lezen, Instellen voor schrijven) in Azure Key Vault om toegang te krijgen tot geheimen of op te slaan.
- Wijzigingen in het tokenpubliek – bereik van tokens kan zich in de loop van de tijd ontwikkelen. Controleer de huidige toegangsrechten in de documentatie.
Voer de volgende opdracht uit om een overzicht te krijgen van de beschikbare methoden:
De volgende tabel lijst de beschikbare authenticatiemethoden op:
| Methode | Signature | Beschrijving |
|---|---|---|
getToken |
getToken(audience: String): String |
Hiermee wordt een Microsoft Entra-token geretourneerd voor de opgegeven doelgroep. |
getSecret |
getSecret(akvName: String, secret: String): String |
Retourneert de waarde van een geheim uit de opgegeven Azure Key Vault. |
putSecret |
putSecret(akvName: String, secretName: String, secretValue: String): String |
Slaat een geheim op in de opgegeven Azure Key Vault. Deze methode werkt alleen in notebooks die de Python-runtime gebruiken. Spark-notebooks ondersteunen het niet, zelfs niet als ze Python-code draaien met PySpark. Spark-notebooks die Scala of R gebruiken, ondersteunen het ook niet. |
isValidToken |
isValidToken(token: String): Boolean |
Controleert of het opgegeven token geldig is en niet is verlopen. Deze methode is niet beschikbaar in de openbare Scala-API. |
Token ophalen
getToken retourneert een Microsoft Entra-token voor een bepaalde doelgroep. In de volgende tabel ziet u de momenteel beschikbare doelgroepsleutels:
| Doelgroepsleutel | Hulpbron | Gebruiksituatie |
|---|---|---|
storage |
Azure-opslag | Toegang tot ADLS Gen2 en Blob Storage |
pbi |
Power BI | REST API's voor Power BI en Fabric aanroepen |
keyvault |
Azure Key Vault | Key Vault-geheimen ophalen |
kusto |
Synapse RTA KQL DB | Verbinding maken met Azure Data Explorer |
Voer de volgende opdracht uit om het token op te halen:
Voorbeelden van tokengebruik
U kunt het geretourneerde token gebruiken om te verifiëren bij verschillende Azure-services.
Azure-opslag
storage_token = notebookutils.credentials.getToken('storage')
REST API's voor Power BI en Fabric
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')
Tokens gebruiken met de Azure SDK
Fabric-notebooks ondersteunen niet rechtstreeks DefaultAzureCredential. U kunt een aangepaste referentieklasse gebruiken als tijdelijke oplossing om NotebookUtils-tokens door te geven aan Azure SDK-clients.
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}")
Aanbeveling
Tokens verlopen na een bepaalde periode. Als uw notebook lange bewerkingen uitvoert, implementeert u vernieuwingslogica om een nieuw token aan te vragen voordat het huidige token verloopt.
Overwegingen
Tokenbereiken met
pbials doelgroep kunnen in de loop van de tijd veranderen.Wanneer u aanroept
notebookutils.credentials.getToken("pbi"), heeft het geretourneerde token een beperkt bereik als het notebook wordt uitgevoerd onder een service-principal. Het token heeft niet het volledige Fabric-servicebereik. Als het notebook wordt uitgevoerd onder de gebruikersidentiteit, heeft het token nog steeds het volledige servicebereik van Fabric, maar dit kan veranderen met beveiligingsverbeteringen. Gebruik MSAL-verificatie in plaats van denotebookutils.credentials.getTokenAPI om ervoor te zorgen dat het token het volledige Fabric-servicebereik heeft. Zie Verifiëren met Microsoft Entra ID voor meer informatie.De volgende scopes zijn beschikbaar wanneer u
notebookutils.credentials.getTokenmet de audience-sleutelpbiaanroept onder de service-principal-identiteit.-
Lakehouse.ReadWrite.All– Lees- en schrijftoegang tot lakehouse-items -
MLExperiment.ReadWrite.All– Lees- en schrijftoegang tot experimentele items -
MLModel.ReadWrite.All– Lees- en schrijftoegang tot ML-modelitems -
Notebook.ReadWrite.All– Lees- en schrijftoegang tot notitieboekitems -
SparkJobDefinition.ReadWrite.All– Lees- en schrijftoegang tot onderdelen van Spark-taakdefinities -
Workspace.ReadWrite.All– Lees- en schrijftoegang tot werkruimtes -
Dataset.ReadWrite.All– Lees- en schrijftoegang tot semantische modelitems
-
Aanbeveling
Als u toegang nodig hebt tot aanvullende Fabric-services of bredere machtigingen onder een service-principal, gebruikt u MSAL voor Python om rechtstreeks te verifiëren met het volledige Fabric-servicebereik in plaats van erop getToken("pbi")te vertrouwen.
Geheim ophalen
getSecret retourneert een Azure Key Vault-geheim voor een bepaald Azure Key Vault-eindpunt en een geheime naam. De aanroep maakt gebruik van uw huidige gebruikersreferenties om te verifiëren bij Key Vault.
notebookutils.credentials.getSecret('https://<name>.vault.azure.net/', 'secret name')
U kunt meerdere geheimen ophalen om verbindingsreeksen te bouwen of services te configureren:
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}"
Belangrijk
Na succesvolle opvraging ontvangt de geautoriseerde notitieboekcode de geheime waarde als platte tekst. Notebook-uitvoer probeert de oorspronkelijke geheime waarde te maskeren wanneer code deze direct afdrukt of weergeeft.
Deze zo goed mogelijke beveiliging vermindert onbedoelde openbaarmaking in de uitvoer van notebooks, ook tijdens het delen van uw scherm. Het is geen beveiligingsgrens en voorkomt geen verwerking, transformatie of openbaarmaking van geheim-afgeleide content.
Gebruik de volledig gekwalificeerde Key Vault-URL in de indeling https://<vault-name>.vault.azure.net/. U moet over de juiste machtigingen beschikken om toegang te krijgen tot de Sleutelkluis en de afzonderlijke geheimen.
Aanbevolen procedures voor beveiliging
Volg deze aanbevelingen wanneer u werkt met referenties in Fabric-notebooks:
- Sla alle gevoelige waarden op in Azure Key Vault. Sluit nooit referenties, verbindingsreeksen of API-sleutels rechtstreeks in notebookcode in.
- Onthullen geen geheime waarden. Druk geheime gegevens niet af, log ze niet, schrijf ze niet weg naar bestanden en geef ze niet door als notebookparameters. Output redaction probeert de oorspronkelijke waarde te beschermen in directe notitieboekuitvoer. Het voorkomt niet dat geheime inhoud wordt onthuld.
- Gebruik de juiste doelgroepsleutel. Koppel de doelgroepsleutel aan de Azure-doelresource, zodat het token alleen de benodigde machtigingen heeft.
- Inzicht in de identiteitscontext. Weet of uw notebook wordt uitgevoerd onder gebruikersidentiteit of een service-principal, omdat de beschikbare tokenbereiken kunnen verschillen. Testen van authenticatie in zowel interactieve als pijplijncontexten.
- Verloopdatum van token verwerken. Tokens verlopen. Voor langlopende bewerkingen implementeert u vernieuwingslogica om een nieuw token aan te vragen voordat het huidige token verloopt.
- Toegang tot Key Vault beperken. Verken alleen de minimaal vereiste machtigingen voor uw Key Vault. Geheime toegang controleren via diagnostische logboeken van Azure Key Vault.
- Gebruik indien mogelijk beheerde identiteiten. Beheerde identiteiten verminderen de noodzaak om referenties handmatig te beheren en een veiligere verificatiestroom te bieden.
Geheim plaatsen
putSecretslaat een geheim op of werkt het bij in de gespecificeerde Azure Key Vault.
Het werkt alleen in notebooks die de Python-runtime gebruiken.
Belangrijk
Spark-notebooks ondersteunen putSecretniet, zelfs niet als ze Python-code draaien met PySpark. Spark-notebooks die Scala of R gebruiken, ondersteunen het ook niet. Gebruik een Python-notebook, dat de Python-runtime gebruikt.
# Run only in a notebook that uses the Python runtime.
notebookutils.credentials.putSecret(
'https://<name>.vault.azure.net/',
'secret name',
'secret value'
)
Om geheimen te schrijven, heb je de juiste permissies (Set permission) nodig op de Azure Key Vault. Voer het volgende voorbeeld alleen uit in een notebook dat de Python-runtime gebruikt. Voer het niet uit in een Fabric Spark-notebook.
# Python runtime only. Fabric Spark notebooks don't support putSecret.
vault_url = "https://myvault.vault.azure.net/"
notebookutils.credentials.putSecret(vault_url, "api-key", "my-secret-api-key-value")
Token valideren
Gebruik isValidToken dit om te controleren of een token geldig is en niet is verlopen voordat u er een API mee aanroept.
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')