Ćwiczenie — Ograniczanie dostępu do usługi Azure Storage za pomocą punktów końcowych usługi

Ukończone

Jako architekt rozwiązań planujesz przeniesienie poufnych plików schematów technicznych do usługi Azure Storage. Pliki te muszą być dostępne tylko z komputerów w sieci firmowej. Chcesz utworzyć punkt końcowy usługi sieci wirtualnej dla usługi Azure Storage, aby zabezpieczyć połączenia z kontami magazynu.

W tej lekcji utworzysz punkt końcowy usługi i użyjesz reguł sieci, aby ograniczyć dostęp do usługi Azure Storage. Utworzysz punkt końcowy usługi dla sieci wirtualnej dla usługi Azure Storage w podsieci Databases. Następnie sprawdzisz, czy maszyna wirtualna DataServer może uzyskać dostęp do usługi Azure Storage. Na koniec sprawdzisz, czy maszyna wirtualna AppServer, która znajduje się w innej podsieci, nie może uzyskać dostępu do magazynu.

Diagram przedstawiający ćwiczenie dotyczące punktu końcowego i reguł usługi scenariusza.

Dodawanie reguł do sieciowej grupy zabezpieczeń

W tym miejscu upewnisz się, że komunikacja z usługą Azure Storage przechodzi przez punkt końcowy usługi. Dodasz reguły ruchu wychodzącego, aby zezwolić na dostęp do usługi Storage, ale odmówić całego innego ruchu internetowego.

  1. Aby utworzyć regułę ruchu wychodzącego, aby zezwolić na dostęp do magazynu, uruchom następujące polecenie w usłudze Cloud Shell:

    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. Aby utworzyć regułę ruchu wychodzącego w celu odmowy całego dostępu do Internetu, uruchom następujące polecenie w usłudze Cloud Shell:

    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."
    

Teraz sieciowa grupa zabezpieczeń ERP-SERVERS-NSG powinna zawierać następujące reguły:

Nazwa reguły Kierunek Priorytet Purpose
AllowSSHRule Przychodzący 100 Zezwalaj na przychodzący ruch SSH
httpRule Przychodzący 150 Odmów z maszyny wirtualnej DataServer do maszyny wirtualnej AppServer na porcie 80
Allow_Storage Wychodzący 190 Zezwalaj na dostęp do usługi Azure Storage
Deny_Internet Wychodzący 200 Odmów dostępu do Internetu z sieci wirtualnej

W tym momencie zarówno maszyna wirtualna AppServer, jak i maszyna wirtualna DataServer mają dostęp do usługi Azure Storage.

Konfigurowanie konta magazynu i udziału plików

W tym kroku utworzysz nowe konto magazynu, a następnie dodasz udział plików platformy Azure do tego konta. Ten udział plików to miejsce, w którym będziesz przechowywać diagramy inżynieryjne.

  1. Aby utworzyć konto magazynu dla dokumentów inżynieryjnych, uruchom następujące polecenie w usłudze Cloud Shell:

    STORAGEACCT=$(az storage account create \
                    --resource-group $rg \
                    --name engineeringdocs$RANDOM \
                    --sku Standard_LRS \
                    --query "name" | tr -d '"')
    
  2. Aby zapisać klucz podstawowy konta magazynu w zmiennej, uruchom następujące polecenie w usłudze Cloud Shell:

    STORAGEKEY=$(az storage account keys list \
                    --resource-group $rg \
                    --account-name $STORAGEACCT \
                    --query "[0].value" | tr -d '"')
    
  3. Aby utworzyć udział plików platformy Azure o nazwie erp-data-share, uruchom następujące polecenie w usłudze Cloud Shell:

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

Włączanie punktu końcowego usługi

Teraz należy skonfigurować konto magazynu tak, aby było dostępne tylko z serwerów baz danych, przypisując punkt końcowy magazynu do podsieci Databases . Następnie należy dodać regułę zabezpieczeń do konta magazynu.

  1. Aby przypisać punkt końcowy Microsoft.Storage do podsieci, uruchom następujące polecenie w usłudze Cloud Shell:

    az network vnet subnet update \
        --vnet-name ERP-servers \
        --resource-group $rg \
        --name Databases \
        --service-endpoints Microsoft.Storage
    
  2. Aby odmówić dostępu, zmień domyślną akcję na Deny , uruchamiając następujące polecenie w usłudze Cloud Shell. Po odmowie dostępu do sieci konto magazynu nie jest dostępne z żadnej sieci.

    az storage account update \
        --resource-group $rg \
        --name $STORAGEACCT \
        --default-action Deny
    
  3. Aby ograniczyć dostęp do konta magazynu, uruchom następujące polecenie w usłudze Cloud Shell. Domyślnie kota magazynu są otwarte, aby akceptować cały ruch. Chcesz, aby tylko ruch z podsieci Databases mógł uzyskiwać dostęp do magazynu.

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

Testowanie dostępu do zasobów magazynu

W tym kroku połączysz się z obydwoma serwerami i sprawdzisz, czy tylko maszyna wirtualna DataServer ma dostęp do udziału plików platformy Azure na koncie magazynu.

  1. Aby zapisać publiczne adresy IP maszyny wirtualnej AppServer i maszyny wirtualnej DataServer do zmiennych, uruchom następujące polecenie w usłudze Cloud Shell:

    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. Aby nawiązać połączenie z maszyną wirtualną AppServer i spróbować zainstalować udział plików platformy Azure, uruchom następujące polecenie w usłudze Cloud Shell:

    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. Wprowadź hasło, które zostało użyte podczas tworzenia maszyny wirtualnej.

  4. Odpowiedź powinna zawierać komunikat mount error. To połączenie nie jest dozwolone, ponieważ nie ma punktu końcowego usługi dla konta magazynu w podsieci Applications .

  5. Aby nawiązać połączenie z maszyną wirtualną DataServer i spróbować zainstalować udział plików platformy Azure, uruchom następujące polecenie w usłudze Cloud Shell:

    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. Wprowadź hasło, które zostało użyte podczas tworzenia maszyny wirtualnej.

  7. Instalacja powinna zakończyć się powodzeniem, a odpowiedź powinna zawierać szczegóły punktu instalacji. Jest to dozwolone, ponieważ utworzono punkt końcowy usługi dla konta magazynu w podsieci Databases.

Teraz masz pewność, że maszyna wirtualna DataServer może uzyskiwać dostęp do magazynu przy użyciu punktu końcowego usługi magazynu w podsieci Databases. Sprawdzono również, że maszyna wirtualna AppServer nie może uzyskać dostępu do magazynu. Dzieje się tak, ponieważ ten serwer znajduje się w innej podsieci i nie ma dostępu do punktu końcowego usługi sieci wirtualnej.