Open Policy Agent (opa)
Point de décision des politiques de toutes les passerelles Navin Enterprise (modèles, outils, MCP, données). Charge le paquet de politiques Navin et répond aux décisions du Control Plane.
Généré depuis catalog/services/opa.yaml : ne pas modifier à la main.
Résumé
| Version | 1.21.4 |
| Usage | installer et configurer, configurer et connecter |
| Couche | fonctionnelle (catalogue IA) |
| Catégorie | Sécurité et politiques |
| Méthodes d'installation | binary, podman |
| Connexion externe | non |
| Réservé au bac à sable | non |
Licence
| Identifiant SPDX | Apache-2.0 |
| Politique de licence | licence socle (MIT ou Apache-2.0) |
| Exception de licence | - |
| Composant de la plateforme | opa |
Paquets et artefacts
Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.
| Type | Paquet | Version | Licence | Détails |
|---|---|---|---|---|
| image de conteneur | docker.io/openpolicyagent/opa | 1.21.4-static | Apache-2.0 | clé d'image opa, utilisée par opa-server, condensé sha256:47f93480b09e24c220ae75f1e9133585ba6d698059951668d35e6a4fc32ebc82 |
| archive binaire | opa | 1.21.4 | Apache-2.0 | https://github.com/open-policy-agent/opa/releases/download/v1.21.4/opa_linux_amd64_static, x86_64, somme de contrôle sha256 |
Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.
Systèmes et architectures pris en charge
| Méthode | Systèmes d'exploitation | Architectures |
|---|---|---|
binary | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64 (architecture des artefacts du descripteur) |
podman | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64, aarch64 (non restreintes par le descripteur) |
Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.
Prérequis
Hôte
- au moins 512 Mo de mémoire (bloquant,
memory).
Réseau et ports
| Composant | Nom du port | Port | Ouvert dans le pare-feu de l'hôte |
|---|---|---|---|
opa-server | api | 8181/tcp | oui |
opa-server | diagnostic | 8282/tcp | oui |
Services et connexions nécessaires
Ce service n'a aucune dépendance.
Méthodes et modes d'installation
| Méthode | Défaut | Ce que la méthode utilise |
|---|---|---|
binary | oui | les archives binaires du descripteur, décompressées dans le répertoire du service |
podman | - | les images de conteneur du descripteur, exécutées par Podman sous systemd |
Composants
| Composant | Type | Méthodes d'installation | Ports |
|---|---|---|---|
Serveur OPA (opa-server) | maître | binary, podman | 8181/tcp, 8282/tcp |
Serveur unique (standalone) (par défaut)
Un seul serveur OPA, pour un bac à sable ou une petite installation.
Ce que le mode déploie :
| Composant | Placement |
|---|---|
opa-server | min 1, max 1 |
Répliqué (replicated)
Plusieurs serveurs OPA sans état derrière le répartiteur de charge ; chacun charge le même paquet.
Ce que le mode déploie :
| Composant | Placement |
|---|---|
opa-server | min 2, recommandé 3 |
Installer ce service
L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.
-
Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.
-
Choisissez le service. À l'étape Service, sélectionnez Open Policy Agent. La carte affiche la licence
Apache-2.0. Choisissez la Méthode parmibinary,podman(par défautbinary). -
Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode :
standalone(par défaut),replicated. Chaque mode déploie les composants listés dans Méthodes et modes d'installation. -
Liaisons. Ce service n'a aucune dépendance : l'étape Liaisons n'a rien à lier.
-
Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration). Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.
-
Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.
-
Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services. Ouvrez le service et choisissez Lancer le test fonctionnel dans la carte Contrôles : Charge une politique, demande une décision qui doit autoriser et une qui doit refuser, puis retire la politique.
Connecter un service existant
| Schémas | https, http |
| Port par défaut | 8181 |
| Authentification | facultative |
| Contrôle de santé | /health |
| Méthode d'authentification | Champs | Description |
|---|---|---|
bearer | token | OPA lancé avec --authentication=token et --authorization=basic : system.authz doit autoriser le jeton à lire /v1/policies. |
client_certificate | client_cert, client_key | OPA lancé avec --authentication=tls : certificat client signé par l'autorité de --tls-ca-cert-file. |
none | - | Défaut d'OPA : aucune authentification, liez-le à un réseau filtré. |
Documentation officielle : https://www.openpolicyagent.org/docs/security
Haute disponibilité
| Cluster | réplicas (replication) |
| Haute disponibilité | externe (external) |
| Bascule | répartiteur (load-balancer) |
| Réplication | stockage partagé (shared-store) |
| Quorum | aucun (none) |
| Découverte | aucun (none) |
| Point d'entrée | répartiteur (load-balancer) |
| Documentation officielle | https://www.openpolicyagent.org/docs/deploy |
| Paramètre TLS entre pairs | tls_enabled |
Topologie par mode
| Modes | Niveau le plus haut du catalogue | Répartition | Composant du quorum | Domaines de panne | Description |
|---|---|---|---|---|---|
standalone | autonome (standalone) | unique (single) | - | 1 | Une instance, sans tolérance aux pannes. |
replicated | ha (ha) | actif-actif (active-active) | - | 2 | Plusieurs serveurs sans état derrière le répartiteur, chacun chargeant le même bundle de politiques. |
Remarques
- Chaque instance évalue sur sa propre copie des politiques : avec les bundles le serveur de bundles doit rester joignable pour les mises à jour, le dernier bundle chargé continue de servir en attendant.
Paramètres de configuration
Réseau
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Port de l'API (port) | port | 8181 | - | non | non | non | Port de l'API de décision (/v1/data). |
Port de diagnostic (diagnostic_port) | port | 8282 | - | non | non | non | Port de /health et /metrics, séparé de l'API de décision. |
TLS (tls_enabled) | bool | false | - | non | non | non | Servir l'API en TLS avec un certificat émis par l'autorité de la console. |
Paquet de politiques
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Serveur de paquets (bundle_url) | url | {{ mirror.url }}/bundles | - | non | non | non | URL de base qui sert le paquet de politiques. |
Fichier du paquet (bundle_resource) | string | navin-policies.tar.gz | - | non | non | non | Chemin du paquet sous le serveur de paquets. |
Charger le paquet (bundle_enabled) | bool | true | - | non | non | non | Télécharger et activer le paquet de politiques Navin (désactiver seulement pour tester le serveur vide). |
Délai minimal d'interrogation (bundle_min_delay_s) | int | 30 | min 5, max 3600 | non | non | oui | Secondes entre deux téléchargements du paquet (minimum). (avancé) |
Délai maximal d'interrogation (bundle_max_delay_s) | int | 120 | min 10, max 7200 | non | non | non | Secondes entre deux téléchargements du paquet (maximum). (avancé) |
Journalisation
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Niveau de journalisation (log_level) | enum | info | debug, info, warn, error | non | non | non | Verbosité du journal du serveur. |
Journal des décisions (decision_logs_console) | bool | true | - | non | non | non | Écrire chaque décision dans le journal (collecté par la chaîne de journaux pour le SIEM). |
Points d'accès
| Point d'accès | Schéma | Composant | Port | Chemin | Paramètre TLS | Paramètres de liaison | Secrets de liaison | Commande de provisionnement |
|---|---|---|---|---|---|---|---|---|
api | http | opa-server | 8181 (port) | - | tls_enabled | - | - | - |
Fichiers de configuration client
Fichiers rendus pour le téléchargement de la configuration client :
opa.env(client.env.j2)
Commandes
| Commande | Composant | Cible | Description |
|---|---|---|---|
Vérifier le paquet de politiques (bundle_status) | opa-server | tous les hôtes | Demande à chaque serveur OPA si le paquet Navin est activé. |
Contrôles de santé
Vivacité (par instance)
| Composant | Contrôle | Détails |
|---|---|---|
opa-server | HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn if config.tls_enabled else (host.ip or '127.0.0.1') }}:{{ config.diagnostic_port }}/health | Attendu 200 ; 30 tentatives ; intervalle 1 s ; délai 3 s |
Disponibilité (contrôle du service)
| Contrôle | Détails |
|---|---|
HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn if config.tls_enabled else (host.ip or '127.0.0.1') }}:{{ config.port }}/v1/data/system/main | Attendu 200, 404 ; 5 tentatives ; intervalle 2 s ; délai 5 s |
Test fonctionnel
Charge une politique, demande une décision qui doit autoriser et une qui doit refuser, puis retire la politique. (opa-server: load_policy, decision_allow, decision_deny, remove_policy)
Contrôles préalables
| Contrôle | Type | Signification | Sévérité | Composants |
|---|---|---|---|---|
memory | memory_mb {"min": 512} | au moins 512 Mo de mémoire | bloquant | tous les composants |
api_port_free | port_free {"param": "port"} | port 8181 libre sur l'hôte | bloquant | tous les composants |
Mise à niveau
| Prise en charge depuis | 1.21.3 |
| Avec état | non |
| Sauvegarde avant la mise à niveau | non |
| Retour arrière | oui |
Désinstallation
Chemins supprimés quand les données sont purgées : {{ paths.data }}, {{ paths.log }}.
Liens rapides
- Métriques de diagnostic :
{{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.diagnostic_port }}/metrics
Documentation amont
- Site : https://www.openpolicyagent.org
- Sources : https://github.com/open-policy-agent/opa
- Haute disponibilité : https://www.openpolicyagent.org/docs/deploy
- Authentification : https://www.openpolicyagent.org/docs/security