Configurer la sécurité des services sur un maillage de services gRPC sans proxy sur GKE
Cette page explique comment configurer des fonctionnalités de sécurité sur un maillage de services gRPC sans proxy sur GKE.
Prérequis
Pour commencer, ce guide suppose que vous avez déjà :
- Vous avez créé un cluster GKE et l'avez enregistré dans un parc.
- Configurez un client et un service gRPC compatibles avec xDS.
Configurez des règles d'autorisation sur le service gRPC sans proxy.
Cette section explique comment configurer différents types de règles d'autorisation sur les services gRPC sans proxy Cloud Service Mesh sur GKE.
Avant de pouvoir créer une règle d'autorisation, vous devez installer la définition de ressource personnalisée (CRD) GCPAuthzPolicy :
curl https://github.com/GoogleCloudPlatform/gke-networking-recipes/blob/main/gateway-api/config/mesh/crd/experimental/gcpauthzpolicy.yaml \
| kubectl apply -f -
Les stratégies d'autorisation peuvent appliquer le contrôle des accès au trafic entrant dans les services gRPC sans proxy. Les règles peuvent être appliquées aux déploiements Kubernetes. Le déploiement doit se trouver dans le même espace de noms que la règle d'autorisation.
Règle d'autorisation pour refuser toutes les requêtes
Lorsque vous avez une charge de travail qui est censée n'effectuer que des appels sortants, comme un job cron, vous pouvez configurer une règle d'autorisation pour refuser toute requête HTTP entrante à la charge de travail. L'exemple suivant refuse les requêtes HTTP entrantes au service gRPC psm-grpc-server
.
Pour créer et appliquer la règle d'autorisation de refus, procédez comme suit :
Créez une règle de refus en créant un fichier nommé
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
Appliquez la règle :
kubectl apply -f deny-all-authz-policy.yaml
Règle d'autorisation pour autoriser les requêtes
Vous pouvez également configurer une règle d'autorisation qui n'autorise que les requêtes correspondant à un critère spécifique et rejette les autres. L'exemple suivant configure une règle d'autorisation sur psm-grpc-server
où seules les requêtes POST
qui contiennent l'en-tête HTTP x-user-role:admin
dans la requête seront autorisées.
Pour créer et appliquer la règle d'autorisation "Autoriser", procédez comme suit. Supprimez la règle de refus créée précédemment avant d'ajouter cette règle pour voir les résultats :
Créez une règle personnalisée en créant un fichier nommé
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
Appliquez la règle :
kubectl apply -f allow-authz-policy.yaml
Règle d'autorisation pour refuser les requêtes en fonction de règles
L'exemple suivant refuse les requêtes HTTP POST
entrantes à la charge de travail psm-grpc-server
lorsqu'elle se trouve sur le chemin /admin
.
Pour créer et appliquer la règle d'autorisation de refus, procédez comme suit :
Créez une règle de refus en créant un fichier nommé
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
Appliquez la règle :
kubectl apply -f deny-path-authz-policy.yaml