Übung: Einschränken des Zugriffs auf Azure Storage mithilfe von Dienstendpunkten

Abgeschlossen

Als Lösungsarchitekt planen Sie die Migration von sensiblen Dateien mit technischen Diagrammen zu Azure Storage. Auf diese Dateien soll nur über Computer im Unternehmensnetzwerk zugegriffen werden. Sie möchten einen VNET-Dienstendpunkt für Azure Storage erstellen, um die Konnektivität mit Ihren Speicherkonten zu sichern.

In dieser Lerneinheit erstellen Sie einen Dienstendpunkt und verwenden Netzwerkregeln, um den Zugriff auf Azure Storage einzuschränken. Sie erstellen einen VNET-Dienstendpunkt für Azure Storage im Subnetz Databases. Anschließend überprüfen Sie, ob Ihre DataServer-VM auf Azure Storage zugreifen kann. Schließlich stellen Sie sicher, dass die AppServer-VM, die sich in einem anderen Subnetz befindet, nicht auf Azure Storage zugreifen kann.

Diagramm des Dienstendpunkts und der Regeln des Übungsszenarios

Hinzufügen von Regeln zur Netzwerksicherheitsgruppe

Stellen Sie sicher, dass jegliche Kommunikation mit Azure Storage über den Dienstendpunkt verläuft. Fügen Sie Ausgangsregeln hinzu, um den Zugriff auf den Azure Storage-Dienst zuzulassen, aber jeglichen anderen Internetdatenverkehr zu verweigern.

  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um eine Ausgangsregel zum Gewähren des Zugriffs auf Azure Storage hinzuzufügen:

    az network nsg rule create \
        --resource-group $rg \
        --nsg-name ERP-SERVERS-NSG \
        --name Allow_Storage \
        --priority 190 \
        --direction Outbound \
        --source-address-prefixes "VirtualNetwork" \
        --source-port-ranges '*' \
        --destination-address-prefixes "Storage" \
        --destination-port-ranges '*' \
        --access Allow \
        --protocol '*' \
        --description "Allow access to Azure Storage"
    
  2. Führen Sie den folgenden Befehl in Cloud Shell aus, um eine Ausgangsregel zum Verweigern jeglichen Internetzugriffs hinzuzufügen:

    az network nsg rule create \
        --resource-group $rg \
        --nsg-name ERP-SERVERS-NSG \
        --name Deny_Internet \
        --priority 200 \
        --direction Outbound \
        --source-address-prefixes "VirtualNetwork" \
        --source-port-ranges '*' \
        --destination-address-prefixes "Internet" \
        --destination-port-ranges '*' \
        --access Deny \
        --protocol '*' \
        --description "Deny access to Internet."
    

Sie sollten nun über die folgenden Regeln in ERP-SERVERS-NSG verfügen:

Regelname Richtung Priorität Zweck
AllowSSHRule Eingehend 100 Eingang von SSH zulassen
httpRule Eingehend 150 Datenverkehr von DataServer zu AppServer über Port 80 verweigern
Allow_Storage Ausgehend 190 Zugriff auf Azure Storage zulassen
Deny_Internet Ausgehend 200 Zugriff auf das Internet über das VNET verweigern

Mit diesen Regeln sollten sowohl AppServer als auch DataServer über Zugriff auf Azure Storage verfügen.

Konfigurieren des Speicherkontos und der Dateifreigabe

In diesem Schritt erstellen Sie ein neues Speicherkonto. Dann fügen Sie diesem Konto eine Azure-Dateifreigabe hinzu. In dieser Freigabe werden Sie die technischen Diagramme speichern.

  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um ein Speicherkonto für technische Dokumente zu erstellen:

    STORAGEACCT=$(az storage account create \
                    --resource-group $rg \
                    --name engineeringdocs$RANDOM \
                    --sku Standard_LRS \
                    --query "name" | tr -d '"')
    
  2. Führen Sie den folgenden Befehl in Cloud Shell aus, um den Primärschlüssel für Ihren Speicher in einer Variable zu speichern:

    STORAGEKEY=$(az storage account keys list \
                    --resource-group $rg \
                    --account-name $STORAGEACCT \
                    --query "[0].value" | tr -d '"')
    
  3. Führen Sie den folgenden Befehl in Cloud Shell aus, um eine Azure-Dateifreigabe namens erp-data-share zu erstellen:

    az storage share create \
        --account-name $STORAGEACCT \
        --account-key $STORAGEKEY \
        --name "erp-data-share"
    

Aktivieren des Dienstendpunkts

