Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Du kan bruke legitimasjonsverktøyene for å få tilgang til tokens og administrere hemmeligheter i Azure Key Vault. Modulen notebookutils.credentials integreres med Microsoft Entra ID for tokeninnhenting og Azure Key Vault for hemmelig administrasjon, slik at du trygt kan koble til Azure-ressurser uten å eksponere legitimasjon i koden.
Legitimasjonsverktøyene er tilgjengelige i Python, PySpark, Scala og R-notatbøker. Eksemplene på denne siden bruker Python som hovedspråk, med Scala og R-ekvivalenter vist der det offentlige API-et støtter dem.
Viktig!
Aldri hardkode hemmeligheter eller legitimasjoner direkte i notatbokkoden. Bruk alltid Azure Key Vault for å lagre sensitive verdier og hente dem under kjøring med notebookutils.credentials.getSecret.
Begrensninger og sikkerhet
Før du bruker verktøy for legitimasjon, bør du være oppmerksom på disse begrensningene:
- Tokenutløp – Tokens utløper etter en periode. For langvarige operasjoner, implementer oppdateringslogikk for å be om en ny token før utløp.
-
Begrensninger for tjenesteprinsippets omfang – Når man kjører under en tjenesteprinsipp, har tokens for målgruppen
pbibegrensede omfang sammenlignet med brukeridentiteten. -
MSAL for full omfang – Hvis du trenger hele Fabric-tjenesteomfanget under en tjenesteprinsipp, bruk MSAL-autentisering i stedet for
getToken. - Hemmelig redigering – Notatboken gir automatisk ut hemmelige verdier for å forhindre utilsiktet eksponering.
- Key Vault-tillatelser – Du må ha riktige tillatelser (Get for reading, Set for writing) på Azure Key Vault for å få tilgang til eller lagre hemmeligheter.
- Endringer i publikum – Token-publikumsområder kan utvikle seg over tid. Verifiser nåværende skalaer i dokumentasjonen.
Kjør følgende kommando for å få en oversikt over de tilgjengelige metodene:
Følgende tabell viser tilgjengelige metoder for legitimasjon:
| Metode | Signatur | Beskrivelse |
|---|---|---|
getToken |
getToken(audience: String): String |
Returnerer et Microsoft Entra-token for den spesifiserte målgruppen. |
getSecret |
getSecret(akvName: String, secret: String): String |
Returnerer verdien av en hemmelighet fra det spesifiserte Azure Key Vault. |
putSecret |
putSecret(akvName: String, secretName: String, secretValue: String): String |
Lagrer en hemmelighet i det spesifiserte Azure Key Vault. Denne metoden er ikke tilgjengelig i det offentlige Scala API-et. |
isValidToken |
isValidToken(token: String): Boolean |
Sjekker om tokenet er gyldig og ikke utløpt. Denne metoden er ikke tilgjengelig i det offentlige Scala API-et. |
Hent token
getToken returnerer en Microsoft Entra-token for et gitt publikum. Tabellen nedenfor viser de tilgjengelige publikumsnøklene:
| Målgruppenøkkel | Ressurs | Brukstilfelle |
|---|---|---|
storage |
Azure Storage | Få tilgang til ADLS Gen2 og Blob Storage |
pbi |
Power BI | Kall Power BI og Fabric REST API-er |
keyvault |
Azure Key Vault | Hent Key Vault-hemmeligheter |
kusto |
Synapse RTA KQL DB | Connect to Azure Data Explorer |
Kjør følgende kommando for å hente tokenet:
Eksempler på tokenbruk
Du kan bruke det returnerte tokenet til å autentisere mot ulike Azure-tjenester.
Azure Storage
storage_token = notebookutils.credentials.getToken('storage')
Power BI og Fabric REST API-er
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')
Bruk tokens med Azure SDK
Stoffnotatbøker støtter DefaultAzureCredential det ikke direkte. Du kan bruke en egendefinert credential-klasse som en løsning for å sende NotebookUtils-tokens til Azure SDK-klienter.
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}")
Tips
Tokens utløper etter en viss tid. Hvis notatboken din kjører lange operasjoner, implementer oppdateringslogikk for å be om en ny token før den nåværende utløper.
Vurderinger
Token-omfang med
pbien målgruppe kan endre seg over tid.Når du kaller
notebookutils.credentials.getToken("pbi"), har det returnerte tokenet begrenset omfang hvis notatboken kjører under en tjenesteprinsipp. Tokenet har ikke hele Fabric-tjenesteomfanget. Hvis notatboken kjører under brukeridentiteten, har tokenet fortsatt hele Fabric-tjenesteomfanget, men dette kan endre seg med sikkerhetsforbedringer. For å sikre at tokenet har hele Fabric-tjenesteomfanget, bruk MSAL-autentisering i stedet for API-etnotebookutils.credentials.getToken. Hvis du vil ha mer informasjon, kan du se Godkjenne med Microsoft Entra ID.Følgende omfang er tilgjengelige når du ringer
notebookutils.credentials.getTokenmed publikumsnøkkelenpbiunder tjenestehovedidentiteten:-
Lakehouse.ReadWrite.All– Les og skriv tilgang til Lakehouse-artikler -
MLExperiment.ReadWrite.All– Lese- og skrivetilgang til Machine Learning Experiment-objekter -
MLModel.ReadWrite.All– Lese- og skrivetilgang til Machine Learning Model-elementer -
Notebook.ReadWrite.All– Lese- og skrivetilgang til notatbøker -
SparkJobDefinition.ReadWrite.All– Lese- og skrivetilgang til Spark Job Definition-elementer -
Workspace.ReadWrite.All– Lese- og skrivetilgang til Workspace-elementer -
Dataset.ReadWrite.All– Lese- og skrivetilgang til datasettelementer
-
Tips
Hvis du trenger tilgang til flere Fabric-tjenester eller bredere tillatelser under en tjenesteprinsipp, bruk MSAL for Python for å autentisere direkte med hele Fabric-tjenesteomfanget i stedet for å stole på getToken("pbi").
Bli hemmelig
getSecret returnerer en Azure Key Vault-hemmelighet for et gitt Azure Key Vault-endepunkt og hemmelig navn. Samtalen bruker dine nåværende brukerlegitimasjoner for å autentisere mot Key Vault.
notebookutils.credentials.getSecret('https://<name>.vault.azure.net/', 'secret name')
Du kan hente flere hemmeligheter for å bygge tilkoblingsstrenger eller konfigurere tjenester:
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}"
Bemerkning
Notatboken gir automatisk ut hemmelige verdier for sikkerhet. Hvis du skriver ut eller viser en hentet hemmelighet, viser utdataene en redigert plassholder i stedet for den faktiske verdien.
Bruk den fullt kvalifiserte Key Vault-URL-en i formatet https://<vault-name>.vault.azure.net/. Du må ha riktige tillatelser for å få tilgang til Key Vault og de individuelle hemmelighetene.
Anbefalte fremgangsmåter for sikkerhet
Følg disse anbefalingene når du jobber med kvalifikasjoner i Fabric-notatbøker:
- Lagre alle sensitive verdier i Azure Key Vault. Aldri legg inn legitimasjon, tilkoblingsstrenger eller API-nøkler direkte i notatbokkoden.
- Ikke logg hemmelige verdier. Stol på den automatiske hemmelige redigeringen i notatbokens utdata. Unngå å skrive hemmeligheter til filer eller sende dem som notatbokparametere.
- Bruk riktig målgruppe-nøkkel. Match målgruppenøkkelen med den målrettede Azure-ressursen slik at tokenet kun har de tillatelsene det trenger.
- Forstå identitetskonteksten. Vær klar over om notatboken din kjører under brukeridentitet eller en tjenesteprincipal, fordi de tilgjengelige token-omfangene kan variere. Testautentisering i både interaktive og pipeline-kontekster.
- Håndter token-utløp. Tokens utløper. For langvarige operasjoner, implementer oppdateringslogikk for å be om et nytt token før det nåværende utløper.
- Begrens tilgang til Key Vault. Gi kun de nødvendige nødvendige tillatelsene til ditt Key Vault. Revider hemmelig tilgang gjennom Azure Key Vault diagnostiske logger.
- Bruk administrerte identiteter når det er mulig. Administrerte identiteter reduserer behovet for å administrere legitimasjon manuelt og gir en sikrere autentiseringsflyt.
Sett det hemmelig
putSecret lagrer en hemmelighet i det spesifiserte Azure Key Vault. Hvis hemmeligheten allerede eksisterer, oppdateres verdien.
notebookutils.credentials.putSecret('https://<name>.vault.azure.net/', 'secret name', 'secret value')
Du må ha passende tillatelser (Set permission) på Azure Key Vault for å skrive hemmeligheter.
vault_url = "https://myvault.vault.azure.net/"
notebookutils.credentials.putSecret(vault_url, "api-key", "my-secret-api-key-value")
Valider token
Bruk isValidToken den for å sjekke om et token er gyldig og ikke utløpt før du kaller et API med det.
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')