Förhindra auktorisering av delad nyckel för Azure Storage-konton

Varje säker begäran till ett Azure Storage-konto måste vara auktoriserad. Som standard kan begäranden auktoriseras med antingen Microsoft Entra-autentiseringsuppgifter eller med hjälp av kontoåtkomstnyckeln för auktorisering av delad nyckel. Av dessa två typer av auktorisering ger Microsoft Entra ID överlägsen säkerhet och användarvänlighet över delad nyckel och rekommenderas av Microsoft. Om du vill kräva att klienter använder Microsoft Entra-ID för att auktorisera begäranden kan du inte tillåta begäranden till det lagringskonto som är auktoriserat med delad nyckel.

När du inte tillåter auktorisering av delad nyckel för ett lagringskonto avvisar Azure Storage alla efterföljande begäranden till kontot som är auktoriserade med kontoåtkomstnycklarna. Endast skyddade begäranden som är auktoriserade med Microsoft Entra-ID kommer att lyckas. Mer information om hur du använder Microsoft Entra-ID finns i Auktorisera åtkomst till data i Azure Storage.

Egenskapen AllowSharedKeyAccess för ett lagringskonto anges inte som standard och returnerar inte ett värde förrän du uttryckligen har angett det. Lagringskontot tillåter begäranden som är auktoriserade med delad nyckel när egenskapsvärdet är null eller när det är sant.

Den här artikeln beskriver hur du använder ett DRAG-ramverk (Detection-Remediation-Audit-Governance) för att kontinuerligt hantera auktorisering av delad nyckel för ditt lagringskonto.

Förutsättningar

Innan du inte tillåter åtkomst till delad nyckel på något av dina lagringskonton:

Förstå hur nekande av delad nyckel påverkar SAS-token

När åtkomst med delad nyckel inte tillåts för lagringskontot hanterar Azure Storage SAS-token baserat på typen av SAS och den tjänst som begäran riktar sig mot. Följande tabell visar hur varje typ av SAS är auktoriserad och hur Azure Storage hanterar den SAS när egenskapen AllowSharedKeyAccess för lagringskontot är falskt.

Typ av SAS Typ av auktorisering Beteende när AllowSharedKeyAccess är falskt
SAS för användardelegering (endast bloblagring) Microsoft Entra-ID Begäran är tillåten. Microsoft rekommenderar att du använder en SAS för användardelegering när det är möjligt för överlägsen säkerhet.
Tjänst-SAS Delad nyckel Begäran nekas för alla Azure Storage-tjänster.
Konto-SAS Delad nyckel Begäran nekas för alla Azure Storage-tjänster.

Azure-mått och loggning i Azure Monitor skiljer inte mellan olika typer av signaturer för delad åtkomst. SAS-filtret i Azure Metrics Explorer och SAS-fältet i Azure Storage-loggning i Azure Monitor båda rapportbegäranden som är auktoriserade med någon typ av SAS. Olika typer av signaturer för delad åtkomst är dock auktoriserade på olika sätt och fungerar annorlunda när åtkomst med delad nyckel inte tillåts:

  • En SAS-tjänsttoken eller en SAS-kontotoken har auktoriserats med delad nyckel och tillåts inte vid en begäran till Blob Storage när egenskapen AllowSharedKeyAccess är inställd på false.
  • En SAS för användardelegering är auktoriserad med Microsoft Entra-ID och kommer att tillåtas vid en begäran till Blob Storage när egenskapen AllowSharedKeyAccess är inställd på false.

När du utvärderar trafik till ditt lagringskonto bör du tänka på att mått och loggar enligt beskrivningen i Identifiera vilken typ av auktorisering som används av klientprogram kan innehålla begäranden som görs med en SAS för användardelegering.

Mer information om signaturer för delad åtkomst finns i Bevilja begränsad åtkomst till Azure Storage-resurser med hjälp av signaturer för delad åtkomst (SAS).

Överväg kompatibilitet med andra Azure-verktyg och -tjänster

Ett antal Azure-tjänster använder auktorisering med delad nyckel för att kommunicera med Azure Storage. Om du inte tillåter auktorisering av delad nyckel för ett lagringskonto kommer dessa tjänster inte att kunna komma åt data i det kontot och dina program kan påverkas negativt.

