Feuille de triche sur la sécurité SAML
Un guide de référence rapide sur le Security Assertion Markup Language (SAML) et ses fonctionnalités de sécurité. Comprenez les termes clés, les conseils de mise en œuvre et les meilleures pratiques pour sécuriser l'authentification et l'autorisation basées sur SAML dans les environnements d'entreprise.
Introduction
Le Security Assertion Markup Language (SAML) est une norme ouverte pour échanger des données d'authentification et d'autorisation entre parties, en particulier entre un fournisseur d'identité et un fournisseur de services. SAML est un langage de balisage basé sur XML pour les assertions de sécurité, utilisé pour la connexion unique (SSO) et la fédération d'identité. Il est couramment utilisé dans les environnements d'entreprise à des fins d'authentification et d'autorisation.
Flux d'authentification SAML standard
- L'utilisateur demande l'accès à une application cliente, qui agit en tant que fournisseur de services (SP).
- Le SP envoie une demande d'authentification SSO SAML au fournisseur d'identité (IdP) et redirige l'utilisateur vers l'IdP.
- L'IdP demande les informations d'identification à l'utilisateur si celui-ci n'est pas déjà authentifié.
- L'utilisateur entre ses informations d'identification, et l'IdP authentifie l'utilisateur.
- L'IdP envoie une assertion de réponse SAML au SP, qui inclut le statut d'authentification de l'utilisateur et ses attributs. L'IdP redirige ensuite l'utilisateur vers le SP.
- Le SP reçoit l'assertion de réponse SAML, la valide et accorde l'accès à l'utilisateur.
Facteurs de sécurité dans SAML
ID d'entité SP
Pensez à l'ID d'entité SP comme le badge unique pour un SP dans le contexte d'authentification SAML. C'est comme une empreinte digitale qui aide l'IdP à reconnaître le SP lors de leurs interactions. Cet ID est une partie clé des métadonnées du SP, partagée avec l'IdP pour établir la confiance et assurer une communication sécurisée.
Utilisation de l'ID d'entité SP:
- Enregistrement des métadonnées: L'attribut
EntityID
fait partie des métadonnées du SP, partagé avec l'IdP pour établir une relation de confiance. Il sert d'identifiant unique pour localiser les métadonnées du SP et obtenir les détails de configuration requis pour les interactions SAML. - Demande d'authentification: L'ID d'entité SP est inclus dans la demande d'authentification SAML envoyée à l'IdP, identifiant clairement le SP demandeur. L'IdP utilise cette information pour valider la demande et déterminer le contexte d'authentification approprié.
- Audience de l'assertion: Après l'authentification réussie de l'utilisateur, l'ID d'entité SP est inclus dans l'assertion SAML comme une restriction d'audience. Cette mesure garantit que l'assertion est destinée exclusivement au SP désigné et ne peut pas être utilisée abusivement par d'autres SP.
ID d'entité IdP
À l'inverse, l'ID d'entité IdP est le label spécial pour l'IdP. Il aide à identifier l'IdP au sein de l'écosystème SAML, facilitant sa localisation par le SP. Cet ID est inclus dans les métadonnées de l'IdP et est partagé avec le SP, favorisant une relation de confiance et des connexions sécurisées.
Utilisation de l'ID d'entité IdP:
- Enregistrement des métadonnées: L'attribut
EntityID
est également inclus dans les métadonnées de l'IdP, partagé avec le SP pour établir une relation de confiance. Il sert d'identifiant unique pour localiser les métadonnées de l'IdP et obtenir les détails de configuration nécessaires pour que le SP valide les réponses SAML. - Émetteur de l'assertion: Lorsque l'IdP génère une assertion SAML, il inclut son ID d'entité comme émetteur. Cet attribut indique l'entité qui a émis l'assertion et aide le SP à vérifier l'authenticité et l'intégrité de l'assertion.
État de relais
L'état de relais est un paramètre utilisé dans l'authentification SAML facilitant le transfert d'informations d'état entre le SP et l'IdP. Il agit comme un pont entre les flux SSO initiés par le SP et par l'IdP, préservant le contexte de l'utilisateur et l'état de la session pendant le processus d'authentification.
Utilisation de l'état de relais:
- Maintenir le contexte de l'utilisateur: L'état de relais permet au SP de transmettre des informations supplémentaires à l'IdP pendant le processus d'authentification. Ces informations peuvent inclure l'état de la session de l'utilisateur, le contexte de l'application, ou tout autre donnée pertinente à conserver pendant le flux SAML. Telles que l'URL ou l'ID de session de l'application que l'utilisateur accédait avant l'authentification.
- Prévention des attaques CSRF: L'état de relais est crucial pour prévenir les attaques par falsification de demande inter-sites (CSRF) lors de l'authentification SAML. En incluant une valeur d'état de relais unique et imprévisible dans la demande d'authentification, le SP peut vérifier l'intégrité de la réponse SAML et s'assurer qu'elle correspond à la demande originale.
Signature de l'assertion
La signature de l'assertion est une fonctionnalité de sécurité critique dans SAML qui assure l'intégrité, l'authenticité et la non-répudiation des assertions SAML. Elle implique la signature numérique de l'assertion SAML à l'aide de la clé privée de l'IdP, permettant au SP de vérifier l'origine de l'assertion et de détecter toute tentative de falsification.
Comment fonctionne la signature de l'assertion:
- Génération de paire de clés: L'IdP génère une paire de clés publique-privée, où la clé privée est utilisée pour signer l'assertion SAML, et la clé publique est partagée avec le SP pour vérification. Ce schéma de cryptographie asymétrique garantit que seul l'IdP peut signer l'assertion, tandis que le SP peut la valider.
- Certificat partagé: L'IdP fournit au SP son certificat de clé publique, qui contient la clé publique utilisée pour vérifier la signature de l'assertion. Normalement, ce certificat fera partie des métadonnées de l'IdP, ou le SP peut l'obtenir par un processus de téléchargement sécurisé.
- Signature de l'assertion: Après avoir authentifié l'utilisateur, l'IdP signe numériquement l'assertion SAML à l'aide de sa clé privée. Cette signature est incluse dans l'assertion, avec le certificat de clé publique, permettant au SP de vérifier l'authenticité de l'assertion.
- Vérification de l'assertion: Dès réception de l'assertion SAML, le SP utilise la clé publique de l'IdP pour vérifier la signature de l'assertion. Si la signature est valide, le SP peut faire confiance à l'assertion et accorder l'accès à l'utilisateur.
Chiffrement de l'assertion
En plus de la signature, SAML prend également en charge le chiffrement de l'assertion pour protéger les attributs et les données utilisateur sensibles transmis entre l'IdP et le SP. En chiffrant l'assertion, l'IdP garantit que seul le destinataire prévu (SP) peut déchiffrer et accéder au contenu de l'assertion, protégeant ainsi la confidentialité et la confidentialité des utilisateurs. Le chiffrement de l'assertion est une fonctionnalité de sécurité optionnelle dans SAML qui peut être utilisée pour améliorer la protection des données.
Utilisation du chiffrement de l'assertion:
- Protection des attributs sensibles: Le chiffrement de l'assertion est particulièrement utile pour protéger les attributs utilisateur sensibles, tels que les informations personnelles identifiables (PII), les données financières ou les dossiers de santé. En chiffrant ces attributs dans l'assertion, l'IdP empêche l'accès non autorisé et garantit la confidentialité des données.
Comment fonctionne le chiffrement de l'assertion:
- Échange de clés: L'IdP et le SP établissent un mécanisme d'échange de clés sécurisé pour partager les clés de chiffrement afin de protéger l'assertion SAML. Cela peut impliquer l'utilisation de clés de chiffrement symétrique ou de schémas de chiffrement à clé publique, selon l'algorithme de chiffrement et la stratégie de gestion des clés.
- Chiffrement des attributs: Après la génération de l'assertion SAML, l'IdP chiffre les attributs utilisateur sensibles à l'aide de la clé de chiffrement partagée. Les attributs chiffrés sont intégrés dans l'assertion, garantissant que seul le SP peut déchiffrer et accéder aux données.
- Déchiffrement de l'assertion: Dès réception de l'assertion chiffrée, le SP déchiffre les attributs protégés à l'aide de la clé de chiffrement partagée. Ce processus permet au SP d'accéder en toute sécurité aux données sensibles de l'utilisateur et de les traiter au besoin.
Méthodes de liaison
Les méthodes de liaison SAML définissent comment les messages SAML sont transmis entre le SP et l'IdP sur différents protocoles de communication. Elles spécifient le codage, le transport et les mécanismes de sécurité utilisés pour échanger les assertions et les demandes SAML, garantissant une communication sécurisée et fiable entre les parties impliquées.
Le SP et l'IdP spécifieront les méthodes de liaison qu'ils prennent en charge dans leurs métadonnées, leur permettant de négocier la méthode appropriée pour les interactions SAML. Le choix de la méthode de liaison dépend de facteurs tels que la taille du message, les besoins de sécurité et les caractéristiques du canal de communication.
Méthodes de liaison SAML:
- Redirection HTTP: Les messages SAML sont codés en tant que paramètres d'URL et transmis via une redirection HTTP. Cette liaison est adaptée aux scénarios où la taille du message est limitée et le canal de communication n'est pas sécurisé.
- POST HTTP: Les messages SAML sont codés en tant que paramètres de formulaire et transmis via des requêtes POST HTTP. Cette liaison est utilisée lorsque la taille du message dépasse la limite de longueur d'URL ou lorsque des mesures de sécurité supplémentaires sont requises.
- Artifact: Les messages SAML sont transmis à l'aide de jetons à durée de vie limitée appelés artifacts, qui sont échangés sur un canal sécurisé entre le SP et l'IdP. Cette liaison est adaptée aux scénarios où la confidentialité et l'intégrité des messages sont critiques, et le canal de communication est sécurisé.
Méthodes de liaison les plus courantes:
- Demande d'authentification: La demande d'authentification du SP vers l'IdP est généralement transmise en utilisant la redirection HTTP en raison de sa simplicité et de son efficacité. Le SP code la demande SAML en tant que paramètres d'URL et redirige le navigateur de l'utilisateur vers l'IdP pour l'authentification. Cela est connu sous le nom de flux SSO initié par le SP.
- Réponse d'assertion: L'assertion de réponse SAML de l'IdP vers le SP est généralement transmise en utilisant la méthode de liaison POST HTTP. L'IdP code l'assertion SAML en tant que paramètres de formulaire et la renvoie au SP pour validation. Cela garantit que l'assertion est transmise en toute sécurité sans exposer de données sensibles dans l'URL. De plus, la liaison POST HTTP peut gérer des tailles de message plus importantes comparé à la liaison de redirection HTTP.
Éléments de sécurité et considérations dans les assertions SAML
Émetteur
Comme mentionné précédemment, l'émetteur est un attribut clé dans les assertions SAML qui identifie l'entité qui a émis l'assertion. L'émetteur est généralement l'IdP qui a authentifié l'utilisateur et généré l'assertion. En incluant l'attribut émetteur dans l'assertion, le SP peut vérifier l'origine de l'assertion et s'assurer qu'elle provient d'une source fiable.
Signature
L'élément de signature dans une assertion SAML contient la signature numérique générée par l'IdP pour garantir l'intégrité et l'authenticité de l'assertion. La signature est créée à l'aide de la clé privée de l'IdP et incluse dans l'assertion avec le certificat de clé publique pour vérification par le SP. En validant la signature, le SP peut vérifier que l'assertion n'a pas été falsifiée et qu'elle provient de l'IdP attendu.
Conditions
L'élément de conditions dans une assertion SAML définit les contraintes et restrictions qui s'appliquent à la validité et à l'utilisation de l'assertion. Il inclut des conditions telles que la période de validité de l'assertion, les restrictions d'audience et d'autres contraintes contextuelles que le SP doit appliquer lors du traitement de l'assertion.
Déclaration d'authentification
La déclaration d'authentification (AuthnStatement) est un composant clé de l'assertion SAML qui fournit des informations sur l'état d'authentification de l'utilisateur et le contexte. Elle inclut des détails tels que la méthode d'authentification utilisée, l'heure de l'authentification et toute information contextuelle d'authentification pertinente, permettant au SP de prendre des décisions éclairées de contrôle d'accès en fonction de l'état d'authentification de l'utilisateur.
Attributs de la déclaration d'authentification:
- AuthenticationContext: Décrit la méthode et le contexte de l'authentification de l'utilisateur, tels que nom d'utilisateur-mot de passe, authentification multi-facteurs ou connexion unique. Cet attribut aide le SP à évaluer la force et la fiabilité du processus d'authentification et à déterminer les contrôles d'accès appropriés.
- AuthenticationInstant: Indique l'heure à laquelle l'utilisateur a été authentifié par l'IdP. Ce timestamp est crucial pour vérifier la fraîcheur de l'authentification et prévenir les attaques par relecture ou le détournement de session.
- SessionNotOnOrAfter: Spécifie l'heure d'expiration de la session de l'utilisateur, après laquelle l'utilisateur doit se réauthentifier pour accéder au service. Cet attribut aide à appliquer les politiques de gestion de session et à atténuer le risque d'accès non autorisé.
Meilleures pratiques pour la sécurité SAML
- Utiliser des méthodes de liaison sécurisées: Choisissez des méthodes de liaison SAML appropriées en fonction de vos exigences de sécurité et des caractéristiques du canal de communication. Utilisez HTTP POST pour transmettre des données sensibles et HTTP Redirect pour des demandes simples.
- Valider les signatures d'assertion: Vérifiez les signatures numériques des assertions SAML pour assurer leur intégrité et leur authenticité. Utilisez le certificat de clé publique de l'IdP pour valider la signature et détecter les tentatives de falsification.
- Appliquer des restrictions d'audience: Incluez des restrictions d'audience dans les assertions SAML pour limiter la portée de l'assertion au SP prévu. Cela empêche les attaques par relecture d'assertion et les accès non autorisés par d'autres fournisseurs de services.
- Sécuriser l'échange de métadonnées: Protégez l'échange des métadonnées SP et IdP pour empêcher la falsification et les attaques de spoofing des métadonnées. Utilisez des canaux et des mécanismes sécurisés pour partager les métadonnées en toute sécurité.
- Mettre en œuvre une gestion sécurisée de l'état de relais: Utilisez des valeurs d'état de relais uniques et imprévisibles pour empêcher les attaques CSRF lors de l'authentification SAML. Validez l'état du relais pour assurer son intégrité et son authenticité.
- Appliquer la gestion des sessions: Définissez des politiques d'expiration de session et appliquez des délais d'expiration des sessions pour atténuer le risque de détournement de session et d'accès non autorisé. Utilisez des attributs liés aux sessions dans les assertions SAML pour gérer les sessions des utilisateurs en toute sécurité.
- Chiffrer les attributs sensibles: Si nécessaire, chiffrez les attributs utilisateur sensibles dans les assertions SAML pour protéger la vie privée et la confidentialité des données des utilisateurs. Utilisez des algorithmes de chiffrement sécurisés et des pratiques de gestion des clés pour protéger les données sensibles.
Alternatives à SAML
Bien que le SAML reste une norme largement adoptée pour la SSO et la fédération d'identité, offrant un ensemble robuste de fonctionnalités et de mécanismes de sécurité, son âge peut poser des défis pour répondre aux exigences de sécurité et de convivialité des applications modernes. Par rapport à OpenID Connect (OIDC) basé sur OAuth 2.0 plus contemporain, SAML a tendance à être plus complexe et manque de certaines des fonctionnalités de sécurité améliorées que OIDC fournit. Par exemple, le flux de demande d'autorisation à plusieurs niveaux de sécurité d'OIDC offre une approche plus sécurisée que le flux d'échange d'assertions SAML relativement simple. Pour les organisations cherchant à adopter une solution de fédération d'identité plus moderne et flexible, l'OIDC peut être une alternative viable à SAML.