Framtvinga en lägsta version av TLS (Transport Layer Security) för begäranden till ett lagringskonto

Kommunikationen mellan ett klientprogram och ett Azure Storage-konto krypteras med hjälp av TLS (Transport Layer Security). TLS är ett kryptografiskt standardprotokoll som säkerställer sekretess och dataintegritet mellan klienter och tjänster via Internet. Mer information om TLS finns i Transport Layer Security.

Azure Storage stöder för närvarande tre versioner av TLS-protokollet: 1.0, 1.1 och 1.2. Azure Storage använder TLS 1.2 på offentliga HTTPS-slutpunkter, men TLS 1.0 och TLS 1.1 stöds fortfarande för bakåtkompatibilitet.

Dricks

Azure Storage förlitar sig på Windows-implementering av SSL som inte baseras på OpenSSL och därför inte exponeras för OpenSSL-relaterade säkerhetsrisker.

Med Azure Storage-konton kan klienter skicka och ta emot data med den äldsta versionen av TLS, TLS 1.0 och senare. Om du vill tillämpa strängare säkerhetsåtgärder kan du konfigurera ditt lagringskonto så att klienterna skickar och tar emot data med en nyare version av TLS. Om ett lagringskonto kräver en lägsta version av TLS misslyckas alla begäranden som görs med en äldre version.

Den här artikeln beskriver hur du använder ett DRAG-ramverk (Detection-Remediation-Audit-Governance) för att kontinuerligt hantera säker TLS för dina lagringskonton.

Information om hur du anger en viss version av TLS när du skickar en begäran från ett klientprogram finns i Konfigurera Transport Layer Security (TLS) för ett klientprogram.

Kommentar

Chiffersviten som används när klienter skickar data till och tar emot data från ett lagringskonto är beroende av den TLS-version som används. Det går inte att konfigurera ett lagringskonto för att blockera användningen av specifika chiffer, förutom genom att kräva en lägsta TLS-version. Om du behöver möjligheten att endast tillåta specifika chiffersviter när du ansluter till ditt lagringskonto bör du överväga att använda Azure Application Gateway. Mer information om hur du använder Application Gateway för detta ändamål finns i Konfigurera TLS-principversioner och chiffersviter på Azure Application Gateway.

Identifiera den TLS-version som används av klientprogram

När du tillämpar en lägsta TLS-version för ditt lagringskonto riskerar du att avvisa begäranden från klienter som skickar data med en äldre version av TLS. För att förstå hur konfigurationen av den lägsta TLS-versionen kan påverka klientprogram rekommenderar Microsoft att du aktiverar loggning för ditt Azure Storage-konto och analyserar loggarna efter ett tidsintervall för att identifiera vilka versioner av TLS-klientprogram som använder.

Om du vill logga begäranden till ditt Azure Storage-konto och fastställa vilken TLS-version som används av klienten 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.

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. 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älj 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 vilka typer av begäranden som ska loggas. Du kan logga läs-, skriv- och borttagningsbegäranden. Om du till exempel väljer StorageRead och StorageWrite loggas läs- och skrivbegä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.

    Skärmbild som visar hur du skapar en diagnostikinställning för loggningsbegäranden

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åga efter loggade begäranden efter TLS-version

Azure Storage-loggar i Azure Monitor innehåller TLS-versionen som används för att skicka en begäran till ett lagringskonto. Använd egenskapen TlsVersion för att kontrollera TLS-versionen av en loggad begäran.

Om du vill ta reda på hur många begäranden som har gjorts mot Blob Storage med olika versioner av TLS under de senaste sju dagarna öppnar du Log Analytics-arbetsytan. Klistra sedan in följande fråga i en ny loggfråga och kör den. Kom ihåg att ersätta platshållarvärdena inom hakparenteser med dina egna värden:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AccountName == "<account-name>"
| summarize count() by TlsVersion

Resultatet visar antalet begäranden som görs med varje version av TLS:

Skärmbild som visar resultatet av log analytics-frågan för att returnera TLS-versionen

Fråga loggade begäranden efter anroparens IP-adress och användaragenthuvud

Azure Storage-loggar i Azure Monitor innehåller även anroparens IP-adress och användarens agenthuvud som hjälper dig att utvärdera vilka klientprogram som har åtkomst till lagringskontot. Du kan analysera dessa värden för att avgöra om klientprogram måste uppdateras för att använda en nyare version av TLS, eller om det är acceptabelt att misslyckas med en klients begäran om den inte skickas med den lägsta TLS-versionen.

Om du vill ta reda på vilka klienter som har gjort begäranden med en version av TLS som är äldre än TLS 1.2 under de senaste sju dagarna klistrar du in följande fråga i en ny loggfråga och kör den. Kom ihåg att ersätta platshållarvärdena inom hakparenteser med dina egna värden:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AccountName == "<account-name>" and TlsVersion != "TLS 1.2"
| project TlsVersion, CallerIpAddress, UserAgentHeader

Åtgärda säkerhetsrisker med en lägsta version av TLS

När du är säker på att trafik från klienter som använder äldre versioner av TLS är minimal eller att det är acceptabelt att misslyckas med begäranden som görs med en äldre version av TLS, kan du börja tillämpa en lägsta TLS-version på ditt lagringskonto. Att kräva att klienter använder en lägsta version av TLS för att göra begäranden mot ett lagringskonto är en del av en strategi för att minimera säkerhetsriskerna för dina data.

Viktigt!

Om du använder en tjänst som ansluter till Azure Storage kontrollerar du att tjänsten använder rätt version av TLS för att skicka begäranden till Azure Storage innan du anger den lägsta version som krävs för ett lagringskonto.

Konfigurera den lägsta TLS-versionen för ett lagringskonto

Om du vill konfigurera den lägsta TLS-versionen för ett lagringskonto anger du MinimumTlsVersion-versionen för kontot. Den här egenskapen är tillgänglig för alla lagringskonton som skapas med Azure Resource Manager-distributionsmodellen. Mer information om Azure Resource Manager-distributionsmodellen finns i Översikt över lagringskonto.

Standardvärdet för egenskapen MinimumTlsVersion skiljer sig beroende på hur du ställer in den. När du skapar ett lagringskonto med Azure-portalen är den lägsta TLS-versionen inställd på 1.2 som standard. När du skapar ett lagringskonto med PowerShell, Azure CLI eller en Azure Resource Manager-mall anges egenskapen MinimumTlsVersion inte som standard och returnerar inte ett värde förrän du uttryckligen har angett det.

När egenskapen MinimumTlsVersion inte har angetts kan dess värde visas som antingen null eller en tom sträng, beroende på kontexten. Lagringskontot tillåter begäranden som skickas med TLS version 1.0 eller senare om egenskapen inte har angetts.

När du skapar ett lagringskonto med Azure-portalen är den lägsta TLS-versionen inställd på 1.2 som standard.

Följ dessa steg för att konfigurera den lägsta TLS-versionen för ett befintligt lagringskonto med Azure-portalen:

  1. Navigera till ditt lagringskonto i Azure-portalen.

  2. Under Inställningar väljer du Konfiguration.

  3. Under Lägsta TLS-version använder du listrutan för att välja den lägsta version av TLS som krävs för att komma åt data i det här lagringskontot.

    Skärmbild som visar hur du konfigurerar den lägsta versionen av TLS i Azure-portalen.

Kommentar

När du har uppdaterat den lägsta TLS-versionen för lagringskontot kan det ta upp till 30 sekunder innan ändringen är helt spridd.

För att konfigurera den lägsta TLS-versionen krävs version 2019-04-01 eller senare av Azure Storage-resursprovidern. Mer information finns i REST API för Azure Storage-resursprovider.

Kontrollera den lägsta TLS-versionen som krävs för flera konton

Om du vill kontrollera den lägsta TLS-version som krävs 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 den lägsta TLS-versionen för varje konto visas:

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

