Configura la seguridad del servicio en la malla de servicios de gRPC sin proxy en GKE
En esta página, se describe cómo configurar funciones de seguridad en una malla de servicios de gRPC sin proxy en GKE.
Requisitos previos
Como punto de partida, en esta guía se supone que ya realizaste las siguientes acciones:
- Creaste un clúster de GKE y lo registraste en una flota.
- Configura el cliente y el servicio de gRPC habilitados para xDS.
Configura políticas de autorización en el servicio de gRPC sin proxy.
En esta sección, se muestra cómo configurar diferentes tipos de políticas de autorización en los servicios de gRPC sin proxy de Cloud Service Mesh en GKE.
Antes de crear una política de autorización, debes instalar la definición de recurso personalizado (CRD) de GCPAuthzPolicy:
curl https://github.com/GoogleCloudPlatform/gke-networking-recipes/blob/main/gateway-api/config/mesh/crd/experimental/gcpauthzpolicy.yaml \
| kubectl apply -f -
Las políticas de autorización pueden aplicar el control de acceso al tráfico que ingresa a los servicios de gRPC sin proxy. Las políticas se pueden aplicar en las implementaciones de Kubernetes. Deployment debe estar en el mismo espacio de nombres que la política de autorización.
Política de autorización para rechazar todas las solicitudes
Cuando tienes una carga de trabajo que solo debe realizar llamadas salientes, como un trabajo cron, puedes configurar una política de autorización para rechazar cualquier solicitud HTTP entrante a la carga de trabajo. En el siguiente ejemplo, se rechazan las solicitudes HTTP entrantes al servicio de gRPC psm-grpc-server
.
Sigue estos pasos para crear y aplicar la política de autorización de denegación:
Crea una política de denegación creando un archivo llamado
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
Aplica la política:
kubectl apply -f deny-all-authz-policy.yaml
Política de autorización para permitir solicitudes
También puedes configurar una política de permiso que solo permita las solicitudes que coincidan con un criterio específico y rechace el resto. En el siguiente ejemplo, se configura una política de autorización en psm-grpc-server
, en la que solo se permitirán las solicitudes POST
que tengan el encabezado HTTP x-user-role:admin
presente en la solicitud.
Sigue estos pasos para crear y aplicar la política de autorización de permiso, y borrar la política de denegación creada anteriormente antes de agregar esta política para ver los resultados:
Crea una política personalizada creando un archivo llamado
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
Aplica la política:
kubectl apply -f allow-authz-policy.yaml
Política de autorización para rechazar solicitudes según reglas
En el siguiente ejemplo, se rechazan las solicitudes HTTP POST
entrantes a la carga de trabajo psm-grpc-server
cuando se encuentra en la ruta /admin
.
Sigue estos pasos para crear y aplicar la política de autorización de denegación:
Crea una política de denegación creando un archivo llamado
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
Aplica la política:
kubectl apply -f deny-path-authz-policy.yaml