Creare una firma di accesso condiviso OneLake (SAS) (anteprima)
È possibile creare una firma di accesso condiviso di OneLake per fornire l'accesso a breve termine e delegato a una cartella o a un file in OneLake supportato dalle credenziali di Microsoft Entra. OneLake SAS può fornire l'accesso temporaneo alle applicazioni senza supporto per Microsoft Entra, consentendo loro di caricare i dati o di fungere da proxy tra altre applicazioni dei clienti o fornitori di software indipendenti (ISV).
Per creare una firma di accesso condiviso di OneLake, è prima necessario richiedere una chiave di delega utente, che viene quindi usata per firmare la firma della firma di accesso condiviso. Per richiedere una chiave di delega utente, chiamare l'operazione Get User Delegation Key .To request a user delegation key, call the Get User Delegation Key operation. OneLake SAS può concedere l'accesso solo a file e cartelle all'interno di elementi di dati e non può essere usato per operazioni di gestione come la creazione o l'eliminazione di elementi o aree di lavoro.
Una firma di accesso condiviso di OneLake può concedere l'accesso solo a file e cartelle all'interno degli elementi di dati e non può essere usata per operazioni di gestione come la creazione di aree di lavoro o elementi.
Una firma di accesso condiviso di OneLake viene creata in modo analogo a Archiviazione di Azure firma di accesso condiviso delegata dall'utente, usando gli stessi parametri per la compatibilità con strumenti e applicazioni compatibili con Archiviazione di Azure.
Importante
Questa funzionalità si trova in anteprima.
Assegnare autorizzazioni
La richiesta di una chiave di delega utente è un'operazione a livello di tenant in Fabric. Per richiedere una chiave di delega utente, l'utente o il principio di sicurezza che richiede la chiave di delega utente deve avere almeno le autorizzazioni di lettura in un'area di lavoro nel tenant di Fabric. L'identità dell'utente richiedente viene usata per autenticare la firma di accesso condiviso, il che significa che l'utente deve disporre dell'autorizzazione per i dati a cui concede l'accesso sas.
Acquisire un token OAuth 2.0
Per ottenere la chiave di delega utente, richiedere prima di tutto un token OAuth 2.0 dall'ID Microsoft Entra. Autorizzare la chiamata all'operazione Get User Delegation Key fornendo il token con lo schema Bearer. Per altre informazioni sulla richiesta di un token OAuth da Microsoft Entra ID, vedere Flussi di autenticazione e scenari di applicazione.
Richiedere la chiave di delega utente
La chiamata all'operazione Get User Delegation Key restituisce la chiave come set di valori usati come parametri nel token di firma di accesso condiviso della delega utente. Questi parametri sono descritti nel riferimento Get User Delegation Key (Ottieni chiave di delega utente) e nella sezione successiva.
Quando un client richiede una chiave di delega utente usando un token OAuth 2.0, OneLake restituisce una chiave di delega utente per conto del client. Una firma di accesso condiviso creata con questa chiave di delega utente viene concessa al massimo alle autorizzazioni concesse al client, con ambito inferiore alle autorizzazioni concesse in modo esplicito nella firma di accesso condiviso.
È possibile creare un numero qualsiasi di sas OneLake per la durata della chiave di delega utente. Tuttavia, una firma di accesso condiviso di OneLake e le chiavi di delega utente possono essere valide per al massimo un'ora e non possono superare la durata del token che li richiede. Queste restrizioni di durata sono più brevi della durata massima di una firma di accesso condiviso delegata dall'utente Archiviazione di Azure.
Costruire una firma di accesso condiviso per la delega utente
La tabella seguente riepiloga i campi supportati per un token di firma di accesso condiviso OneLake. Le sezioni successive forniscono altri dettagli su questi parametri e su come differiscono dai token di firma di accesso condiviso Archiviazione di Azure. OneLake non supporta tutti i parametri facoltativi supportati da Archiviazione di Azure e una firma di accesso condiviso OneLake costruita con un parametro non supportato verrà rifiutata.
Nome campo firma di accesso condiviso | Parametro del token di firma di accesso condiviso | Stato | Descrizione |
---|---|---|---|
signedVersion |
sv |
Richiesto | Indica la versione del servizio utilizzata per costruire il campo della firma. OneLake supporta la versione '2020-02-10', tutte le versioni successive a '2020-12-06' e versioni precedenti a '2020-02-10'. |
signedResource |
sr |
Richiesto | Specifica le risorse accessibili tramite la firma di accesso condiviso. Solo BLOB (b ) e directory (d ) sono applicabili a OneLake. |
signedStart |
st |
Facoltativo | Ora in cui la firma di accesso condiviso diventa valida. Formato ISO 8601 UTC. |
signedExpiry |
se |
Richiesto | Ora di scadenza della firma di accesso condiviso |
signedPermissions |
sp |
Richiesto | Indica le operazioni che la firma di accesso condiviso può eseguire sulla risorsa. Altri dettagli nella sezione Specificare le autorizzazioni |
signedObjectId |
skoid |
Richiesto | Identifica un'entità di sicurezza Microsoft Entra. |
signedtenantId |
sktid |
Richiesto | Specifica il tenant di Microsoft Entra in cui è definita un'entità di sicurezza. |
signedKeyStartTime |
skt |
Facoltativo | Ora in formato UTC all'avvio della chiave di firma. Restituito dall'operazione Get User Delegation Key . |
signedKeyExpiryTime |
ske |
Richiesto | Ora in formato UTC al termine della chiave di firma. Restituito dall'operazione Get User Delegation Key . |
signedKeyVersion |
skv |
Richiesto | Versione del servizio di archiviazione usata per ottenere la chiave di delega utente. Restituito dall'operazione Get User Delegation Key . OneLake supporta le versioni 2020-02-10 e precedenti e versioni successive al 2020-12-06 |
signedKeyService |
sks |
Richiesto | Servizio valido per la chiave di delega utente. OneLake supporta solo l'archiviazione BLOB (sks=b ). |
signature |
sig |
Richiesto | La firma è un codice HMAC (Hash-Based Message Authentication Code) calcolato sulla stringa da firmare e chiave usando l'algoritmo SHA256 e quindi codificato con codifica Base64. |
signedAuthorizedObjectId |
saoid |
Non supportato | OneLake SAS non supporta questa funzionalità. |
signedUnauthorizedObjectId |
suoid |
Non supportato | OneLake SAS non supporta questa funzionalità. |
signedCorrelationId |
suoid |
Non supportato | OneLake SAS non supporta questo parametro. |
signedDirectoryDepth |
sdd |
Facoltativo | Indica il numero di directory all'interno della cartella radice della directory specificata nel campo canonicalizedResource della stringa da firmare. Supportato solo quando sr=d . |
signedEncryptionScope |
ses |
Non supportato | OneLake SAS non supporta attualmente ambiti di crittografia personalizzati. |
signedIP |
sip |
Non supportato | OneLake SAS non supporta attualmente il filtro IP |
signedProtocol |
spr |
Facoltativo | OneLake supporta solo le richieste HTTPS. |
Cache-Control intestazione della risposta |
rscc |
Non supportato | OneLake SAS non supporta questo parametro. |
Content-Disposition intestazione della risposta |
rscd |
Non supportato | OneLake SAS non supporta questo parametro. |
Content-Encoding intestazione della risposta |
rsce |
Non supportato | OneLake SAS non supporta questo parametro. |
Content-Language intestazione della risposta |
rscl |
Non supportato | OneLake SAS non supporta questo parametro. |
Content Type intestazione della risposta |
rsct |
Non supportato | OneLake SAS non supporta questo parametro. |
Specificare le autorizzazioni
Le autorizzazioni specificate nel campo (signedPermissions
) nel sp
token di firma di accesso condiviso indicano quali operazioni un client che possiede la firma di accesso condiviso può eseguire sulla risorsa.
Le autorizzazioni possono essere combinate per consentire a un client di eseguire più operazioni con la stessa firma di accesso condiviso. Quando si costruisce la firma di accesso condiviso, è necessario includere le autorizzazioni nell'ordine seguente: racwdxltmeop
.
Esempi di impostazioni di autorizzazione valide includono rw
, rd
rl
, wd
, , wl
e rl
. Non è possibile specificare un'autorizzazione più volte.
Per garantire parità con gli strumenti di Archiviazione di Azure esistenti, OneLake usa lo stesso formato di autorizzazione di Archiviazione di Azure. OneLake valuta le autorizzazioni concesse a una firma di accesso condiviso in signedPermissions
, le autorizzazioni dell'identità di firma in Fabric e qualsiasi ruolo di accesso ai dati OneLake, se applicabile. Tenere presente che alcune operazioni, ad esempio l'impostazione delle autorizzazioni o l'eliminazione di aree di lavoro, non sono consentite in OneLake tramite API Archiviazione di Azure in genere e pertanto la concessione di tale autorizzazione (sp=op
) non consentirà a una firma di accesso condiviso di OneLake di eseguire tali operazioni.
Autorizzazione | Simbolo URI | Conto risorse | Operazioni consentite |
---|---|---|---|
Lettura | r | Directory, Blob | Leggere il contenuto, l'elenco di blocchi, le proprietà e i metadati di qualsiasi BLOB nel contenitore o nella directory. Usare un BLOB come origine di un'operazione di copia. |
Aggiunta | a | Directory, Blob | Aggiungere un blocco a un BLOB di accodamento. |
Creazione | c | Directory, Blob | Scrivere un nuovo BLOB, creare uno snapshot di un BLOB o copiare un BLOB in un nuovo BLOB. |
Scrittura | w | Directory, Blob | Creare o scrivere contenuto, proprietà, metadati o blocklist. Snapshot o lease del BLOB. Usare il BLOB come destinazione di un'operazione di copia. |
Elimina | d | Directory, Blob | Eliminare un BLOB. |
Elimina versione | x | BLOB | Eliminare una versione del BLOB. |
Eliminazione permanente | y | BLOB | Eliminare definitivamente uno snapshot o una versione del BLOB. |
List | l | Directory | Elencare i BLOB in modo non ricorsivo. |
Tag | t | BLOB | Leggere o scrivere i tag in un BLOB. |
Sposta | m | Directory, Blob | Spostare un BLOB o una directory e il relativo contenuto in una nuova posizione. |
Execute | e | Directory, Blob | Ottenere le proprietà di sistema e, se lo spazio dei nomi gerarchico è abilitato per l'account di archiviazione, ottenere l'ACL POSIX di un BLOB. |
Proprietà | o | Directory, Blob | Impostare il proprietario o il gruppo proprietario. Non supportato in OneLake |
Autorizzazioni | p | Directory, Blob | Impostare le autorizzazioni. Non supportato in OneLake |
Set Blob Immutability Policy | i | BLOB | Impostare o eliminare i criteri di immutabilità o il blocco legale in un BLOB. |
Specificare la firma
Il signature
campo (sig
) viene usato per autorizzare una richiesta effettuata da un client con la firma di accesso condiviso. La stringa da firmare è una stringa univoca creata dai campi che devono essere verificati per autorizzare la richiesta. La firma è un HMAC calcolato sulla stringa da firmare e chiave usando l'algoritmo SHA256 e quindi codificato usando la codifica bBase65.
Per costruire la stringa di firma di una firma di accesso condiviso della delega utente, creare la stringa da firmare dai campi effettuati dalla richiesta, codificare la stringa come UTF-8 e quindi calcolare la firma usando l'algoritmo HMAC-SHA256. I campi inclusi nella stringa da firmare devono essere decodificati tramite URL.
I campi richiesti nella stringa per l'accesso dipendono dalla versione del servizio usata per l'autorizzazione (sv
). La sezione seguente descrive le configurazioni da stringa a firma per le versioni che supportano OneLake SASs.
Versione 2020-12-06 e successive
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
signedEncryptionScope + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Versione 2020-01-10
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Versioni precedenti alla versione 2020-02-10
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Risorsa canonica
La canonicalizedResource
parte della stringa è un percorso canonico della risorsa. Deve includere l'endpoint OneLake e il nome della risorsa e deve essere decodificato in URL. Un percorso OneLake deve includere l'area di lavoro e un percorso di directory deve includere il numero di sottodirectory che corrispondono al sdd
parametro .
Gli esempi seguenti illustrano come convertire l'URL di OneLake nella risorsa canonica corrispondente. Tenere presente che OneLake supporta sia le operazioni DFS che gli endpoint e che il nome dell'account per OneLake è sempre onelake.
BLOB File
URL = https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv"
DFS Directory
URL = https://onelake.dfs.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/"
Esempio di firma di accesso condiviso di OneLake
L'esempio seguente mostra un URI di firma di accesso condiviso di OneLake con un token di firma di accesso condiviso OneLake aggiunto. Il token di firma di accesso condiviso fornisce le autorizzazioni di lettura e scrittura per la cartella Files nella lakehouse.
https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/?sp=rw&st=2023-05-24T01:13:55Z&se=2023-05-24T09:13:55Z&skoid=<object-id>&sktid=<tenant-id>&skt=2023-05-24T01:13:55Z&ske=2023-05-24T09:13:55Z&sks=b&skv=2022-11-02&sv=2022-11-02&sr=d&sig=<signature>