Cette page explique comment sécuriser une passerelle à l'aide de diverses fonctionnalités de sécurité :
Règles SSL pour garantir que la passerelle utilise les protocoles et algorithmes sécurisés requis
Certificats pour sécuriser le trafic client vers passerelle et passerelle vers backends avec TLS
Stratégie de sécurité Google Cloud Armor pour protéger les services contre les attaques DDoS
- Identity-Aware Proxy (IAP) pour fournir une couche d'authentification et d'autorisation avant d'autoriser l'accès à un service
Pour en savoir plus sur la sécurité des passerelles, consultez la section Sécurité des passerelles.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande
gcloud components update
.
Conditions requises pour le contrôleur GKE Gateway
- Pour l'environnement standard, GKE version 1.24 ou ultérieure.
- Pour Autopilot, la version 1.26 de GKE ou une version ultérieure.
- Google Cloud CLI version 407.0.0 ou ultérieure.
- L'API Gateway n'est compatible qu'avec les clusters de VPC natif.
- Si vous utilisez les GatewayClasses internes, vous devez activer un sous-réseau proxy réservé.
- Le module complémentaire
HttpLoadBalancing
doit être activé sur votre cluster. - Si vous utilisez Istio, vous devez mettre à niveau Istio vers l'une des versions suivantes :
- 1.15.2 ou ultérieure
- 1.14.5 ou ultérieure
- 1.13.9 ou ultérieure
- Si vous utilisez un VPC partagé, vous devez attribuer le rôle
Compute Network User
au compte de service GKE du projet de service dans le projet hôte.
Restrictions et limitations
Outre les restrictions et limitations du contrôleur GKE Gateway, les limites suivantes s'appliquent spécifiquement à la sécurité de la passerelle :
- Les configurations TLS utilisant un certificat SSL ou un gestionnaire de certificats sur les passerelles ne sont pas compatibles avec GKE version 1.28.4-gke.1083000. Utilisez un secret Kubernetes pour contourner cette version de GKE.
- Vous ne pouvez pas utiliser l'annotation
networking.gke.io/certmap
avec une clausetls.certificateRefs
sur la même ressource de passerelle. Si vous référencez unCertificateMap
dans une passerelle, GKE le traitera comme une erreur.
- Le gestionnaire de certificats est compatible avec les certificats autogérés et gérés par Google. Les certificats gérés par Google sont compatibles avec les passerelles régionales (disponibles en version bêta) et les passerelles globales.
Lorsque vous utilisez des certificats SSL gérés par Google, vous devez créer ces certificats en dehors de GKE avant de les associer à votre passerelle.
Les certificats SSL gérés par Google ne sont pas compatibles avec les passerelles régionales. Pour en savoir plus sur les méthodes de terminaison TLS pour chaque classe GatewayClass, consultez la page Compatibilité avec TLS GatewayClass.
Vous ne pouvez pas utiliser le même service comme backend vers une passerelle régionale et globale si vous référencez une stratégie de sécurité de backend Google Cloud Armor dans votre
GCPBackendPolicy
. Vous devez créer deux règles et services distincts pour ce cas d'utilisation.Le contrôleur Gateway n'est pas compatible avec la ressource
ManagedCertificate
.Le contrôleur Gateway n'est pas compatible avec l'annotation
networking.gke.io/managed-certificates
.Le champ
appProtocol
de la configuration de service n'accepte que des lettres en majuscules pour la valeur du protocole (HTTP
,HTTPS
ouHTTP2
). L'utilisation de lettres en minuscules entraîne l'utilisation du protocole HTTP avec les backends.
Pour obtenir la liste des champs et des fonctionnalités de l'API Gateway compatibles avec les ressources GatewayClass disponibles sur GKE, consultez la page Fonctionnalités de la ressource GatewayClass.
Sécuriser une passerelle à l'aide d'un Secret Kubernetes
Dans cet exemple, vous configurez une passerelle à l'aide d'un Secret Kubernetes.
Stocker un certificat dans un Secret Kubernetes
Vous pouvez utiliser un certificat émis et validé par votre autorité de certification (CA) ou créer un certificat autosigné. Les étapes suivantes utilisent un certificat autosigné.
Créer une clé privée :
openssl genrsa -out PRIVATE_KEY_FILE 2048
Remplacez
PRIVATE_KEY_FILE
par le nom de votre fichier de clé privée, tel queprivate-key.pem
. Pour en savoir plus, consultez la page Sélectionner ou créer une clé privée.Créez un fichier de configuration OpenSSL :
cat <<EOF >CONFIG_FILE [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements prompt = no [extension_requirements] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @sans_list [dn_requirements] 0.organizationName = example commonName = store.example.com [sans_list] DNS.1 = store.example.com EOF
Remplacez
CONFIG_FILE
par le nom du nouveau fichier de configuration, par exempleconfig-file.cnf
.Créez un fichier de requête de signature de certificat (CSR) :
openssl req -new -key PRIVATE_KEY_FILE \ -out CSR_FILE \ -config CONFIG_FILE
Remplacez
CSR_FILE
par le nom du nouveau fichier CSR, tel quecert.pem
. Pour en savoir plus, consultez la section Créer un CSR.Signer le CSR :
openssl x509 -req \ -signkey PRIVATE_KEY_FILE \ -in CSR_FILE \ -out CERTIFICATE_FILE \ -extfile CONFIG_FILE \ -extensions extension_requirements \ -days 30
Remplacez
CERTIFICATE_FILE
par le chemin d'accès et le nom du fichier généré par la commande, tel quecert-file.pem
. Pour en savoir plus, consultez la section Signer le CSR.Créez un secret TLS Kubernetes à l'aide de la clé et du fichier de certificat que vous avez créés :
kubectl create secret tls store-example-com \ --cert=CERTIFICATE_FILE \ --key=PRIVATE_KEY_FILE
GKE enregistre le certificat et la clé en tant que ressource Kubernetes que vous pouvez associer à votre passerelle.
Créer une passerelle et un routage HTTP
Enregistrez le manifeste suivant sous le nom
external-gateway.yaml
:kind: Gateway apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: external-http spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: https protocol: HTTPS port: 443 tls: mode: Terminate certificateRefs: - name: store-example-com
Ce fichier manifeste décrit une passerelle avec les propriétés suivantes :
gatewayClassName: gke-l7-global-external-managed
: déploie un équilibreur de charge d'application externe global.protocol: HTTPS
etport: 443
: requis pour l'activation de TLS.tls
: fait référence au secret Kubernetes créé à l'étape précédente.
Appliquez le fichier manifeste au cluster :
kubectl apply -f external-gateway.yaml
Enregistrez le manifeste suivant sous le nom
store-external-route.yaml
:kind: HTTPRoute apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: store-external labels: gateway: external-http spec: parentRefs: - name: external-http hostnames: - "store.example.com" rules: - backendRefs: - name: store-v1 port: 8080
Ce fichier manifeste décrit un routage HTTP qui correspond au trafic vers
store.example.com
et l'envoie au servicestore-v1
.Appliquez le fichier manifeste au cluster :
kubectl apply -f store-external-route.yaml
Vérifier la passerelle
Vérifiez que la ressource Gateway fonctionne en envoyant une requête sur Internet.
Obtenez l'adresse IP de la passerelle :
kubectl get gateway external-http -o=jsonpath="{.status.addresses[0].value}"
Le résultat ressemble à ce qui suit :
203.0.113.12
Ce résultat est une adresse IP publique, ce qui signifie que tout client disposant d'un accès Internet peut s'y connecter.
Accédez au domaine de la passerelle à l'aide de
curl
:curl https://store.example.com --resolve store.example.com:443:GATEWAY_IP_ADDRESS --cacert CERTIFICATE_FILE -v
Remplacez les éléments suivants :
GATEWAY_IP_ADDRESS
: adresse IP de l'équilibreur de charge de la passerelle.CERTIFICATE_FILE
: fichier de certificat que vous avez généré. Vous devez enregistrer ce fichier sur la machine que vous utilisez pour vous connecter à la passerelle. Le certificat est requis pour authentifier la passerelle, car celle-ci utilise un certificat autosigné.
L'option
--resolve
convertit le nom de domaine en adresse IP de la passerelle, ce qui est nécessaire car le DNS n'est pas configuré pour ce domaine.Le résultat ressemble à ce qui suit :
... * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 * ALPN, server accepted to use h2 * Server certificate: * subject: O=example; CN=store.example.com * start date: Apr 19 15:54:50 2021 GMT * expire date: Apr 19 15:54:50 2022 GMT * common name: store.example.com (matched) * issuer: O=example; CN=store.example.com * SSL certificate verify ok. ... { "cluster_name": "gw", "host_header": "store.example.com", "metadata": "store-v1", "node_name": "gke-gw-default-pool-51ccbf30-yya8.c.agmsb-k8s.internal", "pod_name": "store-v1-84b47c7f58-tj5mn", "pod_name_emoji": "😍", "project_id": "agmsb-k8s", "timestamp": "2021-04-19T16:30:08" # Several lines of output omitted here. }
Cette sortie inclut un handshake TLS réussi suivi d'une réponse de l'application. La connexion TLS est interrompue au niveau de la passerelle et l'application répond au client de manière sécurisée.
Sécuriser une passerelle à l'aide d'un certificat SSL
Dans cet exemple, vous configurez une passerelle avec un certificat SSL géré par Google.
Créer un certificat SSL
Créez une ressource
SslCertificate
globale gérée par Google :gcloud compute ssl-certificates create store-example-com \ --domains=store.example.com \ --global
Créer une passerelle et un routage HTTP
Enregistrez le manifeste suivant sous le nom
external-gateway.yaml
:kind: Gateway apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: external-http spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: https protocol: HTTPS port: 443 tls: mode: Terminate options: networking.gke.io/pre-shared-certs: store-example-com
Ce fichier manifeste décrit une passerelle avec les propriétés suivantes :
gatewayClassName: gke-l7-global-external-managed
: déploie un équilibreur de charge d'application externe global.protocol:HTTPS
etport:443
: requis pour l'activation de TLS.tls.mode:Terminate
: interrompt TLS à l'aide de votre certificat SSL.
Appliquez le fichier manifeste à votre cluster :
kubectl apply -f external-gateway.yaml
Enregistrez le fichier manifeste suivant de la ressource HTTPRoute sous le nom
store-external-route.yaml
:kind: HTTPRoute apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: store-external labels: gateway: external-http spec: parentRefs: - name: external-http hostnames: - "store.example.com" rules: - backendRefs: - name: store-v1 port: 8080
Déployez la ressource HTTPRoute dans votre cluster :
kubectl apply -f store-external-route.yaml
Le déploiement de la passerelle de la part de GKE peut prendre plusieurs minutes.
Vérifier la passerelle
Obtenez l'adresse IP de la passerelle :
kubectl get gateway external-http -o=jsonpath="{.status.addresses[0].value}"
Le résultat ressemble à ce qui suit :
203.0.113.12
Ce résultat est une adresse IP publique, ce qui signifie que tout client disposant d'un accès Internet peut s'y connecter.
Mettez à jour un enregistrement A ou AAAA pour diriger votre domaine vers l'adresse IP de la passerelle.
Cette étape n'est nécessaire que si vous configurez un certificat SSL géré par Google. Si vous configurez un certificat autogéré, vous pouvez ignorer cette étape.
Une fois les enregistrements DNS mis à jour, l'utilisation de votre certificat géré par Google de la part de votre équilibreur de charge peut prendre jusqu'à 10 minutes.
Vérifiez que la passerelle fonctionne en envoyant une requête sur Internet à l'aide de
curl
:curl https://store.example.com -v
Le résultat ressemble à ce qui suit :
... * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 * ALPN, server accepted to use h2 * Server certificate: * subject: O=example; CN=store.example.com * start date: Apr 19 15:54:50 2021 GMT * expire date: Apr 19 15:54:50 2022 GMT * common name: store.example.com (matched) * issuer: O=example; CN=store.example.com * SSL certificate verify ok. ... { "cluster_name": "gw", "host_header": "store.example.com", "metadata": "store-v1", "node_name": "gke-gw-default-pool-51ccbf30-yya8.c.agmsb-k8s.internal", "pod_name": "store-v1-84b47c7f58-tj5mn", "pod_name_emoji": "😍", "project_id": "agmsb-k8s", "timestamp": "2021-04-19T16:30:08", "zone": "us-west1-a" }
Cette sortie inclut un handshake TLS réussi et une réponse de l'application. TLS est correctement interrompu au niveau de la passerelle et l'application répond au client de manière sécurisée.
Sécuriser une passerelle à l'aide du gestionnaire de certificats
Dans cet exemple, vous configurez une passerelle à l'aide du gestionnaire de certificats.
Créer un objet Certificate
Passerelle globale
Pour créer une passerelle globale, vous devez référencer une ressource de mappage de certificat qui contient un ou plusieurs certificats. Vous devez créer au moins un certificat et l'ajouter en tant qu'entrée à votre mappage de certificats.
Pour créer un certificat, commencez par créer une clé privée et un fichier de certificat.
Créez une ressource
Certificate
en chargeant votre certificat et votre clé autogérés :gcloud certificate-manager certificates create store-example-com-cert \ --certificate-file="cert.pem" \ --private-key-file="PRIVATE_KEY_FILE"
Créez un
CertificateMap
:gcloud certificate-manager maps create store-example-com-map
Créez un
CertificateMapEntry
qui attribue le certificat àCertificateMap
:gcloud certificate-manager maps entries create store-example-com-map-entry \ --map=store-example-com-map \ --hostname=store.example.com \ --certificates=store-example-com-cert
Passerelle régionale
Pour une passerelle régionale, vous devez créer un objet Certificate
qui sera spécifié directement lors de la création de la passerelle. Contrairement à une passerelle globale, vous n'avez pas besoin de créer un CertificateMap
auquel les certificats sont attribués.
Créez une ressource
Certificate
en important votre fichier de certificat et votre clé :
gcloud certificate-manager certificates create "CERTIFICATE_NAME" \
--certificate-file="CERTIFICATE_FILE" \
--private-key-file="PRIVATE_KEY_FILE" \
--location="REGION"
Remplacez les éléments suivants :
CERTIFICATE_NAME
: nom de votre certificat, par exemplestore-example-com-cert
.CERTIFICATE_FILE
: nom du fichier de certificat, par exemple,cert.pem
.PRIVATE_KEY_FILE
: nom de votre fichier de clé privée, tel queprivate-key.pem
. Pour en savoir plus, consultez la page Sélectionner ou créer une clé privée.REGION
: nom de la région dans laquelle vous configurez la passerelle, par exempleus-central1
.
Créer une passerelle et un routage HTTP
Passerelle globale
Pour créer une passerelle globale, procédez comme suit :
Enregistrez le manifeste suivant sous le nom
cert-map-gateway.yaml
:kind: Gateway apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: external-http annotations: networking.gke.io/certmap: store-example-com-map spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: https protocol: HTTPS port: 443
Ce fichier manifeste décrit une passerelle avec les propriétés suivantes :
gatewayClassName: gke-l7-global-external-managed
: déploie un équilibreur de charge d'application externe global.protocol: HTTPS
etport: 443
: requis pour l'activation de TLS.
Il n'y a pas de section TLS, car TLS est configuré avec le gestionnaire de certificats à l'aide de l'annotation
networking.gke.io/certmap
.Appliquez le fichier manifeste au cluster :
kubectl apply -f cert-map-gateway.yaml
Le déploiement de la passerelle de la part de GKE peut prendre plusieurs minutes.
Pour créer une ressource HTTPRoute, enregistrez le fichier manifeste suivant sous le nom
cert-map-http-route.yaml
:apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: foo namespace: default spec: parentRefs: - name: external-http hostnames: - foo.example.com rules: - matches: - path: value: / backendRefs: - name: foo-v1 port: 8080
Appliquez le fichier manifeste au cluster :
kubectl apply -f cert-map-http-route.yaml
Passerelle régionale
Lors de la création d'une passerelle régionale, vous pouvez spécifier des certificats gérés par le gestionnaire de certificats et des certificats gérés par Compute Engine.
Pour créer une passerelle externe régionale, enregistrez le fichier manifeste suivant sous le nom
external-gateway.yaml
:kind: Gateway apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: gateway namespace: corp spec: gatewayClassName: gke-17-regional-external-managed listeners: - name: gateway-pre-shared-certmap protocol: HTTPS port: 443 tls: mode: Terminate options: networking.gke.io/cert-manager-certs: store-example-com-cert1, store-example-com-cert2 allowedRoutes: kinds: - kind: HTTPRoute namespaces: from: All
Ce fichier manifeste décrit une passerelle avec les propriétés suivantes :
gatewayClassName
:gke-l7-regional-external-managed
: déploie un équilibreur de charge d'application externe régional.protocol: HTTPS
etport: 443
: requis pour l'activation de TLS.options
:networking.gke.io/cert-manager-certs
: certificats gérés par le gestionnaire de certificats.
Pour créer une passerelle interne régionale, remplacez la valeur de
gatewayClassName
pargke-17-rilb
dans l'exemple précédent. Cette opération déploie un équilibreur de charge d'application interne.Appliquez le fichier manifeste au cluster :
kubectl apply -f external-gateway.yaml
Pour créer une ressource HTTPRoute, enregistrez le fichier manifeste suivant sous le nom
store-external-route.yaml
:apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: store-external labels: gateway: external-http spec: parentRefs: - name: external-http hostnames: - "store.example.com" rules: backendRefs: - name: store-v1 port: 8080
Ce fichier manifeste décrit une route HTTPRoute qui met en correspondance le trafic pour
store.example.com
et le transfère au servicestore-v1
.Appliquez le fichier manifeste au cluster :
kubectl apply -f store-external-route.yaml
Vérifier la passerelle
Obtenez l'adresse IP de la passerelle :
kubectl get gateway external-http -o=jsonpath="{.status.addresses[0].value}"
Le résultat ressemble à ce qui suit :
203.0.113.12
Ce résultat est une adresse IP publique, ce qui signifie que tout client disposant d'un accès Internet peut s'y connecter.
Mettez à jour un enregistrement A ou AAAA pour diriger votre domaine vers l'adresse IP de la passerelle.
Cette étape n'est nécessaire que si vous configurez un certificat SSL géré par Google. Si vous configurez un certificat autogéré, vous pouvez ignorer cette étape.
Une fois les enregistrements DNS mis à jour, l'utilisation de votre certificat géré par Google de la part de votre équilibreur de charge peut prendre jusqu'à 10 minutes.
Accédez au domaine de la passerelle à l'aide de
curl
:curl https://store.example.com --resolve store.example.com:443:GATEWAY_IP_ADDRESS --cacert CERTIFICATE_FILE -v
Remplacez les éléments suivants :
GATEWAY_IP_ADDRESS
: adresse IP de l'équilibreur de charge de la passerelle.CERTIFICATE_FILE
: fichier de certificat que vous avez généré. Vous devez enregistrer ce fichier sur la machine que vous utilisez pour vous connecter à la passerelle. Le certificat est requis pour authentifier la passerelle, car celle-ci utilise un certificat autosigné.
Le résultat ressemble à ce qui suit :
... * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 * ALPN, server accepted to use h2 * Server certificate: * subject: O=example; CN=store.example.com * start date: Apr 19 15:54:50 2021 GMT * expire date: Apr 19 15:54:50 2022 GMT * common name: store.example.com (matched) * issuer: O=example; CN=store.example.com * SSL certificate verify ok. ... { "cluster_name": "gw", "host_header": "store.example.com", "metadata": "store-v1", "node_name": "gke-gw-default-pool-51ccbf30-yya8.c.agmsb-k8s.internal", "pod_name": "store-v1-84b47c7f58-tj5mn", "pod_name_emoji": "😍", "project_id": "agmsb-k8s", "timestamp": "2021-04-19T16:30:08", "zone": "us-west1-a" }
Cette sortie inclut un handshake TLS réussi et une réponse de l'application. TLS est correctement interrompu au niveau de la passerelle et l'application répond au client de manière sécurisée.
Sécuriser le trafic de l'équilibreur de charge vers l'application à l'aide de TLS
Vous pouvez chiffrer le trafic de l'équilibreur de charge vers les pods de backend à l'aide du champ ports[].appProtocol
. Les champs compatibles avec appProtocol
sont : HTTP
, HTTPS
et HTTP2
.
Le fichier manifeste suivant décrit un service qui spécifie que l'équilibreur de charge doit utiliser le trafic HTTPS pour communiquer avec les pods de backend :
apiVersion: v1
kind: Service
metadata:
name: store-v2
spec:
selector:
app: store
version: v2
ports:
- port: 8080
targetPort: 8080
appProtocol: HTTPS
L'équilibreur de charge ne vérifie pas le certificat utilisé par les pods de backend. Il est de votre responsabilité de vous assurer que le certificat utilisé sur les pods de backend est valide.
Sécuriser le trafic client vers l'équilibreur de charge à l'aide de règles SSL
Lorsque vos applications sont exposées via une passerelle externe qui utilise HTTPS, il est important d'utiliser les derniers protocoles ou de spécifier la version minimale de SSL ou TLS. Vous pouvez sécuriser le trafic du client à l'équilibreur de charge à l'aide de règles SSL.
Pour en savoir plus sur les règles SSL pouvant être associées à votre passerelle et sur leur création, consultez la page Configurer des règles SSL pour sécuriser le trafic client vers l'équilibreur de charge.
Protéger vos backends à l'aide de Google Cloud Armor
Les règles de sécurité Google Cloud Armor vous aident à protéger vos applications à équilibrage de charge contre les attaques Web. Après avoir configuré une stratégie de sécurité Google Cloud Armor, vous pouvez la référencer dans une stratégie GCPBackendPolicy
appliquée à vos services Kubernetes.
Pour configurer des stratégies Google Cloud Armor avec passerelle, consultez la section Configurer la stratégie de sécurité Google Cloud Armor pour sécuriser vos services de backend.
Authentifier les requêtes sur vos backends à l'aide d'Identity-Aware Proxy
Identity-Aware Proxy vous aide à protéger vos backends contre le trafic indésirable en authentifiant les clients qui envoient des requêtes à vos applications et en appliquant une autorisation de trafic basée sur les rôles. Après avoir activé Identity-Aware Proxy pour GKE, vous pouvez référencer vos identifiants OAuth dans un fichier GCPBackendPolicy
appliqué à vos services Kubernetes.
Pour configurer Identity-Aware Proxy avec Gateway, consultez la page Configurer Identity-Aware Proxy.
Étapes suivantes
- En savoir plus sur la sécurité des passerelles.