Vissa Azure-verktyg erbjuder alternativet att använda Microsoft Entra-auktorisering för att få åtkomst till Azure Storage. I följande tabell visas några populära Azure-verktyg och anteckningar om de kan använda Microsoft Entra-ID för att auktorisera begäranden till Azure Storage.

Azure-verktyg Microsoft Entra-auktorisering till Azure Storage
Azure Portal Stöds. Information om hur du auktoriserar med ditt Microsoft Entra-konto från Azure-portalen finns i Välj hur du auktoriserar åtkomst till blobdata i Azure-portalen.
AzCopy Stöds för Blob Storage. Information om hur du auktoriserar AzCopy-åtgärder finns i Välj hur du ska ange autentiseringsuppgifter för auktorisering i AzCopy-dokumentationen.
Azure Storage Explorer Stöds för Blob Storage, Queue Storage, Table Storage och Azure Data Lake Storage Gen2. Microsoft Entra ID-åtkomst till Fillagring stöds inte. Se till att välja rätt Microsoft Entra-klientorganisation. Mer information finns i Komma igång med Storage Explorer
Azure PowerShell Stöds. Information om hur du auktoriserar PowerShell-kommandon för blob- eller köåtgärder med Microsoft Entra-ID finns i Köra PowerShell-kommandon med Microsoft Entra-autentiseringsuppgifter för åtkomst till blobdata eller Kör PowerShell-kommandon med Microsoft Entra-autentiseringsuppgifter för åtkomst till ködata.
Azure CLI Stöds. Information om hur du auktoriserar Azure CLI-kommandon med Microsoft Entra-ID för åtkomst till blob- och ködata finns i Köra Azure CLI-kommandon med Microsoft Entra-autentiseringsuppgifter för åtkomst till blob- eller ködata.
Azure IoT Hub Stöds. Mer information finns i IoT Hub-stöd för virtuella nätverk.
Azure Cloud Shell Azure Cloud Shell är ett integrerat gränssnitt i Azure-portalen. Azure Cloud Shell är värd för filer för beständighet i en Azure-filresurs i ett lagringskonto. Dessa filer blir otillgängliga om auktorisering av delad nyckel inte tillåts för det lagringskontot. Mer information finns i Spara filer i Azure Cloud Shell.

Om du vill köra kommandon i Azure Cloud Shell för att hantera lagringskonton för vilka åtkomst med delad nyckel inte tillåts kontrollerar du först att du har beviljats de behörigheter som krävs för dessa konton via Azure RBAC. Mer information finns i Vad är rollbaserad åtkomstkontroll i Azure (Azure RBAC)?.

Tillåt inte auktorisering av delad nyckel för användning av villkorsstyrd åtkomst i Microsoft Entra

För att skydda ett Azure Storage-konto med principer för villkorsstyrd åtkomst i Microsoft Entra måste du inte tillåta auktorisering av delad nyckel för lagringskontot.

Auktorisera åtkomst till fildata eller överföra Azure Files-arbetsbelastningar

Azure Storage stöder Microsoft Entra-auktorisering för begäranden till Azure Files, Blob Storage, Queue Storage och Table Storage. Azure-portalen använder dock som standard auktorisering av delad nyckel för att få åtkomst till Azure-filresurser. Om du inte tillåter auktorisering av delad nyckel för ett lagringskonto som inte har konfigurerats med rätt RBAC-tilldelningar misslyckas begäranden till Azure Files och du kommer inte att kunna komma åt Azure-filresurser i Azure-portalen.

För att minimera detta rekommenderar vi att du använder någon av tre metoder:

  1. Följ dessa steg för att auktorisera åtkomst till fildata med ditt Microsoft Entra-konto, eller
  2. Migrera Azure Files-data till ett separat lagringskonto innan du inte tillåter åtkomst till ett konto via delad nyckel, eller
  3. Använd inte den här inställningen på lagringskonton som stöder Azure Files-arbetsbelastningar.

Identifiera lagringskonton som tillåter åtkomst till delad nyckel

Det finns två sätt att identifiera lagringskonton som tillåter åtkomst till delad nyckel:

Kontrollera åtkomstinställningen för delad nyckel för flera konton

