Overview of AWS VPC endpoint services (Privatelink) for SaaS service

2022-03-18 AWS

AWS Privatelink 已經釋出好多年了,但偶爾還是會遇到客戶對於 Privatelink 的用法以及一些設定感到困惑,尤其是當需要透過 AWS Privatelink 提供 SaaS service 時的一些注意事項非常重要,在整理資料的當下順手把這篇文章也記錄下來。

在最一開始時 AWS VPC endpoint (aka Privatelink) 是提供給「不在 AWS VPC 的 AWS services」可以在 AWS VPC 內以 Private IP 存取「New – AWS PrivateLink for AWS Services: Kinesis, Service Catalog, EC2 Systems Manager, Amazon EC2 APIs, and ELB APIs in your VPC」,隨著 AWS 客戶遷移上雲後 private access 的需求大幅增加,尤其是 SaaS 服務越來越流行「AWS PrivateLink Update – VPC Endpoints for Your Own Applications & Services」AWS 也開始讓 Privatelink 也能夠支援 Your Own Applications & Services。

AWS VPC endpoint 的運作邏輯是在 AWS VPC 內放一組 ENI (Endpoint network interface per AZ) 從背後串接到 AWS services,對於偏好 Private network 的人可以基於 RFC-1918 的 private IPv4 addresses (e.g. 10.x )連到 AWS services,同時又多了 IAM / Security group 控制訪問權限。

而 AWS VPC endpoint service 讓想要提供 private access SaaS 服務 (provider) 的人能夠在以同樣 VPC endpoint 的方法提供給 AWS VPC 訪問 (consumer),中間只需要透過 Network/Gateway load balancer 串接。

對於 consumer 只需要多一組 VPC endpoint 就能夠享有 private access 的功能非常方便,但是 service provider 在設定 VPC endpoint service 時仍需要有一些觀念才不會導致 consumer 服務中斷,作者整理幾個重點在以下:

目前不支援 ALB

很多人都會問到 ALB 到底能不能用?答案是 No。但如果沒有用到 HTTP Layer 7 功能 (e.g. rewrite, HTTP Header, cookie, sticky session and etc.) 多數情況用 NLB 也是能夠應付。

支援多個 NLB/GLB

支援多個 Load balancer 這非常重要,除了擴展性以外。當 service provider 因需求要更換 Load balancer 時就可以用 Blue/Green 來切換。

支援 Your own DNS name

service provider 可以選擇使用預設的 vpce-sve-xxx 提供 endpoint 服務或 your own DNS name,舉例:vpce.shazi.info 在設定 VPC endpoint service 時則需要加 TXT 驗證。

Availability zone 必須可用於 consumer VPC

Consumer VPC endpoint 可用在哪些 Availability zone 取決於 service provider 提供的 Availability zone 地區,舉個例子解釋:

Network load balancer 建立在 us-east-1a, us-east-1c,Consumer subnets 建立在 us-east-1a, us-east-1b

Ans: Consumer VPC endpoint 只能選到 us-east-1a。

這意味著 service provider 必須支援在 consumer VPC 所使用的 Availability zone,如果你是提供 SaaS 的提供者沒有辦法掌握 consumer 使用那一個 AZ,那麼就建議直接支援所有 Regional AZ 或者載明清楚能使用的 AZ。

Security control

除了 consumer VPC endpoint 本身就可以限制 IAM / Security 以外,provider VPC endpoint service 也能利用 Allow principalsAcceptance required 來審核 who 能夠使用這個 VPC endpoint service。

Allow principals 主要是用來控管 IAM principal,如果不在 Allow principals 清單內則會無法找到 VPC endpoint service name 出現「Service name could not be verified.」訊息。

Acceptance required 則是第二段保護措施,當 consumer VPC endpoint 嘗試連接 VPC endpoint service 時需要通過 service provider accept 才能使用,這對於 SaaS 提供者或是需要通過 compliance 的用戶非常有效。

How do I enable end-to-end HTTPS connectivity with AWS PrivateLink?」在資料傳輸安全面,Network load balancer 同時也支援 TLS listener 加密傳輸,整個過程也都只在 AWS 骨幹網路上完成,不需要跨到 Internet 網路。

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