Freigeben über


Verhindern von anonymen Lesezugriffen auf Blobdaten (Azure Resource Manager-Bereitstellungen)

Azure Blob Storage unterstützt optional den anonymen Lesezugriff auf Container und Blobs. Der anonyme Zugriff kann jedoch ein Sicherheitsrisiko darstellen. Für eine optimale Sicherheit wird empfohlen, den anonymen Zugriff zu deaktivieren. Wenn Sie den anonymen Zugriff nicht zulassen, können Sie Sicherheitsverletzungen bei den Daten verhindern, die durch den unerwünschten anonymen Zugriff verursacht werden.

Standardmäßig ist der anonyme Zugriff auf Ihre Blobdaten immer verboten. Die Standardkonfiguration für ein Azure Resource Manager-Speicherkonto verhindert, dass Benutzer anonymen Zugriff auf Container und Blobs in einem Speicherkonto konfigurieren. Diese Standardkonfiguration verbietet allen anonymen Zugriff auf ein Azure Resource Manager-Speicherkonto, unabhängig von der Zugriffseinstellung für einen einzelnen Container.

Wenn der anonyme Zugriff für das Speicherkonto unzulässig ist, lehnt Azure Storage alle anonymen Leseanforderungen für BLOB-Daten ab. Benutzer können den anonymen Zugriff für Container in diesem Konto nicht später konfigurieren. Container, die bereits für anonymen Zugriff konfiguriert wurden, akzeptieren keine anonymen Anforderungen mehr.

Warnung

Wenn ein Container für den anonymen Zugriff konfiguriert ist, kann jeder Client Daten in diesem Container lesen. Der anonyme Zugriff stellt ein potenzielles Sicherheitsrisiko dar. Wenn Ihr Szenario dies nicht erfordert, empfehlen wir Ihnen daher, ihn für das Speicherkonto zu deaktivieren.

Korrektur für Azure Resource Manager- und klassische Speicherkonten

In diesem Artikel wird beschrieben, wie Sie ein DRAG-Framework (Detection-Remediation-Audit-Governance) verwenden, um den anonymen Zugriff für Speicherkonten, die das Azure Resource Manager-Bereitstellungsmodell verwenden, kontinuierlich zu verwalten. Alle Universell V2-Speicherkonten, Premium-Blockblobspeicherkonten, Premium-Dateifreigabekonten und Blob Storage-Konten verwenden das Azure Resource Manager-Bereitstellungsmodell. Einige ältere Universell V1-Konten und Premium-Seitenblobkonten verwenden möglicherweise das klassische Bereitstellungsmodell.

Wenn Ihr Speicherkonto das klassische Bereitstellungsmodell verwendet, sollten Sie so schnell wie möglich zum Azure Resource Manager-Bereitstellungsmodell migrieren. Azure Storage-Konten, die das klassische Bereitstellungsmodell verwenden, werden am 31. August 2024 eingestellt. Weitere Informationen finden Sie unter Azure classic storage accounts will be retired on 31 August 2024 (Klassische Azure-Speicherkonten werden am 31. August 2024 eingestellt).

Wenn Sie Ihre klassischen Speicherkonten derzeit nicht migrieren können, sollten Sie den anonymen Zugriff auf diese Konten jetzt korrigieren. Informationen zum Korrigieren des anonymen Zugriffs für klassische Speicherkonten finden Sie unter Beheben des öffentlichen Lesezugriffs auf Blobdaten (klassische Bereitstellungen). Weitere Informationen zu Azure-Bereitstellungsmodellen finden Sie unter Resource Manager-Bereitstellung und klassische Bereitstellung.

Informationen zum anonymen Lesezugriff

Der anonyme Zugriff auf Ihre Daten ist standardmäßig immer unzulässig. Es gibt zwei Möglichkeiten, die Einstellungen für den anonymen Zugriff zu ändern:

  1. Einstellung für anonymen Zugriff für das Speicherkonto. Ein Azure Resource Manager-Speicherkonto bietet eine Einstellung, um anonymen Zugriff für das Konto zuzulassen oder zu verbieten. Microsoft empfiehlt, anonymen Zugriff für Ihre Speicherkonten für optimale Sicherheit zu verbieten.

    Wenn anonymer Zugriff auf Kontoebene zulässig ist, sind BLOB-Daten für anonymen Lesezugriff nicht verfügbar, es sei denn, der Benutzer führt den zusätzlichen Schritt aus, um die Einstellung für den anonymen Zugriff des Containers explizit zu konfigurieren.

  2. Konfigurieren der Einstellung für den anonymen Zugriff des Containers. Standardmäßig ist die Containereinstellung für den anoynmen Zugriff deaktiviert. Jede Anforderung an den Container oder dessen Daten muss also autorisiert werden. Ein Benutzer mit entsprechenden Berechtigungen kann die Containereinstellung für den anonymen Zugriff so ändern, dass anonymer Zugriff nur zugelassen wird, wenn dieser auch für das Speicherkonto aktiviert ist.

