ISO 27001 et Auth0 : contrôles IAM pour votre SMSI
Alignez votre configuration Auth0 avec les contrôles ISO 27001:2022 relatifs à la gestion des identités et accès. Preuves, documentation et questionnaire auditeur.
Par Auth0.Expert · 2025-06-09 · 12 min de lecture
ISO 27001 et Auth0 : contrôles IAM pour votre SMSI
TL;DR
ISO 27001:2022 inclut des contrôles spécifiques à la gestion des identités et accès (Annexe A, domaine 5 et 8). Auth0, certifié SOC2/ISO27001, peut vous aider à satisfaire ces contrôles dans votre propre SMSI.
Contrôles ISO 27001:2022 × Auth0
Ce tableau récapitule les contrôles ISO 27001 essentiels liés à l’IAM et leur correspondance avec Auth0.
Annexe A — Contrôles pertinents pour l'IAM :
5.15 : Contrôle d'accès
5.16 : Gestion des identités
5.17 : Informations d'authentification
5.18 : Droits d'accès
8.2 : Droits d'accès privilégiés
8.3 : Restriction d'accès aux informations
8.4 : Accès au code source
8.5 : Authentification sécurisée
8.6 : Gestion des capacités
Contrôle 5.15 : Contrôle d'accès
Ici, vous limitez les accès aux ressources selon le rôle utilisateur, par une règle Post-Login Auth0.
// Evidence : politique d'accès implémentée dans Auth0
// Actions → Post-Login Rule documentée
// Politique d'accès basée sur le rôle et le contexte
exports.onExecutePostLogin = async (event, api) => {
const user = event.user;
const role = user.app_metadata?.role;
const resource = event.client.name;
// Matrice d'accès documentée (joindre à votre SMSI)
const accessMatrix = {
"employee": ["intranet", "email", "crm-read"],
"manager": ["intranet", "email", "crm-write", "hr-portal"],
"admin": ["*"], // Avec MFA obligatoire
"contractor": ["project-portal"], // Accès limité
};
const allowedResources = accessMatrix[role] || [];
if (!allowedResources.includes("*") && !allowedResources.includes(resource)) {
api.access.deny(`Access to ${resource} not authorized for role ${role}`);
}
};
Ce bloc implémente un contrôle d'accès centralisé après connexion, en refusant l'accès aux ressources non autorisées selon la matrice d'accès.
Contrôle 5.17 : Informations d'authentification
Ce code définit une politique de mot de passe conforme aux exigences ISO 27001, à configurer dans Auth0.
// Politique de mots de passe ISO 27001
// Auth0 Password Policy via Management API
const iso27001PasswordPolicy = {
// 5.17 : Gestion des informations d'authentification secrètes
password_complexity_options: {
min_length: 12,
requires_uppercase: true,
requires_lowercase: true,
requires_numbers: true,
requires_symbols: true,
},
password_history: {
enable: true,
size: 12 // Interdire 12 derniers MDP
},
password_dictionary: {
enable: true // Bloquer MDP compromis
},
// Correspondance documentaire
"iso_control": "5.17",
"policy_ref": "SMSI-POL-ACCES-001"
};
Contrôle 8.2 : Droits d'accès privilégiés
Ce bout de code démontre comment renforcer les accès administrateurs via MFA, une session temporaire et une traçabilité.
// Contrôle strict des accès administrateurs
exports.onExecutePostLogin = async (event, api) => {
if (!event.user.app_metadata?.is_admin) return;
// 8.2 : Les droits d'accès privilégiés doivent être restreints et contrôlés
// 1. MFA obligatoire
const mfaUsed = event.authentication?.methods?.some(m => m.name === "mfa");
if (!mfaUsed) {
api.access.deny("MFA required for privileged access (ISO 27001:2022 8.2)");
return;
}
// 2. Durée de session limitée (Just-in-Time access)
api.session.setExpiration(3600); // 1h
// 3. Ajouter timestamp d'accès privilégié au token
api.accessToken.setCustomClaim("privileged_access", {
granted_at: new Date().toISOString(),
expires_at: new Date(Date.now() + 3600000).toISOString(),
mfa_verified: true,
policy_ref: "SMSI-POL-PRIV-001"
});
// 4. Notifier le SOC
await api.cache.set("privileged_access_" + event.user.user_id, {
timestamp: new Date().toISOString(),
user: event.user.email
}, { ttl: 3600 });
};
Ce script gère de façon automatisée l’accès privilégié : MFA, session limitée, journalisation, et notification SOC.
Contrôle 8.5 : Authentification sécurisée
Ce bloc décrit comment structurer la politique d’authentification selon le profil dans votre SMSI.
// 8.5 : Procédures d'authentification sécurisée
// Documentation pour votre SMSI :
const authenticSecureProcedures = {
"standard_users": {
primary: "password",
mfa: "optional",
min_strength: "strong"
},
"privileged_users": {
primary: "password",
mfa: "required",
mfa_methods: ["webauthn", "totp"],
min_strength: "very_strong"
},
"external_access": {
primary: "sso_or_password",
mfa: "required",
ip_restriction: "optional"
},
"api_access": {
primary: "client_credentials",
type: "m2m",
secret_rotation: "90_days"
}
};
// À documenter dans votre SMSI comme Policy Statement
Revue trimestrielle des accès (5.18)
Ici, un exemple de script Python pour réaliser la revue périodique des droits, conformément à ISO 27001:2022.
# Script pour revue trimestrielle des droits d'accès
# ISO 27001:2022 - Contrôle 5.18 : Droits d'accès
def generate_access_review_report(mgmt_token: str, domain: str) -> dict:
headers = {"Authorization": f"Bearer {mgmt_token}"}
base = f"https://{domain}/api/v2"
# Récupérer tous les utilisateurs
users = requests.get(
f"{base}/users",
headers=headers,
params={"per_page": 100, "fields": "user_id,email,app_metadata,last_login,created_at,blocked"}
).json()
review_date = datetime.utcnow().isoformat()
ninety_days_ago = (datetime.utcnow() - timedelta(days=90)).isoformat()
report = {
"review_date": review_date,
"reviewer": "RSSI",
"iso_control": "5.18",
"next_review": (datetime.utcnow() + timedelta(days=90)).isoformat(),
"summary": {
"total_users": len(users),
"active_users": 0,
"inactive_users": 0,
"privileged_users": 0,
"blocked_users": 0
},
"users": []
}
for user in users:
last_login = user.get("last_login", "never")
is_inactive = last_login == "never" or last_login < ninety_days_ago
is_privileged = user.get("app_metadata", {}).get("is_admin", False)
is_blocked = user.get("blocked", False)
user_entry = {
"user_id": user["user_id"],
"email": user["email"],
"role": user.get("app_metadata", {}).get("role", "standard"),
"is_privileged": is_privileged,
"last_login": last_login,
"status": "blocked" if is_blocked else ("inactive" if is_inactive else "active"),
"action_required": "REVIEW" if is_inactive and is_privileged else "OK"
}
# Compteurs
if is_blocked:
report["summary"]["blocked_users"] += 1
elif is_inactive:
report["summary"]["inactive_users"] += 1
else:
report["summary"]["active_users"] += 1
if is_privileged:
report["summary"]["privileged_users"] += 1
report["users"].append(user_entry)
return report
Ce script génère un rapport complet facilitant la revue formelle des droits d’accès, triant les comptes inactifs, bloqués et privilégiés.
Tableau de correspondance ISO 27001 × Auth0
Ce tableau de synthèse met en relation les exigences ISO 27001 avec les fonctionnalités Auth0 et leur documentation type.
| Contrôle | Description | Feature Auth0 | Documentation SMSI | |---|---|---|---| | 5.15 | Contrôle accès | RBAC + Actions | Matrice d'accès | | 5.16 | Gestion identités | User Management | Procédure onboarding | | 5.17 | Authentification | Password Policy | Politique MDP | | 5.18 | Droits accès | Roles + Audit | Rapport revue trimestrielle | | 8.2 | Accès privilégiés | Admin + MFA | Procédure accès admin | | 8.5 | Auth sécurisée | MFA + WebAuthn | Policy authentification | | 8.6 | Gestion capacité | Rate limiting | Plan capacité |
Questionnaire auditeur ISO 27001
Voici les questions classiques des auditeurs et comment y répondre avec Auth0.
Questions typiques d'un auditeur × Auth0 :
1. "Comment gérez-vous le cycle de vie des comptes ?"
→ Montrer : onboarding Action + offboarding script
2. "Comment sont révoqués les accès à la fin de contrat ?"
→ Montrer : DELETE /users/{id} + script RH automatisé
3. "Quelle est votre politique MFA ?"
→ Montrer : Auth0 Actions + MFA Policies Dashboard
4. "Comment tracez-vous les accès administrateurs ?"
→ Montrer : Log Streaming + Datadog dashboard
5. "Comment effectuez-vous la revue des droits ?"
→ Montrer : script revue trimestrielle + rapport signé
6. "Auth0 est-il lui-même certifié ?"
→ trust.okta.com : SOC2 Type II + ISO27001 + autres
Auth0.Expert vous accompagne dans la préparation de votre certification ISO 27001 en fournissant toute la documentation IAM nécessaire pour votre SMSI.
Autres articles
- Auth0 et OAuth 2.0 : architecture complète pour comprendre les flux d'autorisation
- OpenID Connect sur Auth0 : ID Token, UserInfo et discovery endpoint expliqués
- Configurer SAML 2.0 avec Auth0 : guide complet pour l'entreprise
- Migrer des Rules vers les Auth0 Actions : guide pas à pas
- Architecture multi-tenant avec Auth0 : organisations, isolation et bonnes pratiques
- Validation des JWT Auth0 : RS256 vs HS256, JWKS et pièges communs
- Concevoir son architecture de tenants Auth0 : dev, staging, prod
- Configurer un domaine personnalisé Auth0 : login.votredomaine.com étape par étape