在 GKE 的 Envoy 輔助資訊服務網格中設定服務安全防護
本頁說明如何在 GKE 上設定 Envoy Sidecar 服務網格的安全功能。
必要條件
本指南假設您已具備以下條件:
在 GKE 側車上設定授權政策
本節說明如何在 GKE 的 Cloud Service Mesh Sidecar 上設定不同類型的授權政策。
您必須先安裝 GCPAuthzPolicy CustomResourceDefinition (CRD),才能建立授權政策:
curl https://github.com/GoogleCloudPlatform/gke-networking-recipes/blob/main/gateway-api/config/mesh/crd/experimental/gcpauthzpolicy.yaml \
| kubectl apply -f -
授權政策可對進入 Envoy Sidecar 的流量強制執行存取控管。政策可套用至 Kubernetes 部署項目。部署作業應與授權政策位於相同命名空間。
授權政策,拒絕所有要求
如果工作負載只會發出外呼,例如 Cron 工作,您可以設定授權政策,拒絕工作負載的所有傳入 HTTP 要求。以下範例會拒絕傳送至工作負載 whereami
的 HTTP 要求。
請按照下列步驟建立及套用拒絕授權政策:
建立名為
deny-all-authz-policy.yaml
的檔案,藉此建立拒絕政策:cat >deny-all-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - paths: - type: Prefix value: "/" action: DENY EOF
套用政策:
kubectl apply -f deny-all-authz-policy.yaml
允許要求的授權政策
您也可以設定允許政策,只允許符合特定條件的要求,其餘一律拒絕。下列範例會在 whereami
上設定授權政策,只允許要求中含有 HTTP 標頭 x-user-role:admin
的 GET
要求。
請按照下列步驟建立並套用允許授權政策,並在新增這項政策前刪除先前建立的拒絕政策,以查看結果:
建立名為
allow-authz-policy.yaml
的檔案,即可建立自訂政策:cat >allow-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - methods: ["GET"] when: "request.headers['x-user-role'] == 'admin' action: ALLOW EOF
套用政策:
kubectl apply -f allow-authz-policy.yaml
授權政策,可根據規則拒絕要求
以下範例會拒絕傳送至路徑 /admin
的工作負載 whereami
的 HTTP GET
要求。
請按照下列步驟建立及套用拒絕授權政策:
建立名為
deny-path-authz-policy.yaml
的檔案,藉此建立拒絕政策:cat >deny-path-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - paths: - type: Prefix value: "/admin" methods: ["GET"] action: DENY EOF
套用政策:
kubectl apply -f deny-path-authz-policy.yaml