In der folgenden Tabelle wird zusammengefasst, wie sich diese beiden Einstellungen auf den anonymen Zugriff für einen Container auswirken.

Die anonyme Zugriffsebene für den Container ist auf Privat festgelegt (Standardeinstellung) Die anonyme Zugriffsebene für den Container ist auf Container festgelegt Die anonyme Zugriffsebene für den Container ist auf Blob festgelegt
Anonymer Zugriff wird für das Speicherkonto verweigert Kein anonymer Zugriff auf die Container im Speicherkonto. Kein anonymer Zugriff auf die Container im Speicherkonto. die Einstellung für das Speicherkonto überschreibt die Containereinstellung. Kein anonymer Zugriff auf die Container im Speicherkonto. die Einstellung für das Speicherkonto überschreibt die Containereinstellung.
Anonymer Zugriff wird für das Speicherkonto zugelassen Kein anonymer Zugriff auf diesen Container (Standardkonfiguration). Der anonyme Zugriff ist für diesen Container und dessen Blobs zulässig. Der anonyme Zugriff auf Blobs in diesem Container ist zulässig, jedoch nicht auf den Container selbst.

Wenn der anonyme Zugriff für ein Speicherkonto zulässig und für einen bestimmten Container konfiguriert ist, wird eine Anforderung zum Lesen eines Blobs in diesem Container, die ohne Autorisierungsheader übergeben wird, vom Dienst akzeptiert, und die Daten des Blobs werden in der Antwort zurückgegeben.

Erkennen anonymer Anforderungen von Clientanwendungen

Wenn Sie anonymen Lesezugriff für ein Speicherkonto verweigern, besteht die Gefahr, dass Anforderungen für Container und Blobs abgelehnt werden, die zurzeit für anonymen Zugriff konfiguriert sind. Durch Verweigerung des anonymen Zugriffs für ein Speicherkonto werden die Einstellungen für den anonymen Zugriff für einzelne Container in diesem Konto außer Kraft gesetzt. Wenn der anonyme Zugriff für das Speicherkonto verweigert wird, tritt bei künftigen anonymen Anforderungen für dieses Konto ein Fehler auf.

Wenn Sie die möglichen Auswirkungen einer Verweigerung des anonymen Zugriffs auf Clientanwendungen verstehen möchten, sollten Sie die Protokollierung und Metriken für dieses Konto aktivieren sowie Muster anonymer Anforderungen über einen Zeitraum analysieren. Verwenden Sie Metriken, um die Anzahl anonymer Anforderungen für das Speicherkonto zu ermitteln, und Protokolle, um zu ermitteln, auf welche Container anonym zugegriffen wird.

Überwachen anonymer Anforderungen mit dem Metrik-Explorer

Verwenden Sie den Azure-Metrik-Explorer im Azure-Portal, um anonyme Anforderungen für ein Speicherkonto nachzuverfolgen. Weitere Informationen zum Metrik-Explorer finden Sie unter Analysieren von Metriken mit dem Azure Monitor-Metrik-Explorer.

Gehen Sie wie folgt vor, um eine Metrik zur Nachverfolgung anonymer Anforderungen zu erstellen:

  1. Navigieren Sie zum Speicherkonto im Azure-Portal. Wählen Sie im Abschnitt Überwachung die Option Metriken aus.

  2. Wählen Sie Metrik hinzufügen aus. Geben Sie im Dialogfeld Metrik die folgenden Werte an:

    1. Behalten Sie im Bereichsfeld den Namen des Speicherkontos bei.
    2. Legen Sie Metriknamespace auf Blob fest. Von dieser Metrik werden nur Anforderungen für Blobspeicher gemeldet.
    3. Legen Sie das Feld Metrik auf Transaktionen fest.
    4. Legen Sie das Feld Aggregation auf Summe fest.

    Die neue Metrik liefert die Summe der Anzahl der Transaktionen für Blobspeicher in einem bestimmten Zeitraum. Die resultierende Metrik sieht wie folgt aus:

    Screenshot: Konfigurieren einer Metrik zum Summieren von Blobtransaktionen

  3. Wählen Sie als Nächstes die Schaltfläche Filter hinzufügen aus, um einen Filter für die Metrik für anonyme Anforderungen zu erstellen.

  4. Geben Sie im Dialogfeld Filter die folgenden Werte an:

    1. Legen Sie Eigenschaft auf Authentifizierung fest.
    2. Legen Sie das Feld Operator auf das Gleichheitszeichen (=) fest.
    3. Legen Sie das Feld Werte auf Anonym fest, indem Sie die Option in der Dropdownliste auswählen oder eingeben.
  5. Wählen Sie rechts oben das gewünschte Zeitintervall für die Metrik aus. Sie können auch angeben, wie präzise die Aggregation von Anforderungen sein soll. Hierzu können Intervalle zwischen einer Minute und einem Monat angegeben werden.

