Alıştırma - Hizmet uç noktalarını kullanarak Azure Depolama'ya erişimi kısıtlama

Tamamlandı

Çözüm mimarı olarak hassas mühendislik diyagramı dosyalarını Azure Depolama'ya taşımayı planlıyorsunuz. Dosyaların yalnızca şirket ağının içindeki bilgisayarlardan erişilebilir olması gerekiyor. Depolama hesaplarınıza bağlantının güvenliğini sağlamak amacıyla Azure Depolama için sanal ağ hizmet uç noktası oluşturmak istiyorsunuz.

Bu ünitede bir hizmet uç noktası oluşturacak ve Azure Depolama'ya erişimi kısıtlamak için ağ kuralları kullanacaksınız. Databases alt ağında Azure Depolama için bir sanal ağ hizmet uç noktası oluşturacaksınız. Ardından DataServer sanal makinenizin Azure Depolama'ya erişebildiğini doğrulayacaksınız. Son olarak, farklı bir alt ağda yer alan AppServer sanal makinesinin depolamaya erişemediğini göstereceksiniz.

Diagram of exercise scenario service endpoint and rules.

Ağ güvenlik grubuna kuralları ekleme

Burada Azure Depolama ile iletişimin hizmet uç noktasından geçtiğinden emin olacaksınız. Depolama hizmetine erişime izin vermek için giden kuralları ekleyeceksiniz, ancak diğer tüm İnternet trafiğini reddedeceksiniz.

  1. Depolama erişime izin veren bir giden kuralı oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:

    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. Tüm İnternet erişimini reddedecek bir giden kuralı oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:

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

Artık ERP-SERVERS-NSG'de aşağıdaki kurallarınız olmalıdır:

Kural adı Yön Öncelik Amaç
AllowSSHRule Gelen Kategori 100 Gelen SSH'ye izin verme
httpRule Gelen 150 80 numaralı bağlantı noktasında DataServer'dan AppServer'a reddetme
Allow_Storage Giden 190 Azure Depolama'ya erişime izin verme
Deny_Internet Giden 200 Sanal ağdan İnternet'e erişimi engelleme

Bu noktada hem AppServer hem de DataServer'ın Azure Depolama hizmetine erişimi vardır.

Depolama hesabını ve dosya paylaşımını yapılandırma

Bu adımda yeni bir depolama hesabı oluşturacak ve ardından bu hesaba bir Azure dosya paylaşımı ekleyeceksiniz. Bu dosya paylaşımı, mühendislik diyagramlarınızı depoladığınız yerdir.

  1. Mühendislik belgeleri için depolama hesabı oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:

    STORAGEACCT=$(az storage account create \
                    --resource-group $rg \
                    --name engineeringdocs$RANDOM \
                    --sku Standard_LRS \
                    --query "name" | tr -d '"')
    
  2. Depolama hesabınızın birincil anahtarını bir değişkende depolamak için Cloud Shell'de aşağıdaki komutu çalıştırın:

    STORAGEKEY=$(az storage account keys list \
                    --resource-group $rg \
                    --account-name $STORAGEACCT \
                    --query "[0].value" | tr -d '"')
    
  3. erp-data-share adlı bir Azure dosya paylaşımı oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:

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

Hizmet uç noktasını etkinleştirme

Şimdi, depolama uç noktasını Veritabanları alt ağından atayarak depolama hesabını yalnızca veritabanı sunucularından erişilebilir olacak şekilde yapılandırmanız gerekir. Ardından depolama hesabına bir güvenlik kuralı eklemeniz gerekir.

  1. Alt ağa Microsoft.Depolama uç noktasını atamak için Cloud Shell'de aşağıdaki komutu çalıştırın:

    az network vnet subnet update \
        --vnet-name ERP-servers \
        --resource-group $rg \
        --name Databases \
        --service-endpoints Microsoft.Storage
    
  2. Tüm erişimi reddetmek için Deny Cloud Shell'de aşağıdaki komutu çalıştırarak varsayılan eylemi olarak değiştirin. Ağ erişimi reddedildikten sonra depolama hesabına herhangi bir ağdan erişilemez.

    az storage account update \
        --resource-group $rg \
        --name $STORAGEACCT \
        --default-action Deny
    
  3. Depolama hesabına erişimi kısıtlamak için Cloud Shell'de aşağıdaki komutu çalıştırın. Varsayılan olarak depolama hesapları tüm trafiği kabul etmeye açıktır. Siz yalnızca Databases alt ağından gelen trafiğin depolamaya erişebilmesini istiyorsunuz.

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

Depolama kaynaklarına erişimi test etme

Bu adımda her iki sunucunuza da bağlanacak ve depolama hesabındaki Azure dosya paylaşımına yalnızca DataServer'ın erişimi olduğunu doğrulayacaksınız.

  1. AppServer ve DataServer'ın genel IP adreslerini değişkenlere kaydetmek için Cloud Shell'de aşağıdaki komutu çalıştırın:

    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. AppServer VM'nize bağlanmak ve Azure dosya paylaşımını bağlamaya çalışmak için Cloud Shell'de aşağıdaki komutu çalıştırın:

    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. Sanal makineyi oluştururken kullandığınız parolayı girin.

  4. Yanıt mount error iletisini içermelidir. Uygulamalar alt ağından depolama hesabı için hizmet uç noktası olmadığından bu bağlantıya izin verilmez.

  5. DataServer VM'nize bağlanmak ve Azure dosya paylaşımını bağlamaya çalışmak için Cloud Shell'de aşağıdaki komutu çalıştırın:

    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. Sanal makineyi oluştururken kullandığınız parolayı girin.

  7. Bağlama başarılı olmalı ve yanıt bağlama noktasının ayrıntılarını içermelidir. Databases alt ağında depolama hesabı için hizmet uç noktasını oluşturduğunuzdan, buna izin verilir.

Artık Databases alt ağındaki depolama hizmet uç noktasını kullanarak DataServer’ın depolamaya erişebildiğini doğruladınız. Ayrıca AppServer'ın depolamaya erişemediğini de doğruladınız. Bunun nedeni, bu sunucunun farklı bir alt ağda olması ve sanal ağ hizmet uç noktasına erişimi olmamasıdır.