Configurar a segurança do serviço na malha de serviço gRPC sem proxy no GKE
Esta página descreve como configurar recursos de segurança em uma malha de serviço gRPC sem proxy no GKE.
Pré-requisitos
Como ponto de partida, este guia pressupõe que você já:
- Criou um cluster do GKE e o registrou em uma frota.
- Configurar o cliente e o serviço gRPC com a ativação do xDS.
Configure políticas de autorização no serviço gRPC sem proxy.
Esta seção mostra como configurar diferentes tipos de políticas de autorização nos serviços gRPC sem proxy do Cloud Service Mesh no GKE.
Antes de criar uma política de autorização, é necessário 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 controle de acesso ao tráfego que entra em serviços gRPC sem proxy. As políticas podem ser aplicadas em implantações do Kubernetes. A implantação precisa estar no mesmo namespace que a política de autorização.
Política de autorização para negar todas as solicitações
Quando você tem uma carga de trabalho que precisa fazer apenas chamadas de saída, como um cron job, é possível configurar uma política de autorização para negar todas as solicitações HTTP recebidas na carga de trabalho. O exemplo a seguir nega as solicitações HTTP recebidas para
o serviço gRPC psm-grpc-server
.
Siga estas etapas para criar e aplicar a política de negação de autorização:
Crie uma política de negação criando um arquivo chamado
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 solicitações
Também é possível configurar uma política de permissão que permite apenas solicitações que correspondem a um
critério específico e rejeita o restante. O exemplo a seguir configura uma
política de autorização no psm-grpc-server
, em que apenas solicitações POST
que têm o cabeçalho HTTP x-user-role:admin
presente na solicitação são permitidas.
Siga estas etapas para criar e aplicar a política de autorização de permissão. Exclua a política de negação criada anteriormente antes de adicionar esta política para conferir os resultados:
Crie uma política personalizada criando um arquivo chamado
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 negar solicitações com base em regras
O exemplo a seguir nega solicitações HTTP POST
recebidas para
a carga de trabalho psm-grpc-server
quando ela está no caminho /admin
.
Siga estas etapas para criar e aplicar a política de negação de autorização:
Crie uma política de negação criando um arquivo chamado
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