Virtual Network Service Endpoints

Phi Huynh
Azure Vietnam
Published in
5 min readAug 21, 2018

Anh em đã quá quen thuộc với Virtual Network trên Azure, tạo một VNet, cấu hình subnet, CIDR, … rất dễ dàng. Với VNet, chúng ta sẽ có một bộ địa chỉ hoàn toàn private và giúp cho các Virtual Machine kết nối với nhau trong mạng riêng này. Tuy vậy, khi kết nối với các service PaaS chẳng hạn như Azure Blob Storage, Azure SQL Database, … thì chúng ta vẫn phải đi đường “public internet”, mặc dù với Azure SQL Database có thể cấu hình firewall để giới hạn kết nối, hoặc Blob Storage hỗ trợ chế độ private access. Câu hỏi đặt ra là có cách nào để từ VNet có thể kết nối đến các Azure SQL Database hoặc Blob storage một cách “private” như một mạng riêng hay không?

Giới thiệu Virtual Network Service EndPoints

Anh em có thể trả lời YES cho câu hỏi trên với Virtual Network Service Endpoints. Đây là tính năng mở rộng cho VNet giúp cho các Azure services thấy được VNet của chúng ta và dùng trực tiếp dãy địa chỉ private. Kết nối từ Azure services đến VNet một kết nối trực tiếp và nằm trong hạ tầng của Microsoft Azure nên sẽ tăng cường security lên nhiều (vì có thể xem là hoàn toàn private).

Trong bài này, tôi sẽ giới thiệu cách chúng ta thiết lập một kết nối riêng tư giữa VNet và Azure services (ví dụ là Azure Storage). Kết nối riêng tư ở đây nghĩa là Azure Storage sẽ hoàn toàn không kết nối được tự Internet, và services này chỉ available trong môi trường bên trong Azure và chỉ phục vụ cho VNet của chúng ta tạo ra.

Các bước sẽ bao gồm như sau:

  1. Tạo Virtual Network (giả sử với 1 subnet)
  2. Bật tính năng service endpoint cho subnet
  3. Tạo Virtual Machine trong subnet
  4. Xác nhận kết nối đến Azure services (eg. Azure Storage) cho subnet
  5. Xác nhận từ chối kết nối đến Azure services (eg. Azure SQL Database) cho subnet

Bước 1. Tạo Virtual Network (giả sử với 1 subnet)

Đăng nhập Azure, từ portal, tạo một virtual network với dãy địa chỉ là 10.0.0.0/16, tên là test-vnet, default subnet là 10.0.0.0/24, service endpoints mặc định là disabled.

Bước 2. Bật tính năng service endpoints cho subnet

Sau khi tạo VNet test-net, chúng ta có một subnet default. Service endpoints sẽ đi theo subnet, nên tiếp tục ta chọn subnet default trên portal. Chúng ta sẽ thấy mục Service Endpoints, anh em chọn Microsoft Storage. Sau đó Save lại. Điều này nghĩa là với Subnet này, chúng ta chỉ cho phép Azure Storage kết nối vào.

Chọn Microsoft Storage

Bước 3. Tạo Azure Storage và cấu hình firewall

Tiếp tục chúng ta tạo Azure Storage account — blob, file, table queue với tên là storagevnetendpoint, account kind là StorageV2, và chọn resource group cùng với group của VNet để tiện quản lý

Tạo Storage account

Sau khi tạo Storage account, anh em thiết lập FileShare để xíu nữa test từ Virtual Machine kết nối vào nhé. Để enable FileShare, nhấn vào storage account vừa tạo, chọn Files, chọn File Share, đặt tên là test-fileshare, và nhấn OK.

Mặc định thì Storage Account sẽ cho phép bất kỳ Azure services nào kết nối tới, thậm chí là từ Internet. Để giới hạn chỉ cho VNet ở trên kết nối đến Storage account vừa tạo, từ Azure Portal, chọn account vừa tạo, sau đó chọn mục Firewalls and Virtual Networks, mặc định là All Networks, anh em chyển sang Selected Networks và VNet test-netdefault subnet ở trên. Cuối cùng nhấn Save lại

Sau khi đã cấu hình filerwall xong cho storage account, anh em vào mục storage explorer để preview file sẽ bị báo lỗi không truy cập được. Nice :)

Bước 4. Tạo máy ảo và kết nối đến “private storage account”

Đến đây xem như chúng ta đã cấu hình xong Service Endpoint của VNet và kết nối đến storage account. Từ public internet sẽ không thể kết nối đến storage account này, và duy nhất chỉ có VNet chúng ta vừa tạo là có quyền truy cập. Giờ chúng ta sẽ tạo một máy ảo trong VNet ở trên và kiểm tra xem có truy cập vào FileShare của storage account được hay không.

Từ portal, anh em tạo một máy ảo Windows (cái nào cũng được), chú ý là chọn VNET là test-vnet, chọn subnet là default. Và anh em cũng nhớ chọn public port của remote desktop để xíu remote vào nhé.

Sau khi tạo xong máy ảo, remote desktop vào máy, và chúng ta sẽ tạo ổ đĩa mạng đến storage account bằng lệnh sau (chạy trong PowerShell). Với storage-account-key lấy thông tin của storage account trên portal ở mục Access Keys, còn storage-account-name chính là storagevnetendpoint mà ta đã tạo ở trên.

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

Kết quả ta sẽ có ổ Z được share như hình sau

Voila, vây là ta có Storage Account quá riêng tư rồi đó :)

Chúc các bạn thành công :)

--

--