Où puis-je stocker des données sensibles dans Active Directory?


11

Je stocke essentiellement une clé privée (Hash) dans l'un des attributs OctetString dans Active Directory.

Ma question est, quel attribut est sécurisé par défaut et est-il logique de conserver les données privées là-bas? Cette valeur doit être considérée comme similaire à un mot de passe, où même les administrateurs ne devraient pas avoir accès (si possible), tout comme le mot de passe AD actuel.

Voici le début d'une liste d'attributs qui sont activés par défaut sur un domaine Windows 2008R2 + Exchange 2010.

texte alternatif

Mettre à jour:

Quelqu'un connaît-il un attribut de chaîne d'octets qui n'expose pas les autorisations de «lecture» à tous les utilisateurs du domaine par défaut? Je ne veux pas stocker mon hachage publiquement et permettre à quelqu'un de construire une table arc-en-ciel basée sur les hachages.

Réponses:


11

Le problème auquel la plupart des gens sont confrontés lors du stockage de données dans AD est

  • Extension du schéma (qui a souvent des implications politiques pour l'entreprise)

  • Utilisation d'un attribut existant et modification des autorisations (ce qui entraîne un gonflement AD / ACL qui augmente votre DIT et la taille de réplication ultérieure)

Il existe une alternative ... le meilleur choix dans mon esprit est d'utiliser cette fonctionnalité moins connue d'AD pour prendre un attribut existant et le marquer comme confidentiel.

Voici les détails du processus


Les autorisations par défaut dans Active Directory sont telles que les utilisateurs authentifiés ont un accès en lecture générale à tous les attributs. Cela rend difficile l'introduction d'un nouvel attribut qui devrait être protégé contre la lecture par tout le monde.

Pour atténuer cela, Windows 2003 SP1 introduit un moyen de marquer un attribut comme CONFIDENTIEL. Cette fonctionnalité est obtenue en modifiant la valeur searchFlags sur l'attribut dans le schéma. SearchFlags contient plusieurs bits représentant diverses propriétés d'un attribut. Par exemple, le bit 1 signifie que l'attribut est indexé. Le nouveau bit 128 (7e bit) désigne l'attribut comme confidentiel.

Remarque: vous ne pouvez pas définir cet indicateur sur les attributs de schéma de base (ceux dérivés de "top" tels que le nom commun). Vous pouvez déterminer si un objet est un objet de schéma de base en utilisant LDP pour afficher l'objet et en vérifiant l'attribut systemFlags de l'objet. Si le 10e bit est défini, il s'agit d'un objet de schéma de base.

Lorsque le service d'annuaire effectue une vérification d'accès en lecture, il recherche les attributs confidentiels. S'il y en a, en plus de l'accès READ_PROPERTY, le service d'annuaire aura également besoin d'un accès CONTROL_ACCESS sur l'attribut ou son ensemble de propriétés.

Par défaut, seuls les administrateurs ont un accès CONTROL_ACCESS à tous les objets. Ainsi, seuls les administrateurs pourront lire les attributs confidentiels. Les utilisateurs sont libres de déléguer ce droit à tout groupe spécifique de leur choix. Cela peut être fait avec l'outil DSACL, les scripts ou la version R2 ADAM de LDP. À ce jour, il n'est pas possible d'utiliser ACL UI Editor pour attribuer ces autorisations.

Le processus de marquage d'un attribut comme confidentiel et d'ajout des utilisateurs qui doivent afficher l'attribut comporte 3 étapes

  1. Déterminer quel attribut marquer comme confidentiel ou ajouter un attribut pour marquer confidentiel.

  2. Marquage confidentiel

  3. Accorder aux utilisateurs appropriés le droit Control_Access afin qu'ils puissent afficher l'attribut.

Pour plus de détails et des instructions pas à pas, reportez-vous à l'article suivant:

922836 comment marquer un attribut comme confidentiel dans Windows Server 2003 Service Pack 1

http://support.microsoft.com/default.aspx?scid=kb;EN-US;922836


1
Downvoter: Pourquoi cela at-il obtenu un -1?
goodguys_activate

J'ai entendu que le bit confidentiel peut imposer une pénalité de performance importante. Connaissez-vous des documents qui soutiennent ou réfutent cela?
Nic

@Nic poste cela comme une question ... d'abord j'en ai entendu parler
goodguys_activate

2

Vous pouvez toujours étendre Active Directory avec un nouveau champ à cet effet.

Voici un document qui comprend des instructions sur l'ajout d'un nouvel attribut et la limitation des autorisations sur l'attribut.


Je vous remercie. Mon objectif est d'utiliser un attribut existant si possible car mes clients sont au-delà de la paranoïa à ce sujet ... ils ont trop de FUD dans cette approche ... J'espère quelque chose de natif si possible.
goodguys_activate

Je peux comprendre leur réticence, mais je ne pense pas qu'il existe de bons attributs candidats qui ne soient pas utilisés et sécurisés comme requis.
Zoredache

1

Cette valeur doit être considérée comme similaire à un mot de passe, où même les administrateurs ne devraient pas avoir accès (si possible), tout comme le mot de passe AD actuel.

Ce n'est pas correct, ce n'est même pas faux. Le mot de passe n'est pas enregistré. Le hachage est stocké et les administrateurs de domaine peuvent y accéder. En fait, vous pouvez même configurer AD pour stocker le mot de passe dans un cryptage réversible si vous le souhaitez.

Il n'y a rien que vous puissiez empêcher les administrateurs de domaine, dans AD. Si vous supprimez des droits ou même refusez, un administrateur de domaine peut s'approprier et se rajouter. Ceci est en contraste avec le NDS de Novell, où un administrateur d'une unité d'organisation pourrait verrouiller irrévocablement les administrateurs de niveau supérieur.

Le mieux que vous puissiez faire est d'utiliser un attribut existant ou nouveau et de restreindre l'accès. Vous pouvez empêcher les administrateurs d'y accéder et vous pouvez activer l'audit sur l'attribut afin que toute modification d'accès ou d'autorisations soit enregistrée.


Je stocke un hachage unidirectionnel d'un mot de passe spécifique à mon application.
goodguys_activate

Cela appartient à un commentaire, car il ne répond en aucune façon à la question.
MDMarra

Mark - mes deux dernières phrases sont ma réponse à la question "Où puis-je stocker des données sensibles dans Active Directory?"
mfinni

@Maker - Cela a du sens, et c'est un scénario très similaire au lien que @Zoredache a posté ci-dessus. C'est la réponse native: utilisez un attribut existant ou nouveau et limitez l'accès. Ma suggestion supplémentaire, si votre client se concentre sur la sécurité, est également d'activer l'audit pour cet attribut.
mfinni

@Maker - si c'est vraiment un hachage unidirectionnel, alors il est déjà assez sécurisé de toute façon, non?
mfinni
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.