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