La fonctionnalité Apigee mTLS renforce la sécurité des communications entre les composants de votre cluster Edge pour le cloud privé. Il fournit une méthode standard du secteur pour configurer et installer le maillage de services. Il permet la gestion des packages et l'automatisation de la configuration.
Présentation de l'architecture
Pour sécuriser les communications entre les composants, Apigee mTLS utilise un maillage de services qui établit des connexions TLS sécurisées et mutuellement authentifiées entre les composants.
L'image suivante montre les connexions entre les composants Apigee sécurisés par Apigee mTLS (in red). Les ports indiqués dans l'image sont des exemples. Pour obtenir la liste des plages que chaque composant peut utiliser, consultez Utilisation des ports.
(Notez que les ports indiqués par un "M" sont utilisés pour gérer le composant et doivent être ouverts sur le composant pour que le serveur de gestion puisse y accéder.)
Comme vous pouvez le voir dans le schéma ci-dessus, Apigee mTLS renforce la sécurité des connexions entre la plupart des composants du cluster, y compris :
Source | Destination | |
---|---|---|
Serveur de gestion | Nœuds Router, MP, QPid, LDAP, Postgres, Zookeeper et Cassandra | |
Routeur | Bouclage ; nœuds Qpid, Zookeeper et Cassandra | |
Processeur de messages | Bouclage ; nœuds Qpid, Zookeeper et Cassandra | |
ZooKeeper et Cassandra | Autres nœuds Zookeeper et Cassandra | |
Interface utilisateur Edge | SMTP (pour les fournisseurs d'identité externes uniquement) | |
Postgres | Autres nœuds Postgres, Zookeeper et Cassandra |
Chiffrement/Déchiffrement des messages
Le maillage de services Apigee mTLS se compose de serveurs Consul qui s'exécutent sur chaque nœud ZooKeeper de votre cluster et des services Consul suivants sur chaque nœud du cluster :
- Un proxy de sortie qui intercepte les messages sortants sur le nœud hôte. Ce service chiffre les messages sortants avant de les envoyer à leur destination.
- Un proxy d'entrée qui intercepte les messages entrants sur le nœud hôte. Ce service déchiffre les messages entrants avant de les envoyer à leur destination finale.
Par exemple, lorsque le serveur de gestion envoie un message au routeur, le service de proxy de sortie intercepte le message sortant, le chiffre, puis l'envoie au routeur. Lorsque le nœud du routeur reçoit le message, le service de proxy d'entrée le déchiffre, puis le transmet au composant du routeur pour traitement.
Tout cela se passe de manière transparente pour les composants Edge : ils ne sont pas au courant du processus de chiffrement et de déchiffrement effectué par les services de proxy Consul.
De plus, Apigee mTLS utilise l'utilitaire iptables
, un service de pare-feu Linux qui gère la redirection du trafic.
Conditions requises
Avant de pouvoir installer Apigee mTLS, votre environnement doit répondre aux exigences suivantes :
- Exigences concernant la topologie
- Utilitaires installés et activés
- Compte utilisateur disposant du niveau d'autorisation approprié
- Une machine d'administration (recommandé)
- Utilisation des ports
Les sections suivantes décrivent chacune de ces exigences en détail.
Exigences concernant la topologie
Apigee mTLS exige que la topologie de votre environnement inclue au moins trois nœuds Zookeeper. Par conséquent, vous ne pouvez installer Apigee mTLS que sur des topologies qui utilisent 5, 9, 12 (multicentres de données) ou 13 nœuds. Pour en savoir plus, consultez Topologies d'installation.
Utilitaires/Packages
Apigee mTLS nécessite que les packages suivants soient installés et activés sur chaque machine de votre cluster, y compris votre machine d'administration, avant de commencer le processus d'installation :
Utilitaires/Packages | Description | Puis-je supprimer le fichier après l'installation ? |
---|---|---|
base64 |
Valide les données dans les scripts d'installation. | |
gnu-bash gnu-sed gnu-grep |
Utilisé par le script d'installation et d'autres outils courants. | |
iptables |
Remplace le pare-feu par défaut, firewalld . |
|
iptables-services |
Fournit des fonctionnalités à l'utilitaire iptables . |
|
lsof |
Utilisé par le script d'installation. | |
nc |
Valide les routes iptables . |
|
openssl |
Signe les certificats localement lors du processus d'amorçage initial. |
Lors de l'installation, vous installez également le package Consul sur la machine d'administration afin de pouvoir générer des identifiants et la clé de chiffrement.
Le package apigee-mtls
installe et configure les serveurs Consul, y compris les proxys d'entrée et de sortie sur les nœuds ZooKeeper du cluster.
Autorisations du compte utilisateur
Avant l'installation, créez un compte utilisateur ou assurez-vous d'avoir accès à un compte disposant de privilèges élevés.
Le compte qui exécute l'installation d'Apigee mTLS sur chaque nœud du cluster doit pouvoir :
- Démarrer, arrêter, redémarrer et initialiser les composants Apigee
- Définir des règles de pare-feu
- Créer un compte utilisateur OS/système
- Activer, désactiver, démarrer, arrêter et masquer des services avec
systemctl
Machine d'administration (recommandé)
Apigee vous recommande de disposer d'un nœud dans le cluster sur lequel vous pouvez effectuer diverses tâches d'administration décrites dans ce document, y compris :
- Installez HashiCorp Consul 1.6.2.
- Générez et distribuez une paire certificat/clé et une clé de chiffrement gossip.
- Mettez à jour et distribuez le fichier de configuration.
Lorsque vous configurez la machine d'administration :
- Assurez-vous de disposer d'un accès racine.
- Téléchargez et installez les utilitaires
apigee-service
etapigee-setup
sur celui-ci, comme décrit dans Installer l'utilitaire apigee-setup Edge. - Assurez-vous de pouvoir utiliser
scp/ssh
pour accéder à tous les nœuds du cluster depuis la machine d'administration. Cela est nécessaire pour que vous puissiez distribuer votre fichier de configuration et vos identifiants.
Utilisation et attribution des ports
Cette section décrit l'utilisation et l'attribution des ports pour prendre en charge les communications Consul avec Apigee mTLS.
Utilisation des ports : tous les nœuds exécutant apigee-mtls
Tous les nœuds du cluster qui utilisent le service apigee-mtls
doivent autoriser les connexions des services sur localhost (127.0.0.1). Cela permet aux proxys Consul de communiquer avec les autres services lorsqu'ils traitent les messages entrants et sortants.
Utilisation des ports : nœuds de serveur Consul (nœuds exécutant ZooKeeper)
Vous devez ouvrir la plupart des ports suivants sur les nœuds du serveur Consul (les nœuds exécutant ZooKeeper) pour accepter les requêtes de tous les nœuds du cluster :
Nœud | Port du serveur Consul | Description | Protocole | Autoriser les agents mTLS externes * |
---|---|---|---|---|
Serveur Consul (nœuds ZooKeeper) | 8300 |
Connecte tous les serveurs Consul du cluster. | RPC | |
8301 |
Gère les abonnements et les messages diffusés dans le cluster. | UDP/TCP | ||
8302 |
Port WAN qui gère les messages d'appartenance et de diffusion dans une configuration multidata center. | UDP/TCP | ||
8500 |
Gère les connexions HTTP aux API du serveur Consul à partir de processus sur le même nœud.
Ce port n'est pas utilisé pour la communication ou la coordination à distance. Il n'écoute que sur localhost. |
HTTP | ||
8502 |
Gère les connexions gRPC+HTTPS aux API du serveur Consul à partir d'autres nœuds du cluster. | gRPC+HTTPS | ||
8503 |
Gère les connexions HTTPS aux API du serveur Consul à partir d'autres nœuds du cluster. | HTTPS | ||
8600 |
Gère le DNS du serveur Consul. | UDP/TCP | ||
* Apigee vous recommande de limiter les requêtes entrantes aux membres du cluster uniquement (y compris les requêtes inter-data stores). Vous pouvez le faire avec iptables .
|
Comme le montre ce tableau, les nœuds exécutant le composant consul-server
(nœuds ZooKeeper) doivent ouvrir les ports 8301, 8302, 8502 et 8503 à tous les membres du cluster exécutant le service apigee-mtls
, même dans différents centres de données. Les nœuds qui n'exécutent pas ZooKeeper n'ont pas besoin d'ouvrir ces ports.
Attributions de ports pour tous les nœuds Consul (y compris les nœuds exécutant ZooKeeper)
Pour prendre en charge les communications Consul, les nœuds exécutant les composants Apigee suivants doivent autoriser les connexions externes aux ports des plages suivantes :
Composant Apigee | Plage | Nombre de ports requis par nœud |
---|---|---|
Apigee mTLS | 10700 à 10799 | 1 |
Cassandra | 10100 à 10199 | 2 |
Processeur de messages | 10500 à 10599 | 2 |
SymasLDAP | 10200 à 10299 | 1 |
Postgres | 10300 à 10399 | 3 |
Qpid | 10400 à 10499 | 2 |
Routeur | 10600 à 10699 | 2 |
ZooKeeper | 10000 à 10099 | 3 |
Consul attribue les ports de manière linéaire simple. Par exemple, si votre cluster comporte deux nœuds Postgres, le premier nœud utilise deux ports. Consul lui attribue donc les ports 10300 et 10301. Le deuxième nœud utilise également deux ports. Consol attribue donc les ports 10302 et 10303 à ce nœud. Cela s'applique à tous les types de composants.
Comme vous pouvez le voir, le nombre réel de ports dépend de la topologie : si votre cluster comporte deux nœuds Postgres, vous devrez ouvrir quatre ports (deux nœuds multipliés par deux ports chacun).
Veuillez noter les points suivants :
- Les proxys Consul ne peuvent pas écouter sur les mêmes ports que les services Apigee.
- Consul ne possède qu'un seul espace d'adresses de port. Les attributions de ports de proxy Consul doivent être uniques dans l'ensemble du cluster, y compris les centres de données. Cela signifie que si le proxy A sur l'hôte A écoute le port 15000, le proxy B sur l'hôte B ne peut pas écouter le port 15000.
- Le nombre de ports utilisés varie en fonction de la topologie, comme décrit précédemment.
Dans une configuration multi-centres de données, tous les hôtes exécutant mTLS doivent également ouvrir le port 8302.
Vous pouvez personnaliser les ports par défaut utilisés par Apigee mTLS. Pour en savoir plus, consultez Personnaliser la plage de ports du proxy.
Limites
Apigee mTLS présente les limites suivantes :
- Ne chiffre pas les communications Cassandra entre les nœuds (port 7000)
- La configuration et la configuration ne sont pas idempotentes. Cela signifie que si vous apportez une modification à un nœud, vous devez l'appliquer à tous les nœuds. Le système ne l'appliquera pas automatiquement aux autres nœuds. Pour en savoir plus, consultez Modifier une configuration apigee-mtls existante.
Terminologie
Cette section utilise la terminologie suivante :
Terme | Définition |
---|---|
Cluster | Groupe de machines qui composent votre installation Edge pour Private Cloud. |
Consul | Service Mesh utilisé par Apigee mTLS. Pour en savoir plus sur la façon dont Consul sécurise vos communications Private Cloud, consultez la page Modèle de sécurité de Consul. |
mTLS | TLS mutuellement authentifié. |
maillage de services | Un réseau overlay (ou un réseau dans un réseau). |
TLS | Transaction Layer Security. Protocole d'authentification standard pour des communications sécurisées. |