教學課程:使用 Azure 入口網站透過虛擬網路服務端點來限制對 PaaS 資源的網路存取

虛擬網路服務端點讓您能夠將對一些 Azure 服務資源的網路存取限制為一個虛擬網路子網路。 您也可以移除對資源的網際網路存取。 服務端點提供從您的虛擬網路到支援之 Azure 服務的直接連線,讓您能夠使用虛擬網路的私人位址空間來存取 Azure 服務。 透過服務端點流向 Azure 資源的流量,一律保持在 Microsoft Azure 骨幹網路上。

教學課程中建立的 Azure 資源圖表。

在本教學課程中,您會了解如何:

  • 建立具有一個子網路的虛擬網路
  • 新增子網路,並啟用服務端點
  • 建立 Azure 資源,並僅允許從子網路對其進行網路存取
  • 將虛擬機器 (VM) 部署到每個子網路
  • 確認從子網路對資源的存取
  • 確認從子網路和網際網路對資源的存取遭到拒絕

本教學課程會使用 Azure 入口網站。 您也可以使用 Azure CLIPowerShell 來完成。

必要條件

登入 Azure

登入 Azure 入口網站

建立虛擬網路和 Azure Bastion 主機

下列程式會建立具有資源子網、Azure Bastion 子網和 Bastion 主機的虛擬網路:

  1. 在入口網站中,搜尋並選取 [虛擬網路]

  2. 在 [虛擬網路] 頁面上,選取 [+ 建立]。

  3. 在 [建立虛擬網路] 的 [基本] 索引標籤中,輸入或選取下列資訊:

    設定
    專案詳細資料
    訂用帳戶 選取您的訂用帳戶。
    資源群組 選取 [新建]
    輸入 test-rg 以取得名稱。
    選取 [確定]。
    [執行個體詳細資料]
    名稱 輸入 vnet-1
    區域 選取 [美國東部 2]

    [基本] 索引標籤的螢幕快照,用於在 Azure 入口網站 中建立虛擬網路。

  4. 選取 [下一步],繼續前往 [安全性] 索引標籤。

  5. 在 [ Azure Bastion ] 區段中,選取 [ 啟用 Bastion]。

    Bastion 會使用瀏覽器,透過安全殼層 (SSH) 或遠端桌面通訊協定 (RDP) 連線到虛擬網路中的 VM,方法是使用其私人 IP 位址。 VM 不需要公用 IP 位址、用戶端軟體或特殊設定。 如需詳細資訊,請參閱 什麼是 Azure Bastion?

    注意

    每小時價格從 Bastion 部署的那一刻開始,而不論輸出資料使用量為何。 如需詳細資訊,請參閱價格SKU。 如果您要將 Bastion 部署為教學課程或測試的一部分,建議您在完成使用之後刪除此資源。

  6. Azure Bastion 中,輸入或選取下列資訊:

    設定
    Azure Bastion 主機名稱 輸入 bastion
    Azure Bastion 公用 IP 位址 選取 [建立公用 IP 位址]
    在 [名稱] 中輸入 public-ip-bastion
    選取 [確定]。

    在 Azure 入口網站 中建立虛擬網路時,啟用 Azure Bastion 主機的選項螢幕快照。

  7. 選取 [下一步],繼續前往 [IP 位址] 索引標籤。

  8. 在位址空間方塊的 [子網路] 中,選取 default 子網路。

  9. 在 [編輯子網路] 中,輸入或選取下列資訊:

    設定
    子網路詳細資料
    子網路範本 保留預設值 預設值
    名稱 輸入 subnet-1
    起始位址 保留預設值 [10.0.0.0]
    子網路大小 保留預設值 /24 (256 個位址)。

    子網設定詳細數據的螢幕快照。

  10. 選取 [儲存]。

  11. 選取視窗底部的 [ 檢閱 + 建立 ]。 通過驗證後,選取 [建立]

啟用服務端點

