Configure a segurança do serviço na malha de serviços gRPC sem proxy no GKE
Esta página descreve como configurar funcionalidades de segurança numa malha de serviços gRPC sem proxy no GKE.
Pré-requisitos
Como ponto de partida, este guia pressupõe que já:
- Criou um cluster do GKE e registou-o numa frota.
- Configure o cliente gRPC e o serviço com o xDS ativado.
Configure políticas de autorização no serviço gRPC sem proxy.
Esta secção mostra como configurar diferentes tipos de políticas de autorização em serviços gRPC sem proxy da Cloud Service Mesh no GKE.
Antes de poder criar uma política de autorização, tem de instalar a CustomResourceDefinition (CRD) GCPAuthzPolicy:
curl https://github.com/GoogleCloudPlatform/gke-networking-recipes/blob/main/gateway-api/config/mesh/crd/experimental/gcpauthzpolicy.yaml \
| kubectl apply -f -
As políticas de autorização podem aplicar o controlo de acesso ao tráfego que entra nos serviços gRPC sem proxy. As políticas podem ser aplicadas em implementações do Kubernetes. A implementação deve estar no mesmo espaço de nomes que a política de autorização.
Política de autorização para recusar todos os pedidos
Quando tem uma carga de trabalho que se destina a fazer apenas chamadas de saída, como um trabalho cron, pode configurar uma política de autorização para recusar quaisquer pedidos HTTP recebidos para a carga de trabalho. O exemplo seguinte nega pedidos HTTP recebidos ao serviço gRPC psm-grpc-server
.
Execute os seguintes passos para criar e aplicar a política de autorização de recusa:
Crie uma política de recusa criando um ficheiro denominado
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
Aplique a política:
kubectl apply -f deny-all-authz-policy.yaml
Política de autorização para permitir pedidos
Também pode configurar uma política de permissão que permita apenas pedidos que correspondam a critérios específicos, rejeitando os restantes. O exemplo seguinte configura uma política de autorização no psm-grpc-server
onde apenas os pedidos POST
que tenham o cabeçalho http x-user-role:admin
presente no pedido são permitidos.
Siga estes passos para criar e aplicar a política de autorização de permissão, eliminar a política de negação criada anteriormente antes de adicionar esta política para ver os resultados:
Crie uma política personalizada criando um ficheiro denominado
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
Aplique a política:
kubectl apply -f allow-authz-policy.yaml
Política de autorização para recusar pedidos com base em regras
O exemplo seguinte nega pedidos HTTP POST
de entrada ao recurso psm-grpc-server
quando está no caminho /admin
.
Execute os seguintes passos para criar e aplicar a política de autorização de recusa:
Crie uma política de recusa criando um ficheiro denominado
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
Aplique a política:
kubectl apply -f deny-path-authz-policy.yaml