Configure a segurança do serviço na malha de serviços do sidecar do Envoy no GKE
Esta página descreve como configurar funcionalidades de segurança na malha de serviços do sidecar do Envoy 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 a malha de serviços do sidecar do Envoy com as APIs Gateway.
Configure políticas de autorização em sidecars no GKE
Esta secção mostra-lhe como configurar diferentes tipos de políticas de autorização em sidecars do 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 sidecars do Envoy. 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 para a carga de trabalho whereami
.
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: sidecar-example spec: targetRefs: - kind: Deployment name: whereami 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 whereami
, em que apenas os pedidos GET
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: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - methods: ["GET"] 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 GET
de entrada ao recurso whereami
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: sidecar-example spec: targetRefs: - kind: Deployment name: whereami 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