依每個子網路、每個服務啟用服務端點。

  1. 在入口網站頁面頂端的搜尋方塊中,搜尋虛擬網路。 選取搜尋結果中的 [虛擬網路]

  2. 在 [虛擬網路] 中,選取 [vnet-1]

  3. vnet-1 的 [設定] 區段中,選取 [子網路]

  4. 選取 [+ 子網路]

  5. 在 [新增子網路] 頁面上,輸入或選取下列資訊:

    設定
    名稱 subnet-private
    子網路位址範圍 保留預設值 [10.0.2.0/24]
    服務端點
    服務 選取 [Microsoft.Storage]
  6. 選取 [儲存]。

警告

針對具有資源的現有子網路啟用服務端點之前,請參閱變更子網路設定

限制子網路的網路存取

根據預設,子網路中的所有虛擬機器執行個體均可與任何資源進行通訊。 建立網路安全性群組,並將它與子網路產生關聯,即可限制與子網路中所有資源之間的通訊。

  1. 在入口網站頁面頂端的搜尋方塊中,搜尋網路安全性群組。 在搜尋結果中選取 [網路安全性群組]

  2. 在 [網路安全性群組] 中,選取 [+ 新增]

  3. 在 [建立網路安全性群組] 的 [基本] 索引標籤中,輸入或選取下列資訊:

    設定
    專案詳細資料
    訂用帳戶 選取您的訂用帳戶。
    資源群組 選取 [test-rg]
    [執行個體詳細資料]
    名稱 輸入 nsg-storage
    區域 選取 [美國東部 2]
  4. 選取 [檢閱 + 建立],然後選取 [建立]

建立輸出 NSG 規則

  1. 在入口網站頁面頂端的搜尋方塊中,搜尋網路安全性群組。 在搜尋結果中選取 [網路安全性群組]

  2. 選取 [nsg-storage]

  3. 選取 [設定] 中的 [輸出安全性規則]

  4. 選取 + 新增

  5. 建立規則,以允許對 Azure 儲存體服務的連出通訊。 在 [新增輸出安全性規則] 中輸入或選取下列資訊:

    設定
    來源 選取 [服務標記]
    來源服務標籤 選取 [VirtualNetwork]
    來源連接埠範圍 保留預設值 *
    Destination 選取 [服務標記]
    目的地服務標籤 選取儲存體
    服務 保留預設值 [自訂]
    目的地連接埠範圍 輸入 445
    SMB 通訊協定是用來連線到在稍後步驟中建立的檔案共用。
    通訊協定 選取 [任何]
    動作 選取允許
    優先順序 保留 [100] 的預設值。
    名稱 輸入 allow-storage-all

    建立輸出安全性以存取記憶體的螢幕快照。

  6. 選取 + 新增

  7. 建立另一個連出安全性規則,以拒絕與網際網路的通訊。 此規則會覆寫所有網路安全性群組中允許輸出網際網路通訊的預設規則。 在 [新增輸出安全性規則] 中使用下列值完成上述步驟:

    設定
    來源 選取 [服務標記]
    來源服務標籤 選取 [VirtualNetwork]
    來源連接埠範圍 保留預設值 *
    Destination 選取 [服務標記]
    目的地服務標籤 選取 [網際網路]
    服務 保留預設值 [自訂]
    目的地連接埠範圍 輸入 *
    通訊協定 選取 [任何]
    動作 選取 [拒絕]
    優先順序 保留預設值 110
    名稱 輸入 deny-internet-all

    建立輸出安全性以封鎖因特網存取的螢幕快照。

  8. 選取 [新增]。

將網路安全性群組與子網路建立關聯

  1. 在入口網站頁面頂端的搜尋方塊中,搜尋網路安全性群組。 在搜尋結果中選取 [網路安全性群組]

  2. 選取 [nsg-storage]

  3. 在 [設定] 中選取 [子網路]

  4. 選取 [+ 建立關聯]

  5. 在 [產生子網路關聯] 中,針對 [虛擬網路] 選取 vnet-1。 在 [子網路] 中選取 [subnet-private]

    與網路安全組相關聯的私人子網螢幕快照。

  6. 選取 [確定]。