Om du vill kontrollera åtkomstinställningen delad nyckel för en uppsättning lagringskonton med optimala prestanda kan du använda Azure Resource Graph Explorer i Azure-portalen. Mer information om hur du använder Resource Graph Explorer finns i Snabbstart: Kör din första Resource Graph-fråga med Azure Resource Graph Explorer.

När du kör följande fråga i Resource Graph Explorer returneras en lista över lagringskonton och inställningen Åtkomst till delad nyckel visas för varje konto:

resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend allowSharedKeyAccess = parse_json(properties).allowSharedKeyAccess
| project subscriptionId, resourceGroup, name, allowSharedKeyAccess

Konfigurera Azure Policy för åtkomst till delad nyckel i granskningsläge

Azure Policy Storage-konton bör förhindra åtkomst med delad nyckel hindrar användare med lämpliga behörigheter från att konfigurera nya eller befintliga lagringskonton för att tillåta auktorisering av delad nyckel. Konfigurera den här principen i granskningsläge för att identifiera lagringskonton där auktorisering av delad nyckel tillåts. När du har ändrat program för att använda Microsoft Entra i stället för delad nyckel för auktorisering kan du uppdatera principen för att förhindra att åtkomst till delad nyckel tillåts.

Mer information om den inbyggda principen finns i Lagringskonton bör förhindra åtkomst till delad nyckel i Lista över inbyggda principdefinitioner.

Tilldela den inbyggda principen för ett resursomfång

Följ de här stegen för att tilldela den inbyggda principen för lämpligt omfång i Azure-portalen:

  1. I Azure-portalen söker du efter Princip för att visa Instrumentpanelen för Azure Policy.

  2. I avsnittet Redigering väljer du Tilldelningar.

  3. Välj Tilldela princip.

  4. På fliken Grundinställningarsidan Tilldela princip anger du omfånget för principtilldelningen i avsnittet Omfång . Välj knappen Mer (...) för att välja prenumeration och valfri resursgrupp.

  5. I fältet Principdefinition väljer du knappen Mer (...) och anger åtkomst till delad nyckel i fältet Sök . Välj principdefinitionen med namnet Lagringskonton bör förhindra åtkomst till delad nyckel.

    Screenshot showing how to select the built-in policy to prevent allowing Shared Key access for your storage accounts

  6. Välj Granska + skapa.

  7. På fliken Granska + skapa granskar du principtilldelningen och väljer sedan Skapa för att tilldela principdefinitionen till det angivna omfånget.

Övervaka efterlevnaden av principen

Följ dessa steg för att övervaka dina lagringskonton för efterlevnad av åtkomstprincipen för delad nyckel:

  1. På Azure Policy-instrumentpanelen under Redigering väljer du Tilldelningar.

  2. Leta upp och välj den principtilldelning som du skapade i föregående avsnitt.

  3. Välj fliken Visa efterlevnad .

  4. Alla lagringskonton inom omfånget för principtilldelningen som inte uppfyller principkraven visas i efterlevnadsrapporten.

    Screenshot showing how to view the compliance report for the Shared Key access built-in policy.

Om du vill ha mer information om varför ett lagringskonto inte är kompatibelt väljer du Information under Efterlevnadsorsak.

Identifiera vilken typ av auktorisering som används av klientprogram

Om du vill förstå hur nekande av auktorisering av delad nyckel kan påverka klientprogram innan du gör den här ändringen aktiverar du loggning och mått för lagringskontot. Du kan sedan analysera mönster för begäranden till ditt konto under en viss tidsperiod för att avgöra hur begäranden auktoriseras.

Använd mått för att avgöra hur många begäranden lagringskontot tar emot som är auktoriserade med delad nyckel eller en signatur för delad åtkomst (SAS). Använd loggar för att avgöra vilka klienter som skickar dessa begäranden.

En SAS kan auktoriseras med antingen delad nyckel eller Microsoft Entra-ID. Mer information om hur du tolkar begäranden som görs med en signatur för delad åtkomst finns i Förstå hur nekande av delad nyckel påverkar SAS-token.

Fastställa antalet och frekvensen för begäranden som har auktoriserats med delad nyckel

Om du vill spåra hur begäranden till ett lagringskonto auktoriseras använder du Azure Metrics Explorer i Azure-portalen. Mer information om Metrics Explorer finns i Analysera mått med Azure Monitor Metrics Explorer.

