Použití uložených zásad přístupu pro delegování přístupu k Azure Storage
Sdílený přístupový podpis (SAS) představuje bezpečný způsob, jak klientům udělit přístup bez sdílení přihlašovacích údajů k Azure. Toto snadné používání má i svou stinnou stránku. Přístup k souboru bude mít kdokoli, kdo má správný sdílený přístupový podpis, a to dokud neskončí jeho platnost. Jediným způsobem, jak můžete odvolat přístup k úložišti, je znovu vygenerovat přístupové klíče. Regenerace vyžaduje, abyste aktualizovali všechny aplikace, které používají starý sdílený klíč, aby používaly nový klíč. Další možností je přidružit SAS k uloženým zásadám přístupu.
Když jste do aplikace přidali funkci SAS, zvýraznila flexibilitu při vytváření sdíleného přístupového podpisu pro každou image, z nichž každá má vlastní vypršení platnosti a řízení přístupu. Aplikaci chcete aktualizovat tak, aby používala uložené zásady přístupu v kontejneru úložiště. Při použití těchto zásad chcete otestovat, že můžete aktualizovat dobu vypršení platnosti, a ovlivnit tak všechny vytvořené tokeny SAS.
V této lekci se naučíte:
- Použijte uložené zásady přístupu.
- K vytvoření tokenů SAS přidružených k vašim novým zásadám přístupu použijte rozhraní API služby C# Storage.
- Otestujte, že všechny tokeny SAS je možné změnit aktualizací uložených zásad přístupu na webu Azure Portal.
Co jsou uložené zásady přístupu?
Uložené zásady přístupu můžete vytvářet u čtyř druhů prostředků úložiště:
- Kontejnery objektů blob
- Sdílené složky
- Fronty
- Tabulky
Uložené zásady přístupu, které vytvoříte pro kontejner objektů blob, se dají použít pro všechny objekty blob v kontejneru a pro samotný kontejner. Uložená zásada přístupu se vytvoří s následujícími vlastnostmi:
- Identifikátor: Název, který použijete pro odkaz na uložené zásady přístupu.
- Čas zahájení: Hodnota DateTimeOffset pro datum a čas, kdy se může zásada začít používat. Tato hodnota může mít hodnotu null.
- Čas vypršení platnosti: Hodnota DateTimeOffset pro datum a čas vypršení platnosti zásady. Po uplynutí této doby budou žádosti do úložiště neúspěšné a zobrazí se zpráva s kódem chyby 403.
- Oprávnění: Seznam oprávnění jako řetězec, který může být jedním nebo všemi acdlrw.
Vytvoření uložených zásad přístupu
Uložené zásady přístupu můžete vytvořit pomocí kódu jazyka C#, webu Azure Portal nebo příkazů Azure CLI.
Použití kódu C# .NET
BlobSignedIdentifier identifier = new BlobSignedIdentifier
{
Id = "stored access policy identifier",
AccessPolicy = new BlobAccessPolicy
{
ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
Permissions = "rw"
}
};
blobContainer.SetAccessPolicy(permissions: new BlobSignedIdentifier[] { identifier });
Použití portálu
Na portálu přejděte na účet úložiště a pak na kontejner úložiště objektů blob. Na levé straně vyberte Zásady přístupu. Pokud chcete přidat novou uloženou zásadu přístupu, vyberte + Přidat zásadu.
Pak můžete zadat všechny povinné parametry.
Použití příkazů Azure CLI
az storage container policy create \
--name <stored access policy identifier> \
--container-name <container name> \
--start <start time UTC datetime> \
--expiry <expiry time UTC datetime> \
--permissions <(a)dd, (c)reate, (d)elete, (l)ist, (r)ead, or (w)rite> \
--account-key <storage account key> \
--account-name <storage account name> \
Vytvoření tokenů SAS a jejich přidružení k uloženým zásadám přístupu
Pojďme přidružit uložené zásady přístupu, které jste vytvořili, ke všem novým tokenům SAS, které potřebujete. Pro webovou aplikaci s diagnostickými obrázky pacientů ve vaší společnosti aktualizujte stávající kód a přidejte předchozí kód. V metodě, která vytvoří token SAS, pak odkážete na nové uložené zásady přístupu.
Veškerý existující kód, který je potřeba k vytvoření tokenu SAS, je následující:
BlobSasBuilder sas = new BlobSasBuilder
{
BlobContainerName = blob.BlobContainerName,
BlobName = blob.Name,
Resource = "b",
ExpiresOn = DateTimeOffset.UtcNow.AddMinutes(1)
};
// Allow read access
sas.SetPermissions(BlobSasPermissions.Read);
a může být nahrazen odkazem na nové zásady přístupu.
// Create a user SAS that only allows reading for a minute
BlobSasBuilder sas = new BlobSasBuilder
{
Identifier = "stored access policy identifier"
};
Pro jeden kontejner objektů blob můžete mít až pět uložených zásad přístupu.