限制對資源的網路存取

如果資源是透過已針對服務端點啟用的 Azure 服務建立,則限制其網路存取的必要步驟會因為服務不同而有所差異。 請參閱個別服務的文件,以取得每個服務的特定步驟。 此教學課程的其餘部分包括限制對 Azure 儲存體帳戶進行網路存取的步驟 (以範例形式說明)。

建立儲存體帳戶

請依照本文中的步驟建立 Azure 儲存體帳戶。 如果您已經有儲存體帳戶,您可以改用它。

  1. 在入口網站頂端的搜尋方塊中,輸入儲存體帳戶。 選取搜尋結果中的儲存體帳戶

  2. 選取 + 建立

  3. 在 [建立儲存體帳戶] 的 [基本] 索引標籤中,輸入或選取下列資訊:

    設定
    專案詳細資料
    訂用帳戶 選取 Azure 訂閱。
    資源群組 選取 [test-rg]
    [執行個體詳細資料]
    儲存體帳戶名稱 輸入 storage1。 如果名稱無法使用,請輸入唯一的名稱。
    Location 選取 [(美國) 美國東部 2]
    效能 保留預設值 [標準]
    備援性 選取 [本地備援儲存體 (LRS)]
  4. 選取審查

  5. 選取 建立

在儲存體帳戶中建立檔案共用

  1. 在入口網站頂端的搜尋方塊中,輸入儲存體帳戶。 選取搜尋結果中的儲存體帳戶

  2. 在 [儲存體帳戶] 中,選取您在上一個步驟中建立的儲存體帳戶。

  3. 在 [資料儲存體] 中,選取 [檔案共用]

  4. 選取 [+ 檔案共用]

  5. 在 [新檔案共用] 中輸入或選擇下列資訊:

    設定
    名稱 輸入 file-share
    保留預設值 [交易最佳化]
  6. 選取 [下一步:備份]

  7. 取消選取 [啟用備份]

  8. 選取 [檢閱 + 建立],然後選取 [建立]

限制對子網路的網路存取

根據預設,儲存體帳戶接受來自任何網路 (包括網際網路) 之用戶端的網路連線。 您可以限制來自網際網路以及所有虛擬網路中所有其他子網路的網路存取 (vnet-1 虛擬網路中的 subnet-private 子網路除外。)

限制對子網路的網路存取:

  1. 在入口網站頂端的搜尋方塊中,輸入儲存體帳戶。 選取搜尋結果中的儲存體帳戶

  2. 選取您的儲存體帳戶。

  3. 在 [安全性 + 網路] 中,選取 [網路]

  4. 在 [防火牆和虛擬網路] 索引標籤中,選取 [公用網路存取] 中的 [從選取的虛擬網路和 IP 位址啟用]

  5. 在 [虛擬網路] 中,選取 [+ 新增現有的虛擬網路]

  6. 在 [新增網路] 中,輸入或選取下列資訊:

    設定
    訂用帳戶 選取您的訂用帳戶。
    虛擬網路 選取 [vnet-1]
    子網路 選取 [subnet-private]

    先前建立之子網和虛擬網路限制記憶體帳戶的螢幕快照。

  7. 選取 [新增]。

  8. 選取 [儲存],以儲存虛擬網路設定。

    記憶體帳戶畫面和子網限制確認的螢幕快照。

建立虛擬機器

若要測試對儲存體帳戶的網路存取,請將虛擬機器部署至每個子網路。

建立測試虛擬機器

