Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Sdílený přístupový podpis (SAS) umožňuje udělit omezený přístup ke kontejnerům a objektům blob v účtu úložiště. Při vytváření sdíleného přístupového podpisu zadáte jeho omezení, včetně toho, ke kterým prostředkům Azure Storage má klient povolený přístup, jaká oprávnění k těmto prostředkům má a jak dlouho je SAS platný.
Každý SAS je podepsaný klíčem. SAS můžete podepsat jedním ze dvou způsobů:
- S klíčem vytvořeným pomocí přihlašovacích údajů Microsoft Entra. SAS podepsaný pomocí přihlašovacích údajů Microsoft Entra je SAS delegovaný uživatelem. Klientovi, který vytváří uživatelský delegační SAS, musí být přiřazena role Azure RBAC, která zahrnuje akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Další informace najdete v tématu Vytvoření SAS delegování uživatele.
- S klíčem účtu úložiště. Sas služby i SAS účtu jsou podepsané klíčem účtu úložiště. Klient, který vytvoří SAS služby, musí mít buď přímý přístup k klíči účtu, nebo musí mít přiřazené oprávnění Microsoft.Storage/storageAccounts/listkeys/action . Další informace najdete v tématu Vytvoření SAS služby nebo Vytvoření SAS účtu.
Poznámka:
SAS delegovaný uživatelem poskytuje vyšší úroveň zabezpečení než SAS podepsaný klíčem účtu úložiště. Microsoft doporučuje, pokud je to možné, používat uživatelský delegační SAS. Další informace najdete v tématu Udělení omezeného přístupu k datům pomocí sdílených přístupových podpisů (SAS).
Tento článek ukazuje, jak vytvořit uživatelsky delegovaný SAS pro kontejner nebo objekt blob pomocí přihlašovacích údajů Microsoft Entra a klientské knihovny Azure Storage pro Javu.
Informace o SAS delegování uživatelů
Token SAS pro přístup ke kontejneru nebo objektu blob může být zabezpečený pomocí přihlašovacích údajů Microsoft Entra nebo klíče účtu. SAS zabezpečený pomocí přihlašovacích údajů Microsoft Entra se označuje jako uživatelský delegovaný SAS, protože token OAuth 2.0 použitý k podepsání SAS je vyžádán za uživatele.
Microsoft doporučuje používat přihlašovací údaje Microsoft Entra, pokud je to možné jako osvědčený postup zabezpečení, a ne používat klíč účtu, který může být snadněji ohrožen. Když návrh vaší aplikace vyžaduje sdílené přístupové podpisy, použijte přihlašovací údaje služby Microsoft Entra k vytvoření uživatelského delegovaného SAS pro lepší zabezpečení. Další informace o uživatelsky delegovaném SAS naleznete v tématu Vytvoření uživatelsky delegovaného SAS.
Upozornění
Každý klient, který má platný SAS, může přistupovat k datům ve vašem účtu úložiště v rozsahu povoleném tímto SAS. Je důležité chránit SAS před škodlivým nebo nezamýšleným použitím. Při distribuci SAS používejte rozvahu a mějte připravený plán, jak kompromitovaný SAS zrušit. Aby se zabránilo nechtěnému použití, použijte uživatelem omezený SAS (SAS), který spojuje SAS token s zamýšleným koncovým uživatelem a nemůže jej používat nikdo jiný.
Další informace o sdílených přístupových podpisech najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).
Přiřazení rolí Azure pro přístup k datům
Když se objekt zabezpečení Microsoft Entra pokusí získat přístup k datům, musí mít tento objekt zabezpečení oprávnění k prostředku. Bez ohledu na to, jestli je objekt zabezpečení spravovanou identitou v Azure nebo uživatelským účtem Microsoft Entra, který spouští kód ve vývojovém prostředí, musí být instančnímu objektu zabezpečení přiřazena role Azure, která uděluje přístup k datům. Informace o přiřazování oprávnění prostřednictvím Azure RBAC najdete v tématu Přiřazení role Azure pro přístup k datům objektů blob.
Nastavení projektu
Pokud chcete pracovat s příklady kódu v tomto článku, přidejte následující direktivy importu:
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
Získejte ověřený tokenový přihlašovací údaj
Pokud chcete získat přihlašovací údaje tokenu, které váš kód může použít k autorizaci požadavků na Blob Storage, vytvořte instanci DefaultAzureCredential třídy. Další informace o použití třídy DefaultAzureCredential k autorizaci spravované identity pro přístup k úložišti Blob Storage najdete v klientské knihovně Azure Identity pro Javu.
Následující fragment kódu ukazuje, jak získat přihlašovací údaje ověřeného tokenu a použít ho k vytvoření klienta služby pro službu Blob Storage:
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Další informace o autorizaci přístupu ke službě Blob Storage z vašich aplikací pomocí sady Java SDK najdete v tématu Ověřování Azure pomocí Javy a identity Azure.
Získání klíče delegování uživatele
Každý SAS je podepsaný klíčem. Pokud chcete vytvořit uživatelský delegovaný SAS, musíte nejprve požádat o uživatelský delegační klíč, který se pak použije k podpisu SAS. Klíč delegování uživatele je podobný klíč účtu, který se používá k podepsání SAS služby nebo SAS účtu, s tím rozdílem, že spoléhá na vaše přihlašovací údaje Microsoft Entra. Když klient požádá o klíč delegování uživatele pomocí tokenu OAuth 2.0, služba Blob Storage vrátí klíč delegování uživatele jménem uživatele.
Jakmile budete mít klíč delegování uživatele, můžete tento klíč použít k vytvoření libovolného počtu sdílených přístupových podpisů delegování uživatele v průběhu životnosti klíče. Klíč delegování uživatele je nezávislý na tokenu OAuth 2.0 použitém k jeho získání, takže pokud je klíč stále platný, token se nemusí obnovovat. Můžete zadat dobu, po kterou klíč zůstane platný, až do 7 dnů.
K vyžádání klíče delegování uživatele použijte jednu z následujících metod:
Následující příklad kódu ukazuje, jak požádat o klíč delegování uživatele:
public UserDelegationKey requestUserDelegationKey(BlobServiceClient blobServiceClient) {
// Request a user delegation key that's valid for 1 day, as an example
UserDelegationKey userDelegationKey = blobServiceClient.getUserDelegationKey(
OffsetDateTime.now().minusMinutes(5),
OffsetDateTime.now().plusDays(1));
return userDelegationKey;
}
Vytvoření SAS delegování uživatele
Pro kontejner nebo objekt blob můžete vytvořit SAS s delegováním uživatele podle potřeb vaší aplikace.
Po získání klíče pro delegování uživatele můžete vytvořit SAS pro delegování uživatele. Uživatelskou delegaci SAS můžete vytvořit pro udělení omezeného přístupu k prostředku kontejneru pomocí následující metody z instance BlobContainerClient:
Klíč delegování uživatele pro podepsání SAS se předá této metodě spolu se zadanými hodnotami pro BlobServiceSasSignatureValues. Oprávnění se zadávají jako instance typu BlobContainerSasPermission.
Následující příklad kódu ukazuje, jak vytvořit SAS delegování uživatele pro kontejner:
public String createUserDelegationSASContainer(BlobContainerClient containerClient, UserDelegationKey userDelegationKey) {
// Create a SAS token that's valid for 1 day, as an example
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
// Assign read permissions to the SAS token
BlobContainerSasPermission sasPermission = new BlobContainerSasPermission()
.setReadPermission(true);
BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
.setStartTime(OffsetDateTime.now().minusMinutes(5));
String sasToken = containerClient.generateUserDelegationSas(sasSignatureValues, userDelegationKey);
return sasToken;
}
Použijte uživatelskou delegaci SAS k autorizaci klientského objektu
K autorizaci klientského objektu k provádění operací s kontejnerem nebo objektem blob na základě oprávnění, která uděluje uživatelsky delegovaný SAS, můžete použít uživatelsky delegovaný SAS.
Následující příklad kódu ukazuje použití SAS delegování uživatele vytvořeného v předchozím příkladu k autorizaci objektu BlobContainerClient . Tento objekt klienta lze použít k provádění operací s prostředkem kontejneru na základě oprávnění udělených SAS.
// Create a SAS token for a container
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("sample-container");
String sasToken = createUserDelegationSASContainer(containerClient, userDelegationKey);
// Create a new BlobContainerClient using the SAS token
BlobContainerClient sasContainerClient = new BlobContainerClientBuilder()
.endpoint(containerClient.getBlobContainerUrl())
.sasToken(sasToken)
.buildClient();
Zdroje informací
Další informace o vytváření uživatelského delegačního SAS pomocí klientské knihovny Azure Blob Storage pro Javu najdete v následujících zdrojích.
Ukázky kódu
Operace rozhraní REST API
Sada Azure SDK pro Javu obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Javy. Metoda klientské knihovny pro získání klíče delegování uživatele používá následující operaci rozhraní REST API:
- Získání klíče delegování uživatele (REST API)
Prostředky klientské knihovny
Viz také
- Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů
- Vytvořte SAS delegovaný uživatelem
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Javu. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace v Javě.