Följ dessa steg för att skapa ett mått som spårar begäranden som görs med delad nyckel eller SAS:

  1. Navigera till ditt lagringskonto i Azure-portalen. Under avsnittet Övervakning väljer du Mått.

  2. Den nya måttrutan ska visas:

    Screenshot showing the new metric dialog.

    Om den inte gör det väljer du Lägg till mått.

  3. I dialogrutan Mått anger du följande värden:

    1. Lämna fältet Omfång inställt på namnet på lagringskontot.
    2. Ange måttnamnområdet till Konto. Det här måttet rapporterar om alla begäranden mot lagringskontot.
    3. Ange fältet Mått till Transaktioner.
    4. Ange aggregeringsfältet till Summa.

    Det nya måttet visar summan av antalet transaktioner mot lagringskontot under ett visst tidsintervall. Det resulterande måttet visas enligt följande bild:

    Screenshot showing how to configure a metric to summarize transactions made with Shared Key or SAS.

  4. Välj sedan knappen Lägg till filter för att skapa ett filter för måttet för typ av auktorisering.

  5. I dialogrutan Filter anger du följande värden:

    1. Ange egenskapsvärdet till Autentisering.
    2. Ange fältet Operator till likhetstecknet (=).
    3. I fältet Värden väljer du Kontonyckel och SAS.
  6. I det övre högra hörnet väljer du det tidsintervall som du vill visa måttet för. Du kan också ange hur detaljerad aggregeringen av begäranden ska vara genom att ange intervall var som helst från 1 minut till 1 månad. Ange till exempel tidsintervallet till 30 dagar och tidskornigheten till 1 dag för att se begäranden aggregerade per dag under de senaste 30 dagarna.

När du har konfigurerat måttet börjar begäranden till ditt lagringskonto att visas i diagrammet. Följande bild visar begäranden som har auktoriserats med delad nyckel eller gjorts med en SAS-token. Begäranden aggregeras per dag under de senaste trettio dagarna.

Screenshot showing aggregated requests authorized with Shared Key.

Du kan också konfigurera en aviseringsregel för att meddela dig när ett visst antal begäranden som är auktoriserade med delad nyckel görs mot ditt lagringskonto. Mer information finns i Skapa, visa och hantera måttaviseringar med Azure Monitor.

Analysera loggar för att identifiera klienter som auktoriserar begäranden med delad nyckel eller SAS

Azure Storage-loggar samlar in information om begäranden som gjorts mot lagringskontot, inklusive hur en begäran har auktoriserats. Du kan analysera loggarna för att avgöra vilka klienter som auktoriserar begäranden med delad nyckel eller en SAS-token.

Om du vill logga begäranden till ditt Azure Storage-konto för att utvärdera hur de är auktoriserade kan du använda Azure Storage-loggning i Azure Monitor. Mer information finns i Övervaka Azure Storage.

Azure Storage-loggning i Azure Monitor stöder användning av loggfrågor för att analysera loggdata. Om du vill köra frågor mot loggar kan du använda en Azure Log Analytics-arbetsyta. Mer information om loggfrågor finns i Självstudie: Kom igång med Log Analytics-frågor.

Skapa en diagnostikinställning i Azure-portalen

Om du vill logga Azure Storage-data med Azure Monitor och analysera dem med Azure Log Analytics måste du först skapa en diagnostikinställning som anger vilka typer av begäranden och för vilka lagringstjänster du vill logga data för. Följ dessa steg om du vill skapa en diagnostikinställning i Azure-portal:

  1. Skapa en ny Log Analytics-arbetsyta i prenumerationen som innehåller ditt Azure Storage-konto eller använd en befintlig Log Analytics-arbetsyta. När du har konfigurerat loggning för ditt lagringskonto blir loggarna tillgängliga på Log Analytics-arbetsytan. Mer information finns i Skapa en Log Analytics-arbetsyta i Azure-portal.

  2. Navigera till ditt lagringskonto i Azure-portalen.

  3. I avsnittet Övervakning väljer du Diagnostikinställningar.

  4. Välj den Azure Storage-tjänst som du vill logga begäranden för. Välj till exempel Blob för att logga begäranden till Blob Storage.

  5. Välj Lägg till diagnostikinställning.

  6. Tillhandahåll ett namn för diagnostikinställningen.

  7. Under Kategoriinformation går du till loggavsnittet och väljer StorageRead, StorageWrite och StorageDelete för att logga alla databegäranden till den valda tjänsten.

  8. Under Målinformation, select Skicka till Log Analytics. Välj din prenumeration och Log Analytics-arbetsytan som du skapade tidigare, enligt följande bild.

    Screenshot showing how to create a diagnostic setting for logging requests.