下列程序會在虛擬網路中建立名為 vm-1 的測試虛擬機器 (VM)。

  1. 在入口網站中,搜尋並選取 [虛擬機器]

  2. 在 [虛擬機器] 中,選取 [+ 建立],然後選取 [Azure 虛擬機器]

  3. 在 [建立虛擬機器] 的 [基本] 索引標籤上,輸入或選取下列資訊:

    設定
    專案詳細資料
    訂用帳戶 選取您的訂用帳戶。
    資源群組 選取 [test-rg]
    [執行個體詳細資料]
    虛擬機器名稱 輸入 vm-1
    區域 選取 [美國東部 2]
    可用性選項 選取 [不需要基礎結構備援]
    安全性類型 保留預設值 [標準]
    映像 選取 [Windows Server 2022 Datacenter - x64 Gen2]
    VM 架構 保留預設值 [x64]
    大小 選取大小。
    系統管理員帳戶
    驗證類型 選取 [密碼]
    使用者名稱 輸入 azureuser
    密碼 輸入密碼。
    確認密碼 請重新輸入密碼。
    輸入連接埠規則
    公用輸入連接埠 選取 [無]。
  4. 選取頁面頂端的 [網路] 索引標籤。

  5. 在 [網路] 索引標籤中,輸入或選取以下資訊:

    設定
    網路介面
    虛擬網路 選取 [vnet-1]
    子網路 選取 [subnet-1 (10.0.0.0/24)]
    公用 IP 選取 [無]。
    NIC 網路安全性群組 選取進階
    設定網路安全性群組 選取 [新建]
    輸入 nsg-1 做為名稱。
    將其餘項目保留為預設值,然後選取 [確定]
  6. 將其餘設定保留為預設值,然後選取 [檢閱 + 建立]

  7. 檢閱設定並選取 [建立]

注意

具有 Bastion 主機的虛擬網路中的虛擬機器不需要公用 IP 位址。 Bastion 會提供公用 IP,而 VM 會使用私人 IP 在網路內通訊。 您可以從 Bastion 裝載的虛擬網路中的任何 VM 移除公用 IP。 如需詳細資訊,請參閱中斷公用 IP 位址與 Azure VM 的關聯

注意

Azure 會針對未獲指派公用 IP 位址或位於內部基本 Azure 負載平衡器後端集區中的 VM,提供預設輸出存取 IP。 預設輸出存取 IP 機制能提供無法自行設定的輸出 IP 位址。

發生下列其中一個事件時,會停用預設輸出存取 IP:

  • 系統會指派公用 IP 位址給 VM。
  • 無論有沒有輸出規則,都會將 VM 放在標準負載平衡器的後端集區中。
  • Azure NAT 閘道資源會指派給 VM 的子網。

在彈性協調流程模式中使用虛擬機器擴展集建立的 VM 不會有預設輸出存取。

如需 Azure 中輸出連線的詳細資訊,請參閱 Azure 中的預設對外存取針對輸出連線,使用來源網路位址轉譯 (SNAT)

建立第二部虛擬機器

  1. 重複上一節中的步驟,以建立第二個虛擬機器。 在 [建立虛擬機器] 中,取代下列值:

    設定
    虛擬機器名稱 輸入 vm-private
    子網路 選取 [subnet-private]
    公用 IP 選取 [無]。
    NIC 網路安全性群組 選取 [無]。

    警告

    在部署完成之前,不要繼續下一個步驟。

確認對儲存體帳戶的存取

您稍早建立的虛擬機器 (已指派給 subnet-private 子網路) 會用於確認對儲存體帳戶的存取。 您在上一節中建立的虛擬機器 (已指派給 subnet-1 子網路) 會用於確認對儲存體帳戶的存取遭到封鎖。

取得儲存體帳戶存取金鑰

  1. 在入口網站頂端的搜尋方塊中,輸入儲存體帳戶。 選取搜尋結果中的儲存體帳戶

  2. 在 [儲存體帳戶] 中,選取您的儲存體帳戶。

  3. 在 [安全性 + 網路] 中,選取 [存取金鑰]

  4. 複製 key1 的值。 您可能需要選取 [顯示] 按鈕以顯示金鑰。

    儲存體帳戶存取金鑰的螢幕快照。

  5. 在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。

  6. 選取 [vm-private]

  7. 在 [作業] 中選取 [Bastion]

  8. 輸入在建立虛擬機器時指定的使用者名稱和密碼。 選取 Connect

  9. 請開啟 Windows PowerShell。 使用下列指令碼將 Azure 檔案共用對應至磁碟機 Z。

    • <storage-account-key> 取代為您在先前的步驟中複製的金鑰。

    • 請以您的儲存體帳戶名稱取代 <storage-account-name>。 在此範例中為 storage8675

     $key = @{
         String = "<storage-account-key>"
     }
     $acctKey = ConvertTo-SecureString @key -AsPlainText -Force
    
     $cred = @{
         ArgumentList = "Azure\<storage-account-name>", $acctKey
     }
     $credential = New-Object System.Management.Automation.PSCredential @cred
    
     $map = @{
         Name = "Z"
         PSProvider = "FileSystem"
         Root = "\\<storage-account-name>.file.core.windows.net\file-share"
         Credential = $credential
     }
     New-PSDrive @map
    

    PowerShell 會傳回類似以下範例輸出的輸出:

    Name        Used (GB)     Free (GB) Provider      Root
    ----        ---------     --------- --------      ----
    Z                                      FileSystem    \\storage8675.file.core.windows.net\f...
    

    Azure 檔案共用已成功對應到 Z 磁碟機。

  10. 關閉與 vm-private 的 Bastion 連線。

確認已拒絕存取儲存體帳戶

從 vm-1

  1. 在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。

  2. 選取 [vm-1]

  3. 在 [作業] 中選取 [Bastion]

  4. 輸入在建立虛擬機器時指定的使用者名稱和密碼。 選取 Connect

  5. 重複上述命令,嘗試將磁碟機對應至儲存體帳戶中的檔案共用。 針對此程序,您可能需要再次複製儲存體帳戶存取金鑰:

    $key = @{
        String = "<storage-account-key>"
    }
    $acctKey = ConvertTo-SecureString @key -AsPlainText -Force
    
    $cred = @{
        ArgumentList = "Azure\<storage-account-name>", $acctKey
    }
    $credential = New-Object System.Management.Automation.PSCredential @cred
    
    $map = @{
        Name = "Z"
        PSProvider = "FileSystem"
        Root = "\\<storage-account-name>.file.core.windows.net\file-share"
        Credential = $credential
    }
    New-PSDrive @map
    
  6. 您應該會收到下列錯誤訊息:

    New-PSDrive : Access is denied
    At line:1 char:5
    +     New-PSDrive @map
    +     ~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
        + FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
    
  7. 關閉與 vm-1 的 Bastion 連線。

從本機電腦:

  1. 在入口網站頂端的搜尋方塊中,輸入儲存體帳戶。 選取搜尋結果中的儲存體帳戶

  2. 在 [儲存體帳戶] 中,選取您的儲存體帳戶。

  3. 在 [資料儲存體] 中,選取 [檔案共用]

  4. 選取 [檔案共用]

  5. 選取左側功能表中的 [瀏覽]

  6. 您應該會收到下列錯誤訊息:

    拒絕存取錯誤訊息的螢幕快照。

注意

存取遭到拒絕,因為您的電腦不在 vnet-1 虛擬網路的 subnet-private 子網路中。

清除資源

當您完成使用您所建立的資源時,您可以刪除資源群組及其所有資源:

  1. 在 Azure 入口網站中,搜尋並選取 [資源群組]。

  2. 在 [資源群組] 頁面上,選取 test-rg 資源群組。

  3. test-rg 頁面上,選取 [刪除資源群組]

  4. 在 [輸入資源組名] 中輸入 test-rg 以確認刪除,然後選取 [刪除]。

下一步

在本教學課程中:

  • 您已啟用虛擬網路子網路的服務端點。

  • 您已了解可以針對從多項 Azure 服務部署的資源啟用服務端點。

  • 您已建立 Azure 儲存體帳戶,並將儲存體帳戶的網路存取限制為只能存取虛擬網路子網路內的資源。

若要深入了解服務端點,請參閱服務端點概觀管理子網路

如果您的帳戶中有多個虛擬網路,建議您在這些虛擬網路之間建立連線,讓資源能夠彼此通訊。 若要了解如何連線虛擬網路,請移至下一個教學課程。