Configura la sicurezza del servizio sul mesh di servizi sidecar Envoy su GKE
Questa pagina descrive come configurare le funzionalità di sicurezza sul mesh di servizi sidecar Envoy su GKE.
Prerequisiti
Come punto di partenza, questa guida presuppone che tu abbia già:
- Hai creato un cluster GKE e lo hai registrato in un parco risorse.
- Configura il mesh di servizi sidecar Envoy con le API Gateway.
Configura le policy di autorizzazione sui sidecar su GKE
Questa sezione mostra come configurare diversi tipi di policy di autorizzazione sui sidecar Cloud Service Mesh su GKE.
Prima di poter creare una policy di autorizzazione, devi installare la CustomResourceDefinition (CRD) GCPAuthzPolicy:
curl https://github.com/GoogleCloudPlatform/gke-networking-recipes/blob/main/gateway-api/config/mesh/crd/experimental/gcpauthzpolicy.yaml \
| kubectl apply -f -
I criteri di autorizzazione possono applicare il controllo dell'accesso al traffico in entrata nei sidecar Envoy. I criteri possono essere applicati ai deployment Kubernetes. Il deployment deve trovarsi nello stesso spazio dei nomi della policy di autorizzazione.
Norme di autorizzazione per negare tutte le richieste
Quando hai un workload che deve effettuare solo chiamate in uscita, come un
cron job, puoi configurare un criterio di autorizzazione per negare qualsiasi richiesta HTTP
in entrata al workload. L'esempio seguente nega le richieste HTTP in entrata al
carico di lavoro whereami
.
Per creare e applicare il criterio di autorizzazione di negazione:
Crea una policy di negazione creando un file denominato
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
Applica la norma:
kubectl apply -f deny-all-authz-policy.yaml
Policy di autorizzazione per consentire le richieste
Puoi anche configurare una policy di autorizzazione che consenta solo le richieste che corrispondono a un criterio specifico, rifiutando le altre. L'esempio seguente configura una
policy di autorizzazione su whereami
in cui verranno consentite solo le richieste GET
che hanno l'intestazione HTTP x-user-role:admin
presente nella richiesta.
Per creare e applicare la policy di autorizzazione di tipo Consenti, elimina la policy di negazione creata in precedenza prima di aggiungere questa policy per visualizzare i risultati:
Crea una norma personalizzata creando un file denominato
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
Applica la norma:
kubectl apply -f allow-authz-policy.yaml
Norme di autorizzazione per negare le richieste in base alle regole
L'esempio seguente nega le richieste HTTP GET
in entrata al
carico di lavoro whereami
quando si trova nel percorso /admin
.
Per creare e applicare il criterio di autorizzazione di negazione:
Crea una policy di negazione creando un file denominato
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
Applica la norma:
kubectl apply -f deny-path-authz-policy.yaml