Du kan skapa en diagnostikinställning för varje typ av Azure Storage-resurs i ditt lagringskonto.

När du har skapat diagnostikinställningen loggas begäranden till lagringskontot därefter enligt den inställningen. Mer information finns i Skapa diagnostikinställning för att samla in resursloggar och mått i Azure.

En referens för fält som är tillgängliga i Azure Storage-loggar i Azure Monitor finns i Resursloggar.

Frågeloggar för begäranden som görs med delad nyckel eller SAS

Azure Storage-loggar i Azure Monitor innehåller den typ av auktorisering som användes för att göra en begäran till ett lagringskonto. Om du vill hämta loggar för begäranden som gjorts under de senaste sju dagarna som har auktoriserats med delad nyckel eller SAS öppnar du Log Analytics-arbetsytan. Klistra sedan in följande fråga i en ny loggfråga och kör den. Den här frågan visar de tio IP-adresser som oftast skickade begäranden som har auktoriserats med delad nyckel eller SAS:

StorageBlobLogs
| where AuthenticationType in ("AccountKey", "SAS") and TimeGenerated > ago(7d)
| summarize count() by CallerIpAddress, UserAgentHeader, AccountName
| top 10 by count_ desc

Du kan också konfigurera en aviseringsregel baserat på den här frågan för att meddela dig om begäranden som har auktoriserats med delad nyckel eller SAS. Mer information finns i Skapa, visa och hantera loggaviseringar med Hjälp av Azure Monitor.

Åtgärda auktorisering via delad nyckel

När du har analyserat hur begäranden till ditt lagringskonto auktoriseras kan du vidta åtgärder för att förhindra åtkomst via delad nyckel. Men först måste du uppdatera alla program som använder auktorisering av delad nyckel för att använda Microsoft Entra-ID i stället. Du kan övervaka loggar och mått enligt beskrivningen i Identifiera vilken typ av auktorisering som används av klientprogram för att spåra övergången. Mer information om hur du använder Microsoft Entra-ID för att komma åt data i ett lagringskonto finns i Auktorisera åtkomst till data i Azure Storage.

När du är säker på att du på ett säkert sätt kan avvisa begäranden som är auktoriserade med delad nyckel kan du ange egenskapen AllowSharedKeyAccess för lagringskontot till false.

Varning

Om några klienter för närvarande har åtkomst till data i ditt lagringskonto med delad nyckel rekommenderar Microsoft att du migrerar dessa klienter till Microsoft Entra-ID innan du inte tillåter åtkomst till den delade nyckeln till lagringskontot.

Behörigheter för att tillåta eller neka åtkomst till delad nyckel

Om du vill ange egenskapen AllowSharedKeyAccess för lagringskontot måste en användare ha behörighet att skapa och hantera lagringskonton. Rollbaserade Azure-åtkomstkontrollroller (Azure RBAC) som ger dessa behörigheter omfattar åtgärden Microsoft.Storage/storageAccounts/write eller Microsoft.Storage/storageAccounts/* . Inbyggda roller med den här åtgärden är:

Dessa roller ger inte åtkomst till data i ett lagringskonto via Microsoft Entra-ID. De innehåller dock åtgärden Microsoft.Storage/storageAccounts/listkeys/action, som ger åtkomst till kontoåtkomstnycklarna. Med den här behörigheten kan en användare använda kontoåtkomstnycklarna för att komma åt alla data i ett lagringskonto.

Rolltilldelningar måste begränsas till lagringskontots nivå eller högre för att tillåta en användare att tillåta eller neka åtkomst till delad nyckel för lagringskontot. Mer information om rollomfång finns i Förstå omfånget för Azure RBAC.

Var noga med att begränsa tilldelningen av dessa roller endast till dem som behöver möjligheten att skapa ett lagringskonto eller uppdatera dess egenskaper. Använd principen om minsta behörighet för att se till att användarna har minst behörighet att utföra sina uppgifter. Mer information om hur du hanterar åtkomst med Azure RBAC finns i Metodtips för Azure RBAC.

Kommentar

De klassiska prenumerationsadministratörsrollerna Tjänstadministratör och medadministratör innehåller motsvarigheten till rollen Azure Resource Manager-ägare. Rollen Ägare innehåller alla åtgärder, så att en användare med någon av dessa administrativa roller också kan skapa och hantera lagringskonton. Mer information finns i Azure-roller , Microsoft Entra-roller och klassiska prenumerationsadministratörsroller.

Inaktivera auktorisering av delad nyckel

Med hjälp av ett konto som har nödvändiga behörigheter inaktiverar du auktorisering av delad nyckel i Azure-portalen, med PowerShell eller med hjälp av Azure CLI.

Följ dessa steg för att inte tillåta auktorisering av delad nyckel för ett lagringskonto i Azure-portalen:

  1. Navigera till ditt lagringskonto i Azure-portalen.

  2. Leta upp konfigurationsinställningen under Inställningar.

  3. Ange Tillåt åtkomst till lagringskontonyckel till Inaktiverad.

    Screenshot showing how to disallow Shared Key access for a storage account.

När du inte tillåter auktorisering av delad nyckel misslyckas en begäran till lagringskontot med auktorisering av delad nyckel med felkoden 403 (förbjuden). Azure Storage returnerar ett fel som anger att nyckelbaserad auktorisering inte är tillåten för lagringskontot.

Egenskapen AllowSharedKeyAccess stöds för lagringskonton som endast använder Azure Resource Manager-distributionsmodellen. Information om vilka lagringskonton som använder Azure Resource Manager-distributionsmodellen finns i Typer av lagringskonton.

Kontrollera att åtkomst till delad nyckel inte är tillåten

Om du vill kontrollera att auktorisering av delad nyckel inte längre är tillåten kan du försöka anropa en dataåtgärd med kontoåtkomstnyckeln. I följande exempel försöker du skapa en container med hjälp av åtkomstnyckeln. Det här anropet misslyckas när auktorisering av delad nyckel inte tillåts för lagringskontot. Kom ihåg att ersätta platshållarvärdena inom hakparenteser med dina egna värden:

az storage container create \
    --account-name <storage-account> \
    --name sample-container \
    --account-key <key> \
    --auth-mode key

Kommentar

Anonyma begäranden är inte auktoriserade och fortsätter om du har konfigurerat lagringskontot och containern för anonym läsåtkomst. Mer information finns i Konfigurera anonym läsåtkomst för containrar och blobar.

Övervaka Azure Policy för efterlevnad

När du har nekat åtkomst till delad nyckel på önskade lagringskonton fortsätter du att övervaka principen som du skapade tidigare för kontinuerlig efterlevnad. Baserat på övervakningsresultaten vidtar du lämpliga åtgärder efter behov, inklusive att ändra omfånget för principen, neka åtkomst till delad nyckel på fler konton eller tillåta den för konton där mer tid krävs för reparation.

Uppdatera Azure Policy för att förhindra att åtkomst till delad nyckel tillåts

Om du vill börja tillämpa Azure Policy-tilldelningen som du tidigare skapade för principlagringskonton bör du förhindra åtkomst till delad nyckel genom att ändra effekten av principtilldelningen till Neka för att förhindra att behöriga användare tillåter åtkomst till delad nyckel på lagringskonton. Utför följande steg för att ändra effekten av principen:

  1. Leta upp och välj den principtilldelning som du skapade tidigare på Instrumentpanelen för Azure Policy.

  2. Välj Redigera tilldelning.

  3. Gå till fliken Parametrar .

  4. Avmarkera kryssrutan Visa endast parametrar som behöver indata eller granskning .

  5. I listrutan Effekt ändrar du Granska till Neka och väljer sedan Granska + spara.

  6. På fliken Granska + spara granskar du ändringarna och väljer sedan Spara.

Kommentar

Det kan ta upp till 30 minuter innan principändringen börjar gälla.

Nästa steg