Nachdem Sie die Metrik konfiguriert haben, werden nach und nach anonyme Anforderungen im Diagramm angezeigt. Die folgende Abbildung zeigt aggregierte anonyme Anforderungen der letzten 30 Minuten.

Screenshot: Aggregierte anonyme Anforderungen für Blobspeicher

Sie können auch eine Warnungsregel konfigurieren, um benachrichtigt zu werden, wenn eine bestimmte Anzahl anonymer Anforderungen an Ihr Speicherkonto gerichtet wird. Weitere Informationen finden Sie unter Erstellen, Anzeigen und Verwalten von Metrikwarnungen mit Azure Monitor.

Analysieren von Protokollen zur Identifizierung von Containern, die anonyme Anforderungen erhalten

In Azure Storage-Protokollen werden Details zu Anforderungen für das Speicherkonto erfasst. Hierzu zählt auch die Information, wie eine Anforderung autorisiert wurde. Sie können die Protokolle analysieren, um zu ermitteln, von welchen Containern anonyme Anforderungen empfangen werden.

Wenn Sie Anforderungen für Ihr Azure Storage-Konto protokollieren möchten, um anonyme Anforderungen zu untersuchen, können Sie die Azure Storage-Protokollierung in Azure Monitor verwenden. Weitere Informationen finden Sie unter Überwachen von Azure Storage.

Die Azure Storage-Protokollierung in Azure Monitor unterstützt die Verwendung von Protokollabfragen für die Analyse von Protokolldaten. Für die Abfrage von Protokollen können Sie einen Azure Log Analytics-Arbeitsbereich verwenden. Weitere Informationen zu Protokollabfragen finden Sie unter Tutorial: Erste Schritte mit Log Analytics-Abfragen.

Erstellen einer Diagnoseeinstellung im Azure-Portal

Wenn Sie Azure Storage-Daten mit Azure Monitor protokollieren und mit Azure Log Analytics analysieren möchten, müssen Sie zunächst eine Diagnoseeinstellung erstellen, die angibt, welche Anforderungstypen und für welche Speicherdienste Daten protokolliert werden sollen. Führen Sie zum Erstellen einer Diagnoseeinstellung im Azure-Portal die folgenden Schritte aus:

  1. Erstellen Sie in dem Abonnement, das Ihr Azure Storage-Konto enthält, einen neuen Log Analytics-Arbeitsbereich. Nachdem Sie die Protokollierung für Ihr Speicherkonto konfiguriert haben, sind die Protokolle im Log Analytics-Arbeitsbereich verfügbar. Weitere Informationen finden Sie unter Erstellen eines Log Analytics-Arbeitsbereichs im Azure-Portal.

  2. Navigieren Sie zum Speicherkonto im Azure-Portal.

  3. Wählen Sie im Abschnitt Überwachung die Option Diagnoseeinstellungen aus.

  4. Wählen Sie Blob aus, um Anforderungen für Blobspeicher zu protokollieren.

  5. Klicken Sie auf Diagnoseeinstellung hinzufügen.

  6. Geben Sie einen Namen für die Diagnoseeinstellung an.

  7. Wählen Sie unter Kategoriedetails im Abschnitt Protokoll aus, welche Arten von Anforderungen protokolliert werden sollen. Da es sich bei anonymen Anforderungen um Leseanforderungen handelt, wählen Sie StorageRead aus, um anonyme Anforderungen zu erfassen.

  8. Wählen Sie unter Zieldetails die Option An Log Analytics senden aus. Wählen Sie Ihr Abonnement und den zuvor erstellten Log Analytics-Arbeitsbereich aus, wie in der folgenden Abbildung zu sehen:

    Screenshot: Erstellen einer Diagnoseeinstellung für die Protokollierung von Anforderungen

