Szolgáltatás SAS létrehozása tárolóhoz vagy blobhoz Pythonnal
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 szolgáltatás SAS-t egy tárolóhoz vagy blobhoz a Python Blob Storage ügyfélkódtárával a tárfiók kulcsával.
Tudnivalók a szolgáltatás SAS-járól
A szolgáltatás sasa a tárfiók hozzáférési kulcsával van aláírva. A szolgáltatás sasa egyetlen Azure Storage-szolgáltatásban, például a Blob Storage-ban delegálja az erőforrásokhoz való hozzáférést.
Tárolt hozzáférési szabályzattal is meghatározhatja az SAS engedélyeit és időtartamát. Ha meg van adva egy meglévő tárolt hozzáférési szabályzat neve, akkor a szabályzat az SAS-hez van társítva. A tárolt hozzáférési szabályzatokról további információt a tárolt hozzáférési szabályzatok definiálása című témakörben talál. Ha nincs megadva tárolt hozzáférési szabályzat, az ebben a cikkben szereplő kód példák bemutatják, hogyan határozhatja meg az SAS engedélyeit és időtartamát.
Szolgáltatási SAS létrehozása
Az alkalmazás igényeinek megfelelően létrehozhat egy szolgáltatás SAS-t egy tárolóhoz vagy blobhoz.
A tárolóerőforráshoz való korlátozott hozzáférés delegálásához létrehozhat egy szolgáltatás SAS-t a következő módszerrel:
Az SAS aláírásához használt tárfiók hozzáférési kulcsát a rendszer argumentumként továbbítja a metódusnak account_key
. Az engedélyezett engedélyek argumentumként permission
a metódusnak lesznek átadva, és a ContainerSasPermissions osztályban vannak definiálva .
Az alábbi példakód bemutatja, hogyan hozhat létre szolgáltatás SAS-t olvasási engedélyekkel egy tárolóerőforráshoz:
def create_service_sas_container(self, container_client: ContainerClient, account_key: str):
# Create a SAS token that's valid for one day, as an example
start_time = datetime.datetime.now(datetime.timezone.utc)
expiry_time = start_time + datetime.timedelta(days=1)
sas_token = generate_container_sas(
account_name=container_client.account_name,
container_name=container_client.container_name,
account_key=account_key,
permission=ContainerSasPermissions(read=True),
expiry=expiry_time,
start=start_time
)
return sas_token
Szolgáltatás SAS használata ügyfélobjektum engedélyezéséhez
A szolgáltatás 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 szolgáltatás SAS-t egy ContainerClient-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.
# The SAS token string can be appended to the resource URL with a ? delimiter
# or passed as the credential argument to the client constructor
sas_url = f"{container_client.url}?{sas_token}"
# Create a ContainerClient object with SAS authorization
container_client_sas = ContainerClient.from_container_url(container_url=sas_url)
Források
Az Azure Blob Storage Pythonhoz készült ügyfélkódtárának használatáról az alábbi forrásokban olvashat bővebben.