Säkerhetsöverväganden för tilldelningsvillkor för Azure-roller i Azure Blob Storage
Om du vill skydda resurser helt med hjälp av azure-attributbaserad åtkomstkontroll (Azure ABAC) måste du också skydda de attribut som används i villkoren för Tilldelning av Azure-roller. Om ditt villkor till exempel baseras på en filsökväg bör du akta dig för att åtkomsten kan komprometteras om huvudnamnet har obegränsad behörighet att byta namn på en filsökväg.
I den här artikeln beskrivs säkerhetsöverväganden som du bör ta med i dina rolltilldelningsvillkor.
Viktigt!
Azure-attributbaserad åtkomstkontroll (Azure ABAC) är allmänt tillgänglig (GA) för att styra åtkomsten till Azure Blob Storage, Azure Data Lake Storage Gen2 och Azure Queues med hjälp av request
, resource
och environment
principal
attribut på prestandanivåerna för både standard- och Premium Storage-konton. För närvarande finns resursattributet för containermetadata och listbloben med begärandeattributet i FÖRHANDSVERSION. Fullständig information om funktionsstatus för ABAC för Azure Storage finns i Status för villkorsfunktioner i Azure Storage.
Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.
Användning av andra auktoriseringsmekanismer
Villkor för rolltilldelning utvärderas endast när du använder Azure RBAC för auktorisering. Dessa villkor kan kringgås om du tillåter åtkomst med alternativa auktoriseringsmetoder:
- Auktorisering av delad nyckel
- Signatur för delad åtkomst för konto (SAS)
- Tjänst-SAS.
På samma sätt utvärderas inte villkor när åtkomst beviljas med hjälp av åtkomstkontrollistor (ACL: er) i lagringskonton med ett hierarkiskt namnområde (HNS).
Du kan förhindra delad nyckel, SAS på kontonivå och SAS-auktorisering på tjänstnivå genom att inaktivera auktorisering av delad nyckel för ditt lagringskonto. Eftersom SAS för användardelegering är beroende av Azure RBAC utvärderas villkor för rolltilldelning när du använder den här auktoriseringsmetoden.
Skydda lagringsattribut som används under förhållanden
Blobsökväg
När du använder blobsökvägen som ett @Resource-attribut för ett villkor bör du också förhindra att användare byter namn på en blob för att få åtkomst till en fil när de använder konton som har ett hierarkiskt namnområde. Om du till exempel vill skapa ett villkor baserat på blobsökväg bör du även begränsa användarens åtkomst till följande åtgärder:
Åtgärd | beskrivning |
---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action |
Med den här åtgärden kan kunder byta namn på en fil med hjälp av API:et Sökvägsskapande. |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action |
Den här åtgärden ger åtkomst till olika filsystem- och sökvägsåtgärder. |
Blobindextaggar
Blobindextaggar används som friformulärattribut för villkor i lagringen. Om du skapar några åtkomstvillkor med hjälp av dessa taggar måste du också skydda själva taggarna. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
Mer specifikt tillåter DataAction användare att ändra taggarna på ett lagringsobjekt. Du kan begränsa den här åtgärden för att förhindra att användare manipulerar en taggnyckel eller ett värde för att få åtkomst till obehöriga objekt.
Om blobindextaggar används under förhållanden kan data dessutom vara sårbara om data och associerade indextaggar uppdateras i separata åtgärder. Du kan använda @Request
villkor för blobskrivningsåtgärder för att kräva att indextaggar anges i samma uppdateringsåtgärd. Den här metoden kan skydda data från det ögonblick de skrivs till lagring.
Taggar på kopierade blobar
Som standard kopieras inte blobindextaggar från en källblob till målet när du använder Api för kopieringsblob eller någon av dess varianter. Om du vill bevara åtkomstomfånget för blob vid kopiering bör du även kopiera taggarna.
Taggar på ögonblicksbilder
Det går inte att ändra taggar på blobögonblicksbilder. Därför måste du uppdatera taggarna på en blob innan du tar ögonblicksbilden. Om du ändrar taggarna på en basblob fortsätter taggarna på ögonblicksbilden att ha sitt tidigare värde.
Om en tagg på en basblob ändras när en ögonblicksbild har tagits kan åtkomstomfånget skilja sig åt för basbloben och ögonblicksbilden.
Taggar i blobversioner
Blobindextaggar kopieras inte när en blobversion skapas via API:erna Put Blob, Put Block List eller Copy Blob . Du kan ange taggar via rubriken för dessa API:er.
Taggar kan anges individuellt på en aktuell basblob och på varje blobversion. När du ändrar taggar på en basblob uppdateras inte taggarna i tidigare versioner. Om du vill ändra åtkomstomfånget för en blob och alla dess versioner med hjälp av taggar måste du uppdatera taggarna för varje version.
Fråge- och filtreringsbegränsningar för versioner och ögonblicksbilder
När du använder taggar för att fråga och filtrera blobar i en container inkluderas endast basblobbarna i svaret. Blobversioner eller ögonblicksbilder med de begärda nycklarna och värdena ingår inte.
Roller och behörigheter
Om du använder rolltilldelningsvillkor för inbyggda Azure-roller bör du noggrant granska alla behörigheter som rollen beviljar ett huvudnamn.
Ärvda rolltilldelningar
Rolltilldelningar kan konfigureras för en hanteringsgrupp, prenumeration, resursgrupp, lagringskonto eller en container och ärvs på varje nivå i angiven ordning. Azure RBAC har en additiv modell, så de effektiva behörigheterna är summan av rolltilldelningar på varje nivå. Om ett huvudnamn har samma behörighet tilldelad till dem via flera rolltilldelningar utvärderas åtkomsten för en åtgärd som använder den behörigheten separat för varje tilldelning på varje nivå.
Eftersom villkor implementeras som villkor för rolltilldelningar kan alla ovillkorliga rolltilldelningar tillåta användare att kringgå villkoret. Anta att du tilldelar rollen Storage Blob Data Contributor till en användare för ett lagringskonto och en prenumeration, men lägger bara till ett villkor i tilldelningen för lagringskontot. Resultatet är att användaren har obegränsad åtkomst till lagringskontot via rolltilldelningen på prenumerationsnivå.
Därför bör du tillämpa villkor konsekvent för alla rolltilldelningar i en resurshierarki.
Övriga beaktanden
Villkorsåtgärder som skriver blobar
Många åtgärder som skriver blobar kräver antingen behörigheten Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
eller . Inbyggda roller, till exempel Storage Blob Data Owner och Storage Blob Data Contributor , beviljar båda behörigheterna till ett säkerhetsobjekt.
När du definierar ett rolltilldelningsvillkor för dessa roller bör du använda identiska villkor för båda dessa behörigheter för att säkerställa konsekventa åtkomstbegränsningar för skrivåtgärder.
Beteende för att kopiera blob och kopiera blob från URL
För åtgärderna @Request
Kopiera blobb och Kopiera blob från URL utvärderas villkor som använder blobsökväg som attribut för Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
åtgärden och dess underåtgärder endast för målbloben.
För villkor för källbloben @Resource
utvärderas villkoren för åtgärden Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read
.