Nachdem Sie die Diagnoseeinstellung erstellt haben, werden Anforderungen für das Speicherkonto gemäß dieser Einstellung protokolliert. Weitere Informationen finden Sie unter Erstellen von Diagnoseeinstellungen zum Senden von Plattformprotokollen und Metriken an verschiedene Ziele.

Eine Referenz der Felder, die in Azure Storage-Protokollen in Azure Monitor verfügbar sind, finden Sie unter Ressourcenprotokolle.

Abfragen anonymer Anforderungen in Protokollen

Azure Storage-Protokolle in Azure Monitor enthalten die Art der Autorisierung, die bei einer Anforderung für ein Speicherkonto verwendet wurde. Filtern Sie in Ihrer Protokollabfrage nach der Eigenschaft AuthenticationType, um anonyme Anforderungen anzuzeigen.

Wenn Sie Protokolle für anonyme Blobspeicheranforderungen der letzten sieben Tage abrufen möchten, öffnen Sie Ihren Log Analytics-Arbeitsbereich. Fügen Sie dann die folgende Abfrage in eine neue Protokollabfrage ein, und führen Sie sie aus:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AuthenticationType == "Anonymous"
| project TimeGenerated, AccountName, AuthenticationType, Uri

Sie können auch eine auf dieser Abfrage basierende Warnungsregel konfigurieren, um über anonyme Anforderungen informiert zu werden. Weitere Informationen finden Sie unter Erstellen, Anzeigen und Verwalten von Protokollwarnungen mithilfe von Azure Monitor.

Antworten auf anonyme Anforderungen

Wenn Blob Storage eine anonyme Anforderung empfängt, ist diese Anforderung erfolgreich, wenn alle folgenden Bedingungen erfüllt sind:

  • Anonymer Zugriff wird für das Speicherkonto zugelassen.
  • Der Ziel-Container ist so konfiguriert, dass anonymer Zugriff zulässig ist.
  • Die Anforderung dient dem Lesezugriff.

Wenn eine dieser Bedingungen nicht erfüllt ist, schlägt die Anforderung fehl. Der Antwortcode bei einem Fehler hängt davon ab, ob die anonyme Anforderung mit einer Version des Diensts durchgeführt wurde, die die Bearer-Aufforderung unterstützt. Die Bearer-Aufforderung wird von den Dienstversionen 2019-12-12 und höher unterstützt:

  • Wenn die anonyme Anforderung mit einer Dienstversion durchgeführt wurde, die die Bearer-Aufforderung unterstützt, gibt der Dienst den Fehlercode 401 (Nicht autorisiert) zurück.
  • Wenn die anonyme Anforderung mit einer Dienstversion durchgeführt wurde, die die Bearer-Aufforderung nicht unterstützt, und anonymer Zugriff für das Speicherkonto nicht zulässig ist, gibt der Dienst den Fehlercode 409 (Konflikt) zurück.
  • Wenn die anonyme Anforderung mit einer Dienstversion durchgeführt wurde, die die Bearer-Aufforderung nicht unterstützt, und anonymer Zugriff für das Speicherkonto zulässig ist, gibt der Dienst den Fehlercode 404 (Nicht gefunden) zurück.

Weitere Informationen zur Bearer-Aufforderung finden Sie unter Bearer-Aufforderung.

Korrigieren des anonymen Zugriffs für das Speicherkonto

Nachdem Sie anonyme Anforderungen an Container und Blobs in Ihrem Speicherkonto ausgewertet haben, können Sie Maßnahmen ergreifen, um den Zugriff für das gesamte Konto zu korrigieren, indem Sie die AllowBlobPublicAccess-Eigenschaft des Kontos auf False festlegen.

Durch die Einstellung für den anonymen Zugriff für ein Speicherkonto werden die individuellen Einstellungen für Container in diesem Konto überschrieben. Wenn Sie den anonymen Zugriff für ein Speicherkonto verweigern, kann auf Container, die für anonymen Zugriff konfiguriert wurden, nicht mehr anonym zugegriffen werden. Wenn Sie den anonymen Zugriff für das Konto nicht zugelassen haben, müssen Sie nicht auch noch den anonymen Zugriff für einzelne Container deaktivieren.

Falls in Ihrem Szenario bestimmte Container für den anonymen Zugriff verfügbar sein müssen, sollten Sie diese Container und die zugehörigen Blobs in Speicherkonten verschieben, die für anonymen Zugriff reserviert sind. Anschließend können Sie den anonymen Zugriff für alle anderen Speicherkonten verweigern.

