Gouvernance PKI
Exigez une approbation M-of-N pour les opérations PKI sensibles, et limitez qui peut émettre ou révoquer sous une CA, d'où et quand.
Vue d'ensemble
La gouvernance PKI réutilise deux modules de Cockpit et les lie aux ressources PKI :
- Politiques de quorum (Administration > Politiques de quorum) : demandes d'approbation M-of-N, le même flux que celui qui protège la suppression de clés et de vaults.
- Politiques d'accès : règles sur l'utilisateur, l'adresse IP, le pays et l'horaire, avec le même moteur d'évaluation que les autres services DuoKey.
Liaisons de gouvernance
Une liaison associe des politiques à une ressource PKI. Elle se gère depuis la carte Gouvernance de la page de détail de la CA, de la page du modèle de certificat et de la page du jeton cryptographique de CA.
| Ressource | Politique de quorum | Politique d'accès | Règle d'émission à haute valeur |
|---|---|---|---|
| CA X.509 | Oui | Oui | Oui |
| Modèle de certificat (profil) | Oui | Non (la lier à la CA) | Oui |
| Jeton cryptographique de CA (clés de signature d'un logiciel de CA externe) | Oui | Non | Non |
À l'enregistrement d'une liaison, la politique de quorum doit exister dans le tenant et imposer le double contrôle (seuil de 2 ou plus, ou demandeur exclu des approbateurs), et la politique d'accès doit exister dans le tenant.
Tant qu'une politique de quorum est liée, modifier ou supprimer la liaison nécessite l'approbation de cette politique. Un administrateur ne peut pas retirer le quorum puis agir seul. Si la politique liée a été supprimée ou désactivée, la liaison peut être réparée sans approbation.
Quorum M-of-N
Opérations soumises
| Opération | Ce qu'elle couvre |
|---|---|
revoke | Révocation de CA (simple et en cascade, console, API et MCP) ; révocation d'une clé de signature de jeton cryptographique de CA |
delete | Archivage de CA ; suppression de modèle de certificat |
update | Modifications de CA (nom, URL de distribution de CRL, URL OCSP) ; modifications de modèle de certificat ; la liaison de gouvernance elle-même (toujours) |
issue | Émission à haute valeur (voir ci-dessous) |
rekey | Rotation d'une clé de signature de jeton cryptographique de CA |
La liste des opérations de la politique de quorum restreint cet ensemble ; une liste vide soumet toutes les opérations de la ressource. L'API REST et les clés d'API atteignent les mêmes traitements que la console et sont soumises de la même façon.
Flux d'approbation
Demande
L'opérateur appelle l'opération. Si elle est soumise et pas encore approuvée, Cockpit répond HTTP 202 avec quorum_required: true, status: "pending_approval" et un request_id, sans rien faire d'autre. Les outils MCP renvoient la même réponse.
Vote
Les approbateurs votent dans Administration > Demandes de quorum (permission Quorum.Approve). La demande montre exactement ce qui est approuvé : CA, noms du sujet, validité, motif, modification de modèle.
Exécution
Une fois le seuil atteint, le même opérateur répète le même appel. L'approbation est consommée et l'opération s'exécute.
Garanti dans tous les cas :
- Une approbation est liée à la demande exacte : un sujet, un motif ou un contenu de modèle différent ouvre une nouvelle demande d'approbation.
- Seul l'opérateur qui a ouvert la demande peut utiliser son approbation, et une seule fois (un rejeu ou un appel concurrent reçoit HTTP 409).
- La politique doit imposer le double contrôle lorsqu'elle est liée et lorsqu'elle est utilisée.
- Une liaison vers une politique de quorum qui n'existe plus refuse l'opération (échec sûr). Une politique désactivée n'est pas appliquée.
Les demandes, votes, approbations utilisées et modifications de liaison sont enregistrés dans les journaux d'activité et d'audit.
Émission à haute valeur
Une règle de haute valeur sur la CA (et éventuellement sur un modèle) désigne certaines émissions comme soumises à l'approbation par quorum. Toute clause satisfaite rend l'émission à haute valeur :
| Clause | Correspond à |
|---|---|
| Certificats de CA | Un certificat de CA : création d'une CA subordonnée sous cette CA, ou demande d'un certificat de CA |
| Wildcard | Un nom DNS wildcard (*.example.com) dans le CN ou un SAN. Lorsque les noms ne peuvent pas être lus (par exemple dans une enveloppe SCEP), la clause est satisfaite : échec sûr |
| Validité supérieure à N jours | Une validité strictement supérieure à N jours |
| Toujours (modèles) | Toute émission avec le modèle |
Lorsque la règle d'un modèle est satisfaite et que ce modèle a sa propre politique de quorum, celle-ci s'applique ; sinon c'est celle de la CA.
| Chemin d'émission | Émission à haute valeur |
|---|---|
| Console et API REST (émission sous une CA, CA intermédiaire, émission et renouvellement via l'émetteur CA interne, certificat d'unité d'horodatage) | 202, flux d'approbation |
| Outils MCP (émettre, signer un CSR, renouveler, créer une CA émettrice, émettre via un émetteur, déployer un certificat PQC) | Réponse en attente, flux d'approbation |
| ACME, EST, SCEP, CMP, cert-manager, enrôlement automatique Windows | Refusée : ces protocoles ne peuvent pas porter une approbation, émettez donc les certificats à haute valeur de façon interactive |
| Renouvellement automatique, émission S/MIME gérée | Refusée |
Politiques d'accès sur les CA
Une politique d'accès liée à une CA est évaluée sur :
- toute émission sous la CA, sur tous les chemins ci-dessus, sauf les tâches propres de la plateforme (renouvellement automatique et automatisation S/MIME ; une émission S/MIME déclenchée par un opérateur est évaluée) ;
- toute révocation sous la CA : console et API, émetteur CA interne, S/MIME, MCP, ACME
revoke-certet CMPrr; - la révocation de la CA (simple et en cascade).
Attributs par canal
| Canal | IP source | Pays | Horaire | Utilisateur |
|---|---|---|---|---|
| Console, API REST, clé d'API | Oui | Oui | Oui | L'adresse e-mail de l'utilisateur |
| MCP | Non | Non | Oui | L'adresse e-mail du propriétaire de la clé MCP |
| ACME | Oui | Oui | Oui | acme-account:<id> |
| Enrôlement automatique Windows | Oui | Oui | Oui | Le principal authentifié, sinon ms-enroll-endpoint:<id> |
| EST | Oui | Oui | Oui | L'utilisateur HTTP Basic ou l'identité du certificat client |
| SCEP | Oui | Oui | Oui | scep-profile:<id> |
| CMP | Oui | Oui | Oui | cmp-alias:<name> |
| cert-manager | Oui | Oui | Oui | cert-manager-issuer:<id> |
Les adresses client transmises ne sont reconnues que depuis des proxys de confiance configurés ; sinon le pair TCP est utilisé. Les règles de pays nécessitent un edge Cloudflare de confiance ou une base GeoIP locale ; sans l'un ou l'autre, elles ne peuvent pas être satisfaites.
Les règles de groupe ne peuvent pas être satisfaites sur les chemins PKI : aucun canal PKI ne transporte l'appartenance aux groupes du fournisseur d'identité. Lorsque toutes les catégories de règles doivent être satisfaites, une politique comportant des règles de groupe refuse donc toute requête PKI.
Comportement en échec sûr
- Une règle dont l'attribut manque ne peut pas être satisfaite ; sans règle d'autorisation satisfaite, la requête est refusée.
- Une liaison vers une politique d'accès qui n'existe plus refuse.
- Une erreur d'évaluation ou de base de données refuse.
- Une politique désactivée n'est pas évaluée.
Chaque décision est enregistrée dans la piste d'audit des politiques d'accès avec le canal, l'IP et le pays de l'appelant, et la CA.
API
GET /api/pki/governance/<resource_type>/<id> (Operations.Pki.Governance.Read)
PUT /api/pki/governance/<resource_type>/<id> (Operations.Pki.Governance.Manage)
{
"quorum_policy_id": "uuid or null",
"access_policy_id": "uuid or null",
"high_value": { "ca_certificates": true, "wildcard": true, "validity_days_over": 397, "always": false },
"reason": "optional, shown to approvers"
}resource_type vaut ca, template ou ca_crypto_token. Une politique d'accès ne peut être liée qu'à une CA, une règle de haute valeur qu'à une CA ou un modèle, et validity_days_over doit être compris entre 1 et 36 500.
Hors périmètre
- Il n'existe pas de renouvellement de clé en place pour une CA X.509 (la clé d'une CA est fixée à sa création) ; le renouvellement de clé est soumis là où il existe, sur les clés de signature des jetons cryptographiques de CA.
- La suspension, la réactivation et le désarchivage d'une CA ne sont pas soumis (ils sont réversibles).
- La génération d'une CRL avec une liste explicite de numéros de série n'est soumise ni au quorum ni aux politiques d'accès.
- Les CA Merkle Tree, les CA SSH et les émetteurs externes (CA publiques atteintes par des connecteurs) ne sont pas couverts par ces liaisons.
- Modifier ou désactiver une politique de quorum ou une politique d'accès est une action d'un seul administrateur dans son propre module, comme pour les clés et les vaults.
- Pour les demandes CMP au format CRMF, seul le CN du sujet est lu pour la règle wildcard ; les SAN du modèle CRMF ne le sont pas.