Consul est une plateforme open-source de gestion de service distribuée qui permet de découvrir, de surveiller et de configurer des services. Dans cet article, nous vous guiderons à travers les étapes d’installation, de configuration et de sécurisation de Consul pour une gestion de service distribuée.
1. Installation de Consul
Pour installer Consul, suivez ces étapes :
- Téléchargez la dernière version de Consul depuis le site officiel : https://www.consul.io/downloads.html
- Extrayez le fichier téléchargé et déplacez le binaire consul dans le répertoire /usr/local/bin :
unzip consul_VERSION_linux_amd64.zip
sudo mv consul /usr/local/bin/
- Créez un utilisateur et un groupe consul pour exécuter le service :
sudo groupadd --system consul
sudo useradd --system -d /var/lib/consul -s /sbin/nologin -g consul consul
sudo mkdir -p /etc/consul /var/lib/consul /var/log/consul
sudo chown -R consul:consul /etc/consul /var/lib/consul /var/log/consul
2. Configuration de Consul
Voici les étapes de configuration de Consul :
- Créez un fichier de configuration consul.hcl pour configurer Consul :
datacenter = "dc1"
server = true
bootstrap_expect = 3
bind_addr = "0.0.0.0"
client_addr = "0.0.0.0"
retry_join = ["192.168.0.1", "192.168.0.2", "192.168.0.3"]
encrypt = "YOUR_ENCRYPTION_KEY"
- Démarrez le service Consul en exécutant la commande :
sudo consul agent -config-file=consul.hcl
- Configurez les services à surveiller et à découvrir :
resource "consul_catalog_service" "web" {
name = "web"
address = "192.168.1.10"
port = 80
check {
name = "http-check"
http = "http://192.168.1.10/health"
interval = "30s"
timeout = "5s"
}
}
3. Sécurisation de Consul
Voici les meilleures pratiques pour sécuriser Consul :
- Utilisez HTTPS pour les connexions Consul :
datacenter = "dc1"
server = true
bootstrap_expect = 3
bind_addr = "0.0.0.0"
client_addr = "0.0.0.0"
retry_join = ["192.168.0.1", "192.168.0.2", "192.168.0.3"]
encrypt = "YOUR_ENCRYPTION_KEY"
verify_incoming = true
verify_outgoing = true
ca_file = "/etc/consul/ssl/ca.pem"
cert_file = "/etc/consul/ssl/consul.pem"
key_file = "/etc/consul/ssl/consul.key"
- Configurez l’authentification pour les requêtes Consul :
acl {
enabled = true
default_policy = "deny"
enable_token_persistence = true
}
Create an anonymous token to allow read-only access to the catalog
token {
policy = "read"
}
Create a token for the consul-admin user with full access to the catalog
acl {
tokens {
consul-admin = "TOKEN_SECRET"
}
}
Define the policies for the consul-admin user
acl {
policy "consul-admin-policy" {
# Allow all actions on all resources
actions = [""]
resources = [""]
}
}
Bind the consul-admin policy to the consul-admin token
acl {
binding "consul-admin-binding" {
# Associate the policy with the consul-admin token
token_id = "TOKEN_SECRET"
# Associate the policy with the consul-admin user
# Consul ACL users have the same name as their token
# consul-admin = "TOKEN_SECRET"
policy = "consul-admin-policy"
}
}
- Utilisez un pare-feu pour restreindre l’accès au service Consul :
sudo ufw allow 8300/tcp
sudo ufw allow 8301/udp
sudo ufw allow 8302/tcp
sudo ufw allow 8500/tcp
Conclusion
Consul est une plateforme de gestion de service distribuée robuste qui permet de surveiller, de découvrir et de configurer les services. En suivant les étapes de cet article et en appliquant les meilleures pratiques pour la sécurisation de Consul, vous pourrez gérer efficacement et en toute sécurité les services de votre infrastructure.