Felhasználói delegálási SAS létrehozása tárolóhoz vagy blobhoz Java használatával
A közös hozzáférésű jogosultságkód (SAS) lehetővé teszi, hogy korlátozott hozzáférést biztosítson a tárfiókban lévő tárolókhoz és blobokhoz. Sas létrehozásakor meg kell adnia annak korlátait, beleértve az ügyfelek számára engedélyezett Azure Storage-erőforrásokat, az ezen erőforrásokra vonatkozó engedélyeiket és az SAS érvényességének érvényességét.
Minden SAS egy kulccsal van aláírva. SAS-t kétféleképpen írhat alá:
- A Microsoft Entra hitelesítő adataival létrehozott kulccsal. A Microsoft Entra hitelesítő adataival aláírt SAS egy felhasználódelegálási SAS. A felhasználói delegálási SAS-t létrehozó ügyfélhez olyan Azure RBAC-szerepkört kell hozzárendelni, amely tartalmazza a Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey műveletet. További információ: Felhasználói delegálási SAS létrehozása.
- A tárfiók kulccsal. A szolgáltatás SAS és a fiók SAS is a tárfiók kulccsal van aláírva. A szolgáltatás SAS-t létrehozó ügyfélnek közvetlen hozzáféréssel kell rendelkeznie a fiókkulcshoz, vagy hozzá kell rendelnie a Microsoft.Storage/storageAccounts/listkeys/action engedélyt. További információ: Szolgáltatás SAS létrehozása vagy fiók SAS létrehozása.
Feljegyzés
A felhasználói delegálási SAS kiváló biztonságot nyújt a tárfiók kulccsal aláírt SAS-nek. A Microsoft javasolja, hogy lehetőség szerint használjon felhasználói delegálási SAS-t. További információ: Korlátozott hozzáférés biztosítása megosztott hozzáférésű jogosultságkódokkal (SAS) rendelkező adatokhoz.
Ez a cikk bemutatja, hogyan hozhat létre felhasználói delegálási SAS-t egy tárolóhoz vagy blobhoz a Microsoft Entra hitelesítő adataival a Java Azure Storage ügyfélkódtárával.
Tudnivalók a felhasználói delegálási SAS-ről
A tárolóhoz vagy blobhoz való hozzáféréshez szükséges SAS-jogkivonatot a Microsoft Entra hitelesítő adataival vagy egy fiókkulcskal lehet védeni. A Microsoft Entra hitelesítő adataival védett SAS-t felhasználói delegálási SAS-nek nevezzük, mivel az SAS aláírásához használt OAuth 2.0 jogkivonatot a felhasználó nevében kéri a rendszer.
A Microsoft azt javasolja, hogy ha lehetséges, használja a Microsoft Entra hitelesítő adatait biztonsági ajánlott eljárásként a fiókkulcs használata helyett, amely könnyebben feltörhető. Ha az alkalmazás tervezése közös hozzáférésű jogosultságkódokat igényel, a Microsoft Entra hitelesítő adataival hozzon létre egy felhasználói delegálási SAS-t a magasabb szintű biztonság érdekében. További információ a felhasználói delegálási SAS-ről: Felhasználói delegálási SAS létrehozása.
Figyelemfelhívás
Minden olyan ügyfél, amely rendelkezik érvényes SAS-szel, hozzáférhet a tárfiókban lévő adatokhoz az adott SAS által engedélyezett módon. Fontos, hogy megvédje az SAS-t a rosszindulatú vagy nem szándékos használattól. Használja a diszkréciót egy SAS terjesztéséhez, és rendelkezik egy tervvel a feltört SAS visszavonásához.
A megosztott hozzáférésű jogosultságkódokkal kapcsolatos további információkért lásd : Korlátozott hozzáférés biztosítása az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódok (SAS) használatával.
Azure-szerepkörök hozzárendelése az adatokhoz való hozzáféréshez
Amikor egy Microsoft Entra biztonsági tag megpróbál hozzáférni az adatokhoz, annak a biztonsági tagnak engedélyekkel kell rendelkeznie az erőforráshoz. Függetlenül attól, hogy a biztonsági tag felügyelt identitás-e az Azure-ban, vagy egy, a fejlesztési környezetben kódot futtató Microsoft Entra-felhasználói fiók, a biztonsági tagnak olyan Azure-szerepkört kell hozzárendelnie, amely hozzáférést biztosít az adatokhoz. Az engedélyek Azure RBAC-en keresztüli hozzárendelésével kapcsolatos információkért lásd : Azure-szerepkör hozzárendelése a blobadatokhoz való hozzáféréshez.
A projekt beállítása
A cikkben szereplő példakódok használatához adja hozzá a következő importálási irányelveket:
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
Hitelesített jogkivonat hitelesítő adatainak lekérése
Ha olyan jogkivonat hitelesítő adatait szeretné lekérni, amelyet a kód a Blob Storage-kérelmek engedélyezésére használhat, hozza létre a DefaultAzureCredential osztály egy példányát. A DefaultAzureCredential osztálynak a Blob Storage-hoz való hozzáférés engedélyezésére szolgáló DefaultAzureCredential osztály használatával kapcsolatos további információkért tekintse meg a Java Azure Identity ügyfélkódtárát.
Az alábbi kódrészlet bemutatja, hogyan szerezheti be a hitelesített jogkivonat hitelesítő adatait, és hogyan hozhat létre szolgáltatásügyfélt a Blob Storage számára:
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Ha többet szeretne megtudni a Blob Storage-hoz való hozzáférés engedélyezéséről az alkalmazásokból a Java SDK-val, tekintse meg a Java és az Azure Identity használatával történő Azure-hitelesítést.
A felhasználói delegálási kulcs lekérése
Minden SAS egy kulccsal van aláírva. Felhasználói delegálási SAS létrehozásához először egy felhasználói delegálási kulcsot kell kérnie, amelyet a rendszer az SAS aláírására használ. A felhasználói delegálási kulcs hasonló a szolgáltatás SAS vagy fiók SAS aláírásához használt fiókkulcshoz, azzal a kivétellel, hogy az a Microsoft Entra hitelesítő adataira támaszkodik. Amikor egy ügyfél egy OAuth 2.0-jogkivonat használatával kér felhasználói delegálási kulcsot, a Blob Storage a felhasználó nevében adja vissza a felhasználó delegálási kulcsát.
Ha már rendelkezik a felhasználói delegálási kulccsal, ezzel a kulccsal tetszőleges számú felhasználói delegálási megosztott hozzáférési aláírást hozhat létre a kulcs élettartama alatt. A felhasználói delegálási kulcs független a beszerzéséhez használt OAuth 2.0-jogkivonattól, így a jogkivonatot nem kell megújítani, ha a kulcs még érvényes. Megadhatja a kulcs érvényességének időtartamát, legfeljebb hét napig.
A felhasználói delegálási kulcs kéréséhez használja az alábbi módszerek egyikét:
Az alábbi példakód bemutatja, hogyan kérheti le a felhasználó delegálási kulcsát:
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;
}
Felhasználódelegálási SAS létrehozása
Az alkalmazás igényeinek megfelelően létrehozhat egy felhasználódelegálási SAS-t egy tárolóhoz vagy blobhoz.
Miután beszerezte a felhasználódelegálási kulcsot, létrehozhat egy felhasználói delegálási SAS-t. A BlobContainerClient-példányból létrehozhat egy felhasználódelegálási SAS-t, amellyel korlátozott hozzáférést delegálhat egy tárolóerőforráshoz:
Az SAS aláírásához szükséges felhasználói delegálási kulcsot a rendszer a BlobServiceSasSignatureValues megadott értékeivel együtt átadja ennek a metódusnak. Az engedélyek BlobContainerSasPermission-példányként vannak megadva.
Az alábbi példakód bemutatja, hogyan hozhat létre felhasználói delegálási SAS-t egy tárolóhoz:
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;
}
Felhasználói delegálási SAS használata ügyfélobjektum engedélyezéséhez
A felhasználói delegálási SAS használatával engedélyezheti egy ügyfélobjektum számára, hogy műveleteket hajtson végre egy tárolón vagy blobon az SAS által megadott engedélyek alapján.
Az alábbi példakód bemutatja, hogyan használhatja a korábbi példában létrehozott felhasználói delegálási SAS-t egy BlobContainerClient-objektum engedélyezéséhez. Ez az ügyfélobjektum használható a tárolóerőforrás műveleteinek végrehajtására az SAS által megadott engedélyek alapján.
// 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();
Források
Ha többet szeretne megtudni arról, hogyan hozhat létre felhasználói delegálási SAS-t a Java-hoz készült Azure Blob Storage ügyfélkódtár használatával, tekintse meg az alábbi erőforrásokat.
Kódminták
REST API-műveletek
Az Azure SDK for Java olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismert Java-paradigmákon keresztül. A felhasználói delegálási kulcs lekérésére szolgáló ügyfélkódtár metódusa a következő REST API-műveletet használja:
- Felhasználódelegálási kulcs lekérése (REST API)
Ügyfélkódtár erőforrásai
Lásd még
- Korlátozott hozzáférés engedélyezése az Azure Storage-erőforrásokhoz közös hozzáférésű jogosultságkódokkal
- Felhasználódelegálási SAS létrehozása
Kapcsolódó tartalom
- Ez a cikk a Java Blob Storage fejlesztői útmutatójának része. További információkért tekintse meg a Java-alkalmazás buildeléséhez kapcsolódó fejlesztői útmutatók teljes listáját.