Testa den lägsta TLS-versionen från en klient

Om du vill testa att den lägsta TLS-version som krävs för ett lagringskonto förbjuder anrop som görs med en äldre version kan du konfigurera en klient att använda en äldre version av TLS. Mer information om hur du konfigurerar en klient för att använda en viss version av TLS finns i Konfigurera TLS (Transport Layer Security) för ett klientprogram.

När en klient får åtkomst till ett lagringskonto med en TLS-version som inte uppfyller den lägsta TLS-version som konfigurerats för kontot returnerar Azure Storage felkoden 400-fel (felaktig begäran) och ett meddelande som anger att den TLS-version som användes inte tillåts för att göra begäranden mot det här lagringskontot.

Kommentar

När du konfigurerar en lägsta TLS-version för ett lagringskonto tillämpas den lägsta versionen på programnivån. Verktyg som försöker fastställa TLS-stöd på protokolllagret kan returnera TLS-versioner utöver den lägsta version som krävs när de körs direkt mot lagringskontots slutpunkt.

Använda Azure Policy för att granska efterlevnad

Om du har ett stort antal lagringskonton kanske du vill utföra en granskning för att se till att alla konton har konfigurerats för den lägsta versionen av TLS som din organisation behöver. Om du vill granska en uppsättning lagringskonton för deras efterlevnad använder du Azure Policy. Azure Policy är en tjänst som du kan använda för att skapa, tilldela och hantera principer som tillämpar regler för Azure-resurser. Azure Policy hjälper dig att hålla resurserna kompatibla med företagets standarder och serviceavtal. Mer information finns i Översikt över Azure Policy.

Skapa en princip med en granskningseffekt

Azure Policy stöder effekter som avgör vad som händer när en principregel utvärderas mot en resurs. Granskningseffekten skapar en varning när en resurs inte är i kompatibilitet, men inte stoppar begäran. Mer information om effekter finns i Förstå Azure Policy-effekter.

Följ dessa steg för att skapa en princip med en granskningseffekt för den lägsta TLS-versionen med Azure-portalen:

  1. I Azure-portalen, gå till tjänsten Azure Policy.

  2. Under avsnittet Redigering väljer du Definitioner.

  3. Välj Lägg till principdefinition för att skapa en ny principdefinition.

  4. I fältet Definitionsplats väljer du knappen Mer för att ange var resursen för granskningsprinciper finns.

  5. Ange ett namn för principen. Du kan även ange en beskrivning och kategori.

  6. Under Principregel lägger du till följande principdefinition i avsnittet policyRule .

    {
      "policyRule": {
        "if": {
          "allOf": [
            {
              "field": "type",
              "equals": "Microsoft.Storage/storageAccounts"
            },
            {
                "anyOf": [
                  {
                    "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
                    "notEquals": "TLS1_2"
                  },
                  {
                    "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
                    "exists": "false"
                  }
                ]
            }
          ]
        },
        "then": {
          "effect": "audit"
        }
      }
    }
    
  7. Spara principen.

Tilldela principen

Tilldela sedan principen till en resurs. Omfånget för principen motsvarar den resursen och eventuella resurser under den. Mer information om principtilldelning finns i Azure Policy-tilldelningsstruktur.

Följ dessa steg för att tilldela principen till Azure-portalen:

  1. I Azure-portalen, gå till tjänsten Azure Policy.
  2. Under avsnittet Redigering väljer du Tilldelningar.
  3. Välj Tilldela princip för att skapa en ny principtilldelning.
  4. I fältet Omfång väljer du omfånget för principtilldelningen.
  5. I fältet Principdefinition väljer du knappen Mer och väljer sedan den princip som du definierade i föregående avsnitt i listan.
  6. Ange ett namn för principtilldelningen. Beskrivningen är valfri.
  7. Lämna Principtillämpning inställd på Aktiverad. Den här inställningen påverkar inte granskningsprincipen.
  8. Välj Granska + skapa för att skapa tilldelningen.

