Použití uložených zásad přístupu pro delegování přístupu k Azure Storage

Dokončeno

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.

Screenshot of the Azure portal showing a stored access policy.

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.

Screenshot of the options for adding an access policy.

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.