Sie müssen nun das Speicherkonto konfigurieren, damit auf dieses nur über Datenbankserver zugegriffen werden kann, indem Sie den Speicherendpunkt zum Subnetz Databases zuweisen. Sie müssen dem Speicherkonto eine Sicherheitsregel hinzufügen.

  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um dem Subnetz den Endpunkt Microsoft.Storage zuzuweisen:

    az network vnet subnet update \
        --vnet-name ERP-servers \
        --resource-group $rg \
        --name Databases \
        --service-endpoints Microsoft.Storage
    
  2. Führen Sie den folgenden Befehl in Cloud Shell aus, um jeglichen Zugriff zum Ändern der Standardaktion in Deny zu verweigern. Nachdem der Netzwerkzugriff verweigert wurde, kann auf das Speicherkonto aus keinem Netzwerk mehr zugegriffen werden.

    az storage account update \
        --resource-group $rg \
        --name $STORAGEACCT \
        --default-action Deny
    
  3. Führen Sie den folgenden Befehl in Cloud Shell aus, um den Zugriff auf das Speicherkonto einzuschränken. Speicherkonten sind standardmäßig so konfiguriert, dass sie jeglichen Datenverkehr akzeptieren. Sie möchten jedoch, dass nur Datenverkehr aus dem Subnetz Databases auf den Speicher zugreifen kann.

    az storage account network-rule add \
        --resource-group $rg \
        --account-name $STORAGEACCT \
        --vnet-name ERP-servers \
        --subnet Databases
    

Testen des Zugriffs auf Speicherressourcen

In diesem Schritt stellen Sie eine Verbindung zwischen Ihren beiden Servern her und stellen sicher, dass nur DataServer auf die Azure-Dateifreigabe im Speicherkonto zugreifen kann.

  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um die öffentlichen IP-Adressen von AppServer und DataServer in Variablen zu speichern:

    APPSERVERIP="$(az vm list-ip-addresses \
                        --resource-group $rg \
                        --name AppServer \
                        --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
                        --output tsv)"
    
    DATASERVERIP="$(az vm list-ip-addresses \
                        --resource-group $rg \
                        --name DataServer \
                        --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
                        --output tsv)"
    
  2. Führen Sie den folgenden Befehl in Cloud Shell aus, um eine Verbindung mit Ihrer AppServer-VM herzustellen und um zu versuchen, die Azure-Dateifreigabe bereitzustellen:

    ssh -t azureuser@$APPSERVERIP \
        "mkdir azureshare; \
        sudo mount -t cifs //$STORAGEACCT.file.core.windows.net/erp-data-share azureshare \
        -o vers=3.0,username=$STORAGEACCT,password=$STORAGEKEY,dir_mode=0777,file_mode=0777,sec=ntlmssp; findmnt \
        -t cifs; exit; bash"
    
  3. Geben Sie das Kennwort ein, das Sie beim Erstellen der VM festgelegt haben.

  4. Die Antwort sollte eine mount error-Meldung enthalten. Diese Konnektivität ist nicht zulässig, da das Subnetz Applications keinen Dienstendpunkt für das Speicherkonto enthält.

  5. Führen Sie den folgenden Befehl in Cloud Shell aus, um eine Verbindung mit Ihrer DataServer-VM herzustellen und um zu versuchen, die Azure-Dateifreigabe bereitzustellen:

    ssh -t azureuser@$DATASERVERIP \
        "mkdir azureshare; \
        sudo mount -t cifs //$STORAGEACCT.file.core.windows.net/erp-data-share azureshare \
        -o vers=3.0,username=$STORAGEACCT,password=$STORAGEKEY,dir_mode=0777,file_mode=0777,sec=ntlmssp;findmnt \
        -t cifs; exit; bash"
    
  6. Geben Sie das Kennwort ein, das Sie beim Erstellen der VM festgelegt haben.

  7. Die Bereitstellung sollte erfolgreich durchgeführt werden, und die Antwort sollte Informationen zum Bereitstellungspunkt enthalten. Dieser Schritt wird zugelassen, weil Sie den Dienstendpunkt für das Speicherkonto im Subnetz Databases erstellt haben.

Sie haben nun überprüft, ob DataServer auf den Speicher zugreifen kann, indem Sie den Speicherdienstendpunkt im Subnetz Databases verwendet haben. Außerdem haben Sie sichergestellt, dass AppServer nicht auf den Speicher zugreifen kann, da dieser Server sich in einem anderen Subnetz befindet und nicht über den Zugriff auf den VNET-Dienstendpunkt verfügt.