本頁說明如何將資源管理工具標記附加至 Secure Web Proxy 政策。Resource Manager 標記是可附加至各種 Google Cloud 資源的標籤,例如虛擬機器 (VM) 執行個體。您可以使用標記,透過現有的機構標籤,在整個網路中強制執行條件式存取權控管。
使用這些標記,您可以執行下列動作:
區隔工作負載:您可以明確識別不同環境 (例如 � 或 �) 和服務類型 (例如 � 或 �)。
productiondevelopmentfrontenddatabase集中控管存取權:您可以根據這些標記制定 Secure Web Proxy 政策。舉例來說,您可以建立政策規則,規定「只有來自具有
tag segment=production標記的資源的流量,才能存取一組特定網址」。
本頁面說明如何執行下列操作:
- 建立具有空白政策的 Secure Web Proxy 執行個體
- 建立 Resource Manager 標記並附加至 VM 執行個體
- 建立 Secure Web Proxy 規則
- 測試整個 Secure Web Proxy 設定的連線
事前準備
設定初始設定步驟。
請組織管理員授予您建立及更新標記的必要角色。
確認您已安裝 Google Cloud CLI 406.0.0 以上版本:
gcloud version | head -n1如果您安裝的是舊版 gcloud CLI,請更新版本:
gcloud components update --version=406.0.0
建立政策空白的 Secure Web Proxy 執行個體
如要建立 Secure Web Proxy 執行個體,您必須先建立空白安全政策,然後建立使用該政策的網路 Proxy。
建立空白安全性政策
控制台
前往 Google Cloud 控制台的「SWP Policies」(SWP 政策) 頁面。
按一下「建立政策」。
在「Name」(名稱) 欄位中,輸入政策名稱,例如
myswppolicy。在「Description」(說明) 欄位中輸入政策說明,例如
My new swp policy。在「區域」部分,選取要建立政策的區域,例如
us-central1。點選「建立」。
Cloud Shell
使用偏好的文字編輯器建立
policy.yaml檔案。在您建立的
policy.yaml檔案中新增下列內容:name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTION更改下列內容:
PROJECT_NAME:專案名稱REGION:建立政策的區域,例如us-central1POLICY_NAME:政策名稱POLICY_DESCRIPTION:政策說明
使用
gcloud network-security gateway-security-policies import指令匯入安全政策:gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
建立網路 Proxy
控制台
前往 Google Cloud 控制台的「Web Proxies」(網頁 Proxy) 頁面。
按一下「建立安全無虞的網路 Proxy」。
在「Name」(名稱) 欄位中,輸入網頁 Proxy 的名稱,例如
myswp。在「Description」(說明) 欄位中輸入網頁 Proxy 的說明,例如
My new swp。在「Routing mode」(轉送模式) 中,選取「Explicit」(明確) 選項。
在「Regions」(區域) 中,選取要建立網頁 Proxy 的區域,例如
us-central1。在「Network」(網路) 中,選取要建立網頁 Proxy 的網路。
在「子網路」部分,選取您先前在初始設定步驟中建立的虛擬私有雲子網路。
選用:在「網路 Proxy IP 位址」欄位中,輸入安全網路 Proxy IP 位址。
您可以輸入位於上一步驟所建立子網路中的安全網路 Proxy IP 位址範圍內的 IP 位址。如果您未輸入 IP 位址,安全網頁 Proxy 執行個體會自動從所選子網路中選擇 IP 位址。
在「憑證」部分,選取要用來建立網頁 Proxy 的憑證。
在「政策」部分,選取您建立的政策,以便將網路 Proxy 與該政策建立關聯。
點選「建立」。
Cloud Shell
使用偏好的文字編輯器建立
gateway.yaml檔案。在
gateway.yaml檔案中新增下列內容:name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME type: SECURE_WEB_GATEWAY ports: [GATEWAY_PORT_NUMBERS] certificateUrls: [CERTIFICATE_URLS] gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME network: projects/PROJECT_NAME/global/networks/NETWORK_NAME subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK addresses: [GATEWAY_IP_ADDRESS] scope: samplescope更改下列內容:
使用
gcloud network-services gateways import指令建立 Secure Web Proxy 執行個體:gcloud network-services gateways import GATEWAY_NAME \ --source=gateway.yaml \ --location=REGION
測試連線能力
如要測試連線,請從虛擬私有雲 (VPC) 網路中的任何虛擬機器 (VM) 執行個體使用 curl 指令:
curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
如果一切運作正常,Secure Web Proxy 執行個體會傳回 403 Forbidden 狀態碼。這項錯誤確認了下列事項:
Secure Web Proxy 執行個體已成功部署,並主動接收流量。
Secure Web Proxy 政策會正確強制執行預設安全性狀態,拒絕所有流量,直到您在下節中定義特定
allow規則為止。
建立及附加 Resource Manager 標記
-
GCE_FIREWALL範例:如要為受限環境建立代碼,請按照下列步驟操作:
使用
gcloud resource-manager tags keys create指令建立標記鍵 (access-level),並將用途設為GCE_FIREWALL。從建立指令的輸出內容中,或使用
gcloud resource-manager tags keys list指令,擷取標記金鑰 ID。 您需要這個 ID,才能將標記值連結至這個特定標記鍵。使用
gcloud resource-manager tags values create指令建立標記值 (restricted),並將標記金鑰 ID 指定為父項。
# Create the tag key # The output provides a unique ID, such as "tagKeys/1234567890" gcloud resource-manager tags keys create "access-level" \ --parent="organizations/1234567890" \ --purpose="GCE_FIREWALL" \ --purpose-values="execution_env=ANS" # Create the tag value and connect it to the key # The "--parent" flag identifies to which key this value belongs gcloud resource-manager tags values create "restricted" \ --parent="tagKeys/1234567890" -
附加這些標記後,VM 執行個體的輸出流量就會與特定標記身分建立關聯,讓 Proxy 能夠辨識工作負載並強制執行安全政策規則。
範例:假設您有名為
internal-tool的 VM 執行個體。您可以使用gcloud resource-manager tags bindings create指令,將restricted標記值附加至internal-tool。這樣一來,Proxy 就能識別來自internal-toolVM 執行個體的流量。# Attach the "restricted" tag to a specific VM instance gcloud resource-manager tags bindings create \ --parent="//[compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool](https://compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool)" \ --tag-value="tagValues/987654321"
建立 Secure Web Proxy 規則
控制台
前往 Google Cloud 控制台的「SWP Policies」(SWP 政策) 頁面。
按一下政策名稱,例如
myswppolicy。按一下「新增規則」。
針對每項規則,請執行下列操作:
在「優先順序」中,輸入規則的評估順序 (數字)。系統會依優先順序由高至低評估規則,其中
0為最高優先順序。在「Name」(名稱) 欄位中,輸入規則名稱。
在「Description」(說明) 欄位中輸入規則說明。
在「動作」部分,選取下列任一選項:
- 「允許」:允許符合規則的連線要求。
- 拒絕:拒絕符合規則的連線要求。
在「狀態」欄位中,選取下列任一選項來強制執行規則:
- 已啟用:在 Secure Web Proxy 執行個體上強制執行規則。
- 已停用:不在 Secure Web Proxy 執行個體上強制執行規則。
在「工作階段比對」部分,指定您在上一節建立的代碼專屬 ID。例如:
sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"如要進一步瞭解
SessionMatcher的語法,請參閱 CEL 比對器語言參考資料。在「應用程式比對」部分,指定比對要求的條件。
按一下「Add rule」(新增規則)。
Cloud Shell
使用偏好的文字編輯器建立
rule.yaml檔案。如要允許從必要標記存取網址,請在
rule.yaml檔案中新增下列內容:name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME description: RULE_DESCRIPTION enabled: true priority: RULE_PRIORITY sessionMatcher: CEL_EXPRESSION basicProfile: ALLOW更改下列內容:
RULE_NAME:這項規則的名稱RULE_DESCRIPTION:規則說明RULE_PRIORITY:此規則的優先順序;數字越小,優先順序越高CEL_EXPRESSION:一般運算語言 (CEL) 運算式。詳情請參閱 CEL 比對器語言參考資料。
舉例來說,如要允許從必要標記存取
example.com,請在 YAML 檔案中加入下列sessionMatcher行:sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"將
TAG_VALUE替換為您要允許的代碼。請確認代碼符合數字資源 ID 格式,例如tagValues/567890123456。使用
gcloud network-security gateway-security-policies rules import指令匯入您建立的規則:gcloud network-security gateway-security-policies rules import RULE_NAME \ --source=RULE_FILE.yaml \ --location=REGION \ --gateway-security-policy=POLICY_NAME
測試政策設定
您可以再次測試連線,驗證 Secure Web Proxy 政策 (依賴資源管理工具標記來識別身分) 是否正常運作。
如要測試連線能力,請從與適當 TAG_VALUE 標記相關聯的任何 VM 使用 curl 指令。
curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure
將 IPv4_ADDRESS 替換為 Secure Web Proxy 執行個體的 IPv4 位址。
如果一切正常,您會收到 200 OK 或 403 Forbidden 狀態碼。這些回應確認了下列重要結果:
以標記為準的成功:
200 OK狀態碼會驗證來自 VM 的流量 (已附加正確的 Resource Manager 標記) 是否符合政策規則,並允許透過 Proxy 傳輸。這個已驗證的相符結果會建立連線。以標記為準的拒絕:
403 Forbidden狀態碼會驗證政策是否正確拒絕來自 VM 的流量,這些 VM 要麼沒有指定標記,要麼標記不正確。這項強制執行措施證明,以標記為基礎的區隔和強制執行措施運作正常。