Das Korrigieren des anonymen Blobzugriffs erfordert Version 2019-04-01 oder höher des Azure Storage-Ressourcenanbieters. Weitere Informationen finden Sie unter REST-API des Azure Storage-Ressourcenanbieters.

Berechtigungen zum Aufheben des anonymen Zugriffs

Zum Festlegen der Eigenschaft AllowBlobPublicAccess für das Speicherkonto muss ein Benutzer Berechtigungen zum Erstellen und Verwalten von Speicherkonten haben. Azure RBAC-Rollen (Role-Based Access Control, rollenbasierte Zugriffssteuerung), die diese Berechtigungen bieten, enthalten die Aktion Microsoft.Storage/storageAccounts/write. In diese Aktion sind folgende Rollen integriert:

Rollenzuweisungen müssen auf die Ebene des Speicherkontos oder höher eingeschränkt werden, damit Benutzer den anonymen Zugriff für das Speicherkonto zulassen oder aufheben dürfen. Weitere Informationen zum Rollenbereich finden Sie unter Grundlegendes zum Bereich für Azure RBAC.

Beschränken Sie die Zuweisung dieser Rollen unbedingt auf diejenigen Administratorbenutzer*innen, denen es möglich sein muss, ein Speicherkonto zu erstellen oder dessen Eigenschaften zu aktualisieren. Verwenden Sie das Prinzip der geringsten Rechte, um sicherzustellen, dass Benutzer die geringsten Berechtigungen haben, die sie zum Ausführen ihrer Aufgaben benötigen. Weitere Informationen zum Verwalten des Zugriffs mit Azure RBAC finden Sie unter Bewährte Methoden für Azure RBAC.

Diese Rollen bieten keinen Zugriff auf Daten in einem Speicherkonto über Microsoft Entra ID. Sie enthalten jedoch die Aktion Microsoft.Storage/storageAccounts/listkeys/action, die Zugriff auf die Kontozugriffsschlüssel gewährt. Bei dieser Berechtigung kann ein Benutzer mithilfe der Kontozugriffsschlüssel auf alle Daten in einem Speicherkonto zuzugreifen.

Die Aktion Microsoft.Storage/storageAccounts/listkeys selbst gewährt Datenzugriff über die Kontoschlüssel, gewährt aber Benutzenden nicht die Möglichkeit, die Eigenschaft AllowBlobPublicAccess für ein Speicherkonto zu ändern. Für Benutzende, die auf Daten in Ihrem Speicherkonto zugreifen müssen, die Konfiguration des Speicherkontos aber nicht ändern sollen, sollten Sie Rollen wie Mitwirkender an Speicherblobdaten, Storage-Blobdatenleser oder Lese- und Datenzugriff zuweisen.

Hinweis

Die zu „Administrator für klassisches Abonnement“ gehörigen Rollen „Dienstadministrator“ und „Co-Administrator“ schließen die Entsprechung der Azure Resource Manager-Rolle Besitzer ein. Da die Rolle Besitzer alle Aktionen einschließt, können Benutzer*innen mit einer dieser administrativen Rollen auch Speicherkonten erstellen und die Kontokonfiguration verwalten. Weitere Informationen finden Sie unter Azure-Rollen, Microsoft Entra-Rollen und Administratorrollen für klassische Abonnements.

Festlegen der AllowBlobPublicAccess-Eigenschaft des Speicherkontos auf FALSE

Legen Sie die AllowBlobPublicAccess-Eigenschaft des Kontos auf False fest, um den anonymen Zugriff für ein Speicherkonto zu verweigern.

Wichtig

Durch Verweigerung des anonymen Zugriffs für ein Speicherkonto werden die Einstellungen für den anonymen Zugriff für alle Container in diesem Konto außer Kraft gesetzt. Wenn der anonyme Zugriff für das Speicherkonto verweigert wird, tritt bei künftigen anonymen Anforderungen für dieses Konto ein Fehler auf. Bevor Sie diese Einstellung ändern, sollten Sie die Auswirkungen auf Clientanwendungen kennen, die möglicherweise anonym auf Daten in Ihrem Speicherkonto zugreifen, indem Sie die unter Erkennen anonymer Anforderungen von Clientanwendungen beschriebenen Schritte ausführen.

Führen Sie die folgenden Schritte aus, um den anonymen Zugriff für ein Speicherkonto im Azure-Portal zu verweigern:

  1. Navigieren Sie zum Speicherkonto im Azure-Portal.

  2. Suchen Sie unter Einstellungen die Einstellung Konfiguration.

  3. Legen Sie Anonymen Blob-Zugriff zulassen auf Deaktiviert fest.

    Screenshot des Verweigerns des anonymen Zugriffs auf ein Konto

Hinweis

Die Verweigerung des anonymen Zugriffs auf ein Speicherkonto wirkt sich nicht auf statische Websites aus, die in diesem Speicherkonto gehostet werden. Auf den Container $web kann immer öffentlich zugegriffen werden.

Nachdem Sie die Einstellung für den anonymen Zugriff für das Speicherkonto aktualisiert haben, kann es bis zu 30 Sekunden dauern, bis die Änderung vollständig weitergegeben wurde.

Beispielskript für die Massenkorrektur

Das folgende PowerShell-Beispielskript wird für alle Azure Resource Manager-Speicherkonten in einem Abonnement ausgeführt und legt die AllowBlobPublicAccess-Eigenschaft für diese Konten auf False fest.

<#
.SYNOPSIS
Finds storage accounts in a subscription where AllowBlobPublicAccess is True or null.

.DESCRIPTION
This script runs against all Azure Resource Manager storage accounts in a subscription
and sets the "AllowBlobPublicAccess" property to False.

Standard operation will enumerate all accounts where the setting is enabled and allow the 
user to decide whether or not to disable the setting.  

Classic storage accounts will require individual adjustment of containers to remove public
access, and will not be affected by this script.

Run with BypassConfirmation=$true if you wish to disallow public access on all Azure Resource Manager 
storage accounts without individual confirmation.

You will need access to the subscription to run the script.

.PARAMETER BypassConformation
Set this to $true to skip confirmation of changes. Not recommended.

.PARAMETER SubscriptionId
The subscription ID of the subscription to check.

.PARAMETER ReadOnly
Set this parameter so that the script makes no changes to any subscriptions and only reports affect accounts.

.PARAMETER NoSignin
Set this parameter so that no sign-in occurs -- you must sign in first. Use this if you're invoking this script repeatedly for multiple subscriptions and want to avoid being prompted to sign-in for each subscription.

.OUTPUTS
This command produces only STDOUT output (not standard PowerShell) with information about affect accounts.
#>
param(
    [boolean]$BypassConfirmation=$false,
    [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName='SubscriptionId')]
    [String] $SubscriptionId,
    [switch] $ReadOnly, # Use this if you don't want to make changes, but want to get information about affected accounts
    [switch] $NoSignin # Use this if you are already signed in and don't want to be prompted again
)

begin {
    if ( ! $NoSignin.IsPresent ) {
        login-azaccount | out-null
    }
}

process {
    try {
        select-azsubscription -subscriptionid $SubscriptionId -erroraction stop | out-null
    } catch {
        write-error "Unable to access select subscription '$SubscriptionId' as the signed in user -- ensure that you have access to this subscription." -erroraction stop
    }

    foreach ($account in Get-AzStorageAccount) 
    {
        if($account.AllowBlobPublicAccess -eq $null -or $account.AllowBlobPublicAccess -eq $true)
        {
            Write-host "Account:" $account.StorageAccountName " isn't disallowing public access."

            if ( ! $ReadOnly.IsPresent ) {
                if(!$BypassConfirmation)
                {
                    $confirmation = Read-Host "Do you wish to disallow public access? [y/n]"
                }
                if($BypassConfirmation -or $confirmation -eq 'y')
                {
                    try
                    {
                        set-AzStorageAccount -Name $account.StorageAccountName -ResourceGroupName $account.ResourceGroupName -AllowBlobPublicAccess $false
                        Write-Host "Success!"
                    }
                    catch
                    {
                        Write-output $_
                    }
                }
            }
        }
        elseif($account.AllowBlobPublicAccess -eq $false)
        {
            Write-Host "Account:" $account.StorageAccountName " has public access disabled, no action required."
        }
        else
        {
            Write-Host "Account:" $account.StorageAccountName ". Error, please manually investigate."
        }
    }
}

end {
    Write-Host "Script complete"
}

Überprüfen der Einstellung für anonymen Zugriff auf mehrere Konten

Wenn Sie die Einstellung für den anonymen Zugriff für eine Gruppe von Speicherkonten mit optimaler Leistung überprüfen möchten, können Sie den Azure Resource Graph-Explorer im Azure-Portal verwenden. Weitere Informationen zur Verwendung des Resource Graph-Explorers finden Sie unter Schnellstart: Ausführen Ihrer ersten Resource Graph-Abfrage mithilfe des Azure Resource Graph-Explorers.

Wenn Sie die folgende Abfrage im Resource Graph-Explorer ausführen, wird eine Liste der Speicherkonten zurückgegeben und für jedes Konto die Einstellung für den anonymen Zugriff angezeigt:

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

Die folgende Abbildung zeigt die Ergebnisse einer abonnementweiten Abfrage. Bei Speicherkonten, für die die Eigenschaft AllowBlobPublicAccess explizit festgelegt wurde, wird in den Ergebnissen true oder false angegeben. Wurde die Eigenschaft AllowBlobPublicAccess für ein Speicherkonto nicht festgelegt, wird in den Abfrageergebnissen ein Leer- (oder NULL-Wert) angegeben.

Screenshot der Abfrageergebnisse für die Einstellung für den anonymen Zugriff auf Speicherkonten

Verwenden von Azure Policy zur Überwachung der Konformität

Wenn Sie über eine große Anzahl von Speicherkonten verfügen, möchten Sie vielleicht eine Überwachung durchführen, um sicherzustellen, dass diese Konten so konfiguriert sind, dass der anonyme Zugriff verhindert wird. Verwenden Sie Azure Policy, um eine Reihe von Speicherkonten auf ihre Konformität zu überwachen. Azure Policy ist ein Dienst, mit dem Sie Richtlinien zum Anwenden von Regeln auf Azure-Ressourcen erstellen, zuweisen und verwalten können. Azure Policy hilft Ihnen, die Konformität dieser Ressourcen mit Ihren Unternehmensstandards und Vereinbarungen zum Servicelevel sicherzustellen. Weitere Informationen finden Sie in der Übersicht über Azure Policy.

Erstellen einer Richtlinie mit der Auswirkung „Audit“

Azure Policy unterstützt Auswirkungen, die bestimmen, was passiert, wenn eine Richtlinie anhand einer Ressource ausgewertet wird. Die Auswirkung „Audit“ erzeugt eine Warnung, wenn eine Ressource nicht konform ist, beendet aber die Anforderung nicht. Weitere Informationen zu Auswirkungen finden Sie unter Grundlegendes zu Azure Policy-Auswirkungen.

Führen Sie die folgenden Schritte aus, um eine Richtlinie mit der Auswirkung „Audit“ für die Einstellung für den anonymen Zugriff für ein Speicherkonto mit dem Azure-Portal zu erstellen:

  1. Navigieren Sie im Azure-Portal zum Azure Policy-Dienst.

  2. Wählen Sie unter dem Abschnitt Autorisierung die Option Definitionen aus.

  3. Wählen Sie Richtliniendefinition hinzufügen aus, um eine neue Richtliniendefinition zu erstellen.

  4. Wählen Sie für das Feld Definitionsspeicherort die Schaltfläche Mehr aus, um anzugeben, wo sich die Ressource für die Überwachungsrichtlinie befindet.

  5. Geben Sie einen Namen für die Richtlinie an. Sie können optional eine Beschreibung und eine Kategorie angeben.

  6. Fügen Sie unter Richtlinienregel die folgende Richtliniendefinition zum Abschnitt policyRule hinzu.

    {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
          },
          {
            "not": {
              "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
              "equals": "false"
            }
          }
        ]
      },
      "then": {
        "effect": "audit"
      }
    }
    
  7. Speichern Sie die Richtlinie.

Zuweisen der Richtlinie

Anschließend weisen Sie die Richtlinie einer Ressource zu. Der Umfang der Richtlinie entspricht der Ressource und den darunter liegenden Ressourcen. Weitere Informationen zur Zuweisung von Richtlinien finden Sie unter Azure Policy-Zuweisungsstruktur.

Führen Sie die folgenden Schritte aus, um die Richtlinie dem Azure-Portal zuzuweisen:

  1. Navigieren Sie im Azure-Portal zum Azure Policy-Dienst.
  2. Wählen Sie unter dem Abschnitt Autorisierung die Option Zuweisungen aus.
  3. Wählen Sie Richtlinie zuweisen aus, um eine neue Richtlinienzuweisung zu erstellen.
  4. Wählen Sie für das Feld Umfang den Umfang der Richtlinienzuweisung aus.
  5. Wählen Sie für das Feld Richtliniendefinition die Schaltfläche Mehr und dann die im vorherigen Abschnitt definierte Richtlinie aus der Liste aus.
  6. Geben Sie einen Namen für die Richtlinienzuweisung an. Die Angabe einer Beschreibung ist optional.
  7. Behalten Sie für Richtlinienerzwingung die Einstellung Aktiviert bei. Diese Einstellung hat keine Auswirkung auf die Überwachungsrichtlinie.
  8. Klicken Sie zum Erstellen der Zuweisung auf Überprüfen + erstellen.

Anzeigen des Konformitätsberichts

Nachdem Sie die Richtlinie zugewiesen haben, können Sie den Konformitätsbericht anzeigen. Der Konformitätsbericht für eine Überwachungsrichtlinie gibt Auskunft darüber, welche Speicherkonten nicht mit der Richtlinie konform sind. Weitere Informationen finden Sie unter Abrufen von Daten zur Richtlinienkonformität.

Es kann einige Minuten dauern, bis der Konformitätsbericht nach Erstellung der Richtlinienzuweisung verfügbar ist.

Führen Sie die folgenden Schritte aus, um den Konformitätsbericht im Azure-Portal anzuzeigen:

  1. Navigieren Sie im Azure-Portal zum Azure Policy-Dienst.

  2. Wählen Sie Compliance aus.

  3. Filtern Sie die Ergebnisse nach dem Namen der Richtlinienzuweisung, die Sie im vorherigen Schritt erstellt haben. Der Bericht zeigt, wie viele Ressourcen nicht mit der Richtlinie konform sind.

  4. Sie können einen Drilldown in den Bericht ausführen, um weitere Details anzuzeigen, einschließlich einer Liste von Speicherkonten, die nicht konform sind.

    Screenshot des Konformitätsberichts für die Überwachungsrichtlinie für anonymen Zugriff

Erzwingen des autorisierten Zugriffs mit Azure Policy

Azure Policy unterstützt die Cloudgovernance, indem es sicherstellt, dass Azure-Ressourcen den Anforderungen und Standards entsprechen. Um sicherzustellen, dass Speicherkonten in Ihrer Organisation nur autorisierte Anforderungen zulassen, können Sie eine Richtlinie erstellen, die die Erstellung eines neuen Speicherkontos mit einer Einstellung für den anonymen Zugriff verhindert, die anonyme Anforderungen zulässt. Diese Richtlinie verhindert auch alle Konfigurationsänderungen an einem bestehenden Konto, wenn die Einstellung für den anonymen Zugriff für dieses Konto nicht mit der Richtlinie konform ist.

Die Erzwingungsrichtlinie nutzt die Auswirkung „Deny“, um eine Anforderung zu verhindern, die ein Speicherkonto erstellen oder ändern würde, um den anonymen Zugriff zu ermöglichen. Weitere Informationen zu Auswirkungen finden Sie unter Grundlegendes zu Azure Policy-Auswirkungen.

Um eine Richtlinie mit der Auswirkung „Deny“ für eine Einstellung für den anonymen Zugriff zu erstellen, die anonyme Anforderungen zulässt, befolgen Sie dieselben Schritte, die unter Verwenden von Azure Policy zur Überwachung der Konformität beschrieben sind, aber stellen Sie den folgenden JSON-Code im Abschnitt policyRule der Richtliniendefinition zur Verfügung:

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Storage/storageAccounts"
      },
      {
        "not": {
          "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
          "equals": "false"
        }
      }
    ]
  },
  "then": {
    "effect": "deny"
  }
}

Nachdem Sie die Richtlinie mit der Auswirkung „Deny“ erstellt und einem Bereich zugewiesen haben, kann ein Benutzender kein Speicherkonto erstellen, das den anonymen Zugriff gestattet. Außerdem kann ein Benutzer keine Konfigurationsänderungen an einem vorhandenen Speicherkonto vornehmen, das zurzeit den anonymen Zugriff zulässt. Ein entsprechender Versuch führt zu einem Fehler. Die Einstellung für den anonymen Zugriff für das Speicherkonto muss auf false (falsch) festgelegt werden, um mit der Kontoerstellung oder -konfiguration fortzufahren.

Die folgende Abbildung zeigt den Fehler, der beim Erstellen eines Speicherkontos auftritt, das den anonymen Zugriff erlaubt, wenn eine Richtlinie mit der Auswirkung „Deny“ erfordert, dass der anonyme Zugriff nicht gestattet wird.

Screenshot mit dem Fehler, der beim Erstellen eines Speicherkontos bei einem Verstoß gegen die Richtlinie auftritt

Nächste Schritte