Visa efterlevnadsrapport

När du har tilldelat principen kan du visa efterlevnadsrapporten. Efterlevnadsrapporten för en granskningsprincip innehåller information om vilka lagringskonton som inte följer principen. Mer information finns i Hämta principefterlevnadsdata.

Det kan ta flera minuter innan efterlevnadsrapporten blir tillgänglig när principtilldelningen har skapats.

Följ dessa steg för att visa efterlevnadsrapporten i Azure-portalen:

  1. I Azure-portalen, gå till tjänsten Azure Policy.

  2. Välj Efterlevnad.

  3. Filtrera resultatet efter namnet på den principtilldelning som du skapade i föregående steg. Rapporten visar hur många resurser som inte följer principen.

  4. Du kan öka detaljnivån i rapporten för ytterligare information, inklusive en lista över lagringskonton som inte är kompatibla.

    Skärmbild som visar efterlevnadsrapport för granskningsprincip för lägsta TLS-version

Använda Azure Policy för att framtvinga den lägsta TLS-versionen

Azure Policy stöder molnstyrning genom att se till att Azure-resurser följer krav och standarder. Om du vill framtvinga ett lägsta TLS-versionskrav för lagringskontona i din organisation kan du skapa en princip som förhindrar skapandet av ett nytt lagringskonto som anger minimikravet för TLS till en äldre version av TLS än den som styrs av principen. Den här principen förhindrar också alla konfigurationsändringar i ett befintligt konto om den lägsta TLS-versionsinställningen för det kontot inte är kompatibel med principen.

Tvingande principen använder neka-effekten för att förhindra en begäran som skulle skapa eller ändra ett lagringskonto så att den lägsta TLS-versionen inte längre följer organisationens standarder. Mer information om effekter finns i Förstå Azure Policy-effekter.

Om du vill skapa en princip med en neka-effekt för en lägsta TLS-version som är mindre än TLS 1.2 följer du samma steg som beskrivs i Använda Azure Policy för att granska efterlevnad, men ange följande JSON i avsnittet policyRule i principdefinitionen:

{
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Storage/storageAccounts"
        },
        {
            "anyOf": [
              {
                "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
                "notEquals": "TLS1_2"
              },
              {
                "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
                "exists": "false"
              }
            ]
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  }
}

När du har skapat principen med neka-effekten och tilldelat den till ett omfång kan en användare inte skapa ett lagringskonto med en lägsta TLS-version som är äldre än 1.2. En användare kan inte heller göra några konfigurationsändringar i ett befintligt lagringskonto som för närvarande kräver en lägsta TLS-version som är äldre än 1.2. Om du försöker göra det resulterar det i ett fel. Den lägsta TLS-version som krävs för lagringskontot måste anges till 1.2 för att kunna fortsätta med att skapa eller konfigurera kontot.

Följande bild visar felet som uppstår om du försöker skapa ett lagringskonto med den lägsta TLS-versionen inställd på TLS 1.0 (standardvärdet för ett nytt konto) när en princip med en neka-effekt kräver att den lägsta TLS-versionen är inställd på TLS 1.2.

Skärmbild som visar felet som uppstår när ett lagringskonto skapas i strid med principen

Behörigheter som krävs för att kräva en lägsta version av TLS

Om du vill ange egenskapen MinimumTlsVersion 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 en användare ska kunna kräva en lägsta version av TLS 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.

Nätverksöverväganden

När en klient skickar en begäran till lagringskontot upprättar klienten först en anslutning till lagringskontots offentliga slutpunkt innan någon begäran bearbetas. Inställningen för lägsta TLS-version kontrolleras när anslutningen har upprättats. Om begäran använder en tidigare version av TLS än den som anges i inställningen fortsätter anslutningen att lyckas, men begäran misslyckas till slut. Mer information om offentliga slutpunkter för Azure Storage finns i Resurs-URI-syntax.

Nästa steg