在 GKE 上的 Envoy Sidecar 服务网格上设置服务安全
本页介绍了如何在 GKE 上的 Envoy Sidecar 服务网格上设置安全功能。
前提条件
首先,本指南假定您已完成以下操作:
在 GKE 上为 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 边车的流量强制执行访问权限控制。您可以对 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: wherami 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
用于根据规则拒绝请求的授权政策
以下示例会在工作负载 whereami
位于路径 /admin
时,拒绝对其发出的传入 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