Vytvoření SAS delegování uživatele pro kontejner nebo objekt blob pomocí Javy
Sdílený přístupový podpis (SAS) umožňuje udělit omezený přístup ke kontejnerům a objektům blob ve vašem úč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 delegování uživatele. Klientovi, který vytvoří SAS delegování uživatele, 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í sdíleného přístupového podpisu služby nebo vytvoření sdíleného přístupového podpisu účtu.
Poznámka:
Sas delegování uživatele nabízí vynikající zabezpečení SAS podepsanému klíčem účtu úložiště. Microsoft doporučuje používat SAS delegování uživatele, pokud je to možné. 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 pomocí přihlašovacích údajů Microsoft Entra vytvořit SAS delegování uživatele pro kontejner nebo objekt blob pomocí klientské knihovny Azure Storage pro Javu.
Informace o SAS delegování uživatele
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 nazývá SAS delegování uživatele, protože token OAuth 2.0 použitý k podepsání SAS se požaduje jménem 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 Microsoft Entra k vytvoření SAS delegování uživatele pro zajištění vyššího zabezpečení. Další informace o SAS delegování uživatele najdete v tématu Vytvoření SAS delegování uživatele.
Upozornění
Každý klient, který má platný SAS, má přístup k datům ve vašem účtu úložiště, jak to povoluje tento SAS. Je důležité chránit SAS před škodlivým nebo nezamýšleným použitím. Při distribuci sdíleného přístupového podpisu použijte vlastní uvážení a vytvořte plán pro odvolání ohroženého sdíleného přístupového podpisu.
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ískání přihlašovacích údajů ověřeného tokenu
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í DefaultAzureCredential třídy k autorizaci spravované identity pro přístup ke službě Blob Storage naleznete 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 SAS delegování uživatele, musíte nejprve požádat o klíč delegování uživatele, který se pak použije k podepsání sdíleného přístupového podpisu. 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
Sas delegování uživatele pro kontejner nebo objekt blob můžete vytvořit na základě potřeb vaší aplikace.
Po získání klíče delegování uživatele můžete vytvořit SAS delegování uživatele. Sas delegování uživatele můžete vytvořit pro delegování 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 zadají jako instance 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žití SAS delegování uživatele k autorizaci objektu klienta
Sas delegování uživatele můžete použít k autorizaci objektu klienta k provádění operací s kontejnerem nebo objektem blob na základě oprávnění udělených 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 vytvoření SAS delegování uživatele pomocí klientské knihovny Azure Blob Storage pro Javu najdete v následujících zdrojích informací.
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ření SAS delegování uživatele
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ě.