Les articles publiés sur ce blog, ont pour but de partager des connaissances/concepts techniques et sont tous réalisés dans un environnement de test. Par conséquent, les auteurs dégagent toute responsabilité, de quelque ordre que ce soit, quant aux dommages directs, indirects ou consécutifs résultant de l’utilisation des informations contenus dans ceux-ci.
Introduction
La réalisation des actions décrites dans cet article, nécessite que PAM soit configuré et installé comme indiqué dans l’article sur l’installation de PAM.
Rappel du contexte
Relation d’approbation entre une forêt d’administration (red.lab) et une forêt de « production » (corp.lab) ayant les caractéristiques suivantes :
- Type : Forêt
- Direction : red.lab approuvée par corp.lab
- Authentification : sélective
L ‘exercice consiste à autoriser un compte de red.lab à devenir domain admins sur corp.lab.
DNS
Vérifiez/Créez un enregistrement DNS ayant les caractéristiques suivantes :
NOM |
TYPE |
ADDRESSE IP |
DESCRIPTION |
URL d’accès au pam sample Ex : rolerequest.red.lab |
A |
IP du serveur MIM |
Accès au portail d’élévation de privilèges |
Cet enregistrement correspond à l’URL du portail PAM sample.
Configuration Active Directory
Afin de forcer le portail pam sample à faire du kerberos, il est nécessaire d’ajouter le SPN rolerequest.red.lab sur le compte qui exécute l’appPool PAMRestApiAppPool (configuré lors de l’installation de PAM)
Lancez un prompt powershell runas admin et tapez :
Setspn -S http/rolerequest.red.lab red\svc_mimsp
Configuration du portail PAM Sample
Le portail PAM Sample est un portail web, disponible sur github, qui permet de réaliser des élévations de privilèges de façon plus ergonomique.
Téléchargez le PAM Sample et copiez le sur le serveur PAM.
Loguez-vous sur le serveur PAM et décompressez l’archive précédemment téléchargée
Rendez-vous dans le répertoire C:\Program Files\Microsoft Forefront Identity Manager\2010
Créez le répertoire Privileged Access Management Portal
Copiez le contenu du répertoire src du pam sample dans celui nouvellement créé
Création du site web
Dans cette section, nous allons créé le site web du portail pam sample.
Sur le serveur PAM, ouvrez un prompt powershell runas admin et tapez les cmdlet suivants :
New-WebSite -Name “PAM SAMPLE Portal” -Port 8090 -PhysicalPath “C:\Program Files\Microsoft Forefront Identity Manager\2010\Privileged Access Management Portal\”

Configuration de la REST API PAM
Ici nous allons configurer le pam sample pour rediriger les requêtes d’élévation de privilèges vers la PAM API.
Editez le fichier web.config présent dans C:\Program Files\Microsoft Forefront Identity Manager\2010\Privileged Access Management REST API
Ajoutez les lignes suivantes entre les balises security et handlers :
<httpProtocol>
<customHeaders>
<add name=”Access-Control-Allow-Credentials” value=”true” />
<add name=”Access-Control-Allow-Headers” value=”content-type” />
<add name=”Access-Control-Allow-Origin” value=”http://rolerequest.red.lab:8090″ />
</customHeaders>
</httpProtocol>

Configuration du portail pam sample
Editez le fichier C:\Program Files\Microsoft Forefront Identity Manager\2010\Privileged Access Management Portal\js\utils.js

Ouvrez un prompt cmd runas admin et tapez :
IISreset /STOP
C:\Windows\System32\inetsrv\appcmd.exe unlock config /section:windowsAuthentication -commit:apphost
iisreset /START

Lancez votre navigateur web depuis le serveur PAM et accédez à l’URL : http://rolerequest.red.lab:8086/api/pamresources/pamroles
Si vous recevez le message d’erreur suivant :

Il faut modifier le mode d’authentification. Pour ce faire, lancez IIS Manager (Windows + R inetmgr)
Dans la section Management, sélectionnez Feature Delegation

Faites un clic droit sur Authenitcation – Windows et sélectionnez Read/Write

Portail MIM
Loguez-vous sur le portail MIM (mimportal.red.lab/IdentityManagement) avec un compte membre du set Administrators ou avec le compte utilisé lors de l’installation du portail MIM.
Cliquez sur Administration
Cliquez sur Schema Management

Cliquez sur All Attributes

Cliquez sur New
System name : PresentInAD
Display Name : PresentInAD
Data Type : Boolean
Description : Différencie les objets synchronisés depuis l’AD de ceux créés dans le portail
Cliquez sur Finish
Cliquez sur Submit

Cliquez sur All bindings

Cliquez sur New
Resource Type : Group
Attribute Type : PresentInAD
Cliquez sur Finish
Cliquez sur Submit

Refaites un bind sur la ressource de type User pour l’attribut PresentInAD
Cliquez sur New
Resource Type : User
Attribute Type : PresentInAD
Cliquez sur Finish
Cliquez sur Submit

Suivez les étapes précédentes pour créer l’attribut :
- Nom Attribut : MIMImportFilter
- Type : Boolean
- Description : Filtre les groupes synchronisés depuis l’AD pour ne pas les réimportés dans le MetaVerse
- Binding : Group
Configuration du moteur de synchronisation (FIMSync)
Nous allons utiliser le moteur de synchro FIMSync afin que le(s) compte(s) puisse(ent) être candidat(s) pour l’élévation de privilèges.
Loguez-vous sur le serveur MIM/PAM avec un compte membre du groupe FIMSyncAdmins
Lancez
Ajout d’attibuts custom dans le MetaVerse
Cliquez sur Metaverse Designer
Dans la section object types, sélectionnez person

Dans la rubrique Actions (en bas à droite), cliquez sur Add Attribute
Cliquez sur New attribute…
Attribute name : domainFQDN
Attribute type : string (indexable)

Cliquez sur New attribute…
Attribute name : msidmPamLinkedUser
Attribute type : Reference (DN)

Création Management Agent
Dans le menu Actions (à droite de la fenêtre), cliquez sur Create

Création/Configuration du Management Agent FIMService
Create Management Agent
Management agent for : FIM Service Management Agent
Name: MA FIMService Portal

Connect to Database
Server : MIM-PAM\MIMPAM
Database : FIMService
FIM Service base address : http://mimportal.red.lab:5725
User name: svc_FIMServiceMA
Password: <Password>
Domain: RED

Select Object Types
Cochez toutes les cases

Select Attributes
Cochez (en haut à droite)
Décochez les attributs suivants :
DisplayedOwner
Filter
msidmDeferredEvaluation
msidmPamPrivOnlyGroup
msidmPamSourceSid
msidmPamUsesSIDHistory
Owner
Temporal

Configure Connector Filter
Sélectionnez Group
Filter Type : Declared
Cliquez sur New
Data source attribute: MIMImportFilter
Operator: Equals
Value: true
Click Add Condition

Sélectionnez Person
Filter Type : Declared
Cliquez sur New
Data source attribute: DisplayName
Operator: Starts with
Value: Built-in
Click Add Condition
OK
New
Data source attribute: AccountName
Operator: Starts with
Value: svc_
Click Add Condition
OK
New
Data source attribute: AccountName
Operator: Starts with
Value: GMSA_
Click Add Condition
OK

Configure Object Type Mappings
Select Group
Add Mapping
Metaverse object type: Group
OK
Select Person
Add Mapping
Metaverse object type: person
OK

Configure Attrubte Flow
Modifiez uniquement l’attribute flow des types d’objets Group et Person comme indiqué dans les screenshots ci-dessous :
Group

Person

Soyez vigilent concernant la direction des flèches
Configure Deprovisioning
Sélectionnez Stage a delete on the object for the next export run

Configure Extensions
Cliquez sur Finish

Création/Configuration du Management Agent RED.LAB
Create Management Agent
Management agent for : Active Directory Services
Name: MA ADDS RED.LAB

Connect to Active Directory Forest
Forest name: red.lab
User name: svc_MIMMARED
Password: <Password>
Domain: RED

Configure Directory Partitions
Cochez
Cliquez sur
Sélectionnez les OU que vous souhaitez synchroniser

Le compte de service RED\svc_MIMMARED doit avoir la permission Replicating Directory Changes sur le domaine corp.lab.
Configure Provisioning Hierarchy
Dans la section Distinguished Name Component, sélectionnez ou
Dans la section Directory ObjectClass, sélectionnez organizationalUnit
Cliquez sur New

Select Object Types
Cochez container, domainDNS, group, organizationalUnit et user

Select Attributes
Cochez les Attrbuts suivants :
accountExpires
cn
displayName
member
msDS-PhoneticDisplayName
name
objectSid
ou
sAMAccountName
userAccountControl
userPrincipalName

Configure Connector Filter
Laissez la configuration par défaut

Configure Join and Projection Rules
Sélectionnez Group
New Projection Rule…
Projection type: Declared
Metaverse object type: group
OK

Sélectionnez user
New Projection Rule…
Projection type: Declared
Metaverse object type: user
OK

Configure Attribute Flow
Laissez la configuration par défaut

Configure Deprovisioning
Sélectionnez Make them disconnectors

Configure Extensions
Cliquez sur Finish

Configuration de la Sync Rule
Loguez-vous sur le portail MIM avec le compte d’installation du portail MIM
Cliquez sur Administration -> Synchronization Rules

Cliquez sur New
Onglet General
Display Name : #SR-InBound MA RED.LAB > MV – USERS – Admins
Description: SyncRule InBound MA RED.LAB > MV – USERS – Admins
Data Flow Direction : Inbound

Afin de différencier les objets custom des objets built-in du portail, nous préconisons d’avoir une convention de nommage claire et de respecter celle-ci rigoureusement.
Onglet Scope
Metaver Resource Type : person
External System : MA ADDS RED.LAB
External System Resource Type: user
Inbound System Scoping Filter
SAMAccountName not starts with Built-in
SAMAccountName not starts with svc_
SAMAccount not starts with gmsa

Onglet Relationship
Relationship Criteria
Cn = cn
Décochez Create Resource inFIM

Inbound Attribute Flow
Pour configurer l’attribute flow, cliquez sur :
Onglet Source (Attribut ADDS)

Onglet Destination (Attribut MV)

Inbound Attribute Flow

Pour l’attribute flow des attributs domain et domainFQDN, dans l’onglet source, il faut sélectionner constant value de type string
Cliquez sur Finish et Submit
Création/Configuration des run profiles
Les run profiles sont des process (staging, synchronisation, export) permettant de déterminer l’état des objets à synchroniser/exporter (source de données) et comment les intégrer dans le MetaVerse. Un management agent doit contenir au minimum 1 run profile.
Les run profiles doivent être créés pour chacun des management agents
Dans le menu Actions (à droite de la fenêtre), cliquez sur Configure Run Profiles -> New Profile…
Full Import
Profile Name
Name : FI

Configure Step
Type : Full Import (Stage Only)

Management Agent Configuration
Partition: dc,red, dc=lab

Full Synchronization
Profile Name
Name: FS
Configure Step
Type: Full Synchronization

Management Agent Configuration
Partition: dc,red, dc=lab

Delta Import
Profile Name
Name: DI

Configure Step
Type: Delta Import (Stage Only)

Management Agent Configuration
Partition: dc,red, dc=lab

Delta Synchronization
Profile Name
Name: DS

Configure Step
Type: Delta Synchronization

Management Agent Configuration
Partition: dc,red, dc=lab

Export
Profile Name
Name: EX

Configure Step
Type: Export

Management Agent Configuration
Partition: dc,red, dc=lab

Synchronization des comptes
La 1ère execution d’un run profile est toujours en full
Faites un clic droit sur le MA MA FIMService Portal
Cliquez sur
Sélectionnez FI (Full Import) pour importer les Synchnoization rules du portail dans le connector space
Faites un clic droit sur le MA MA ADDS RED.LAB
Cliquez sur
Sélectionnez FI (Full Import) pour importer les objets utilisateurs et groupes de l’Active Directory dans le connector space
Les FI (Full Import) peuvent être exécutés en même temps contrairement aux Full Sync
Faites un clic droit sur le MA MA FIMService Portal
Cliquez sur
Sélectionnez FS (Full Sync) pour importer les Synchnoization rules du portail dans le MetaVerse
Faites un clic droit sur le MA MA ADDS RED.LAB
Cliquez sur
Sélectionnez FI (Full Import) pour importer les objets utilisateurs et groupes de l’Active Directory dans le MetaVerse
Faites un clic droit sur le MA MA FIMService Portal
Cliquez sur
Sélectionnez EX (Export) pour exporter les objets dans le portail
Faites un clic droit sur le MA MA FIMService Portal
Cliquez sur
Sélectionnez DI (Delta Import) pour valider l’export précédemment réalisé
Validez/Vérifiez que le(s) compte(s) utilisateurs sont bien présents dans le portail.
Configuration de l’éligibilité au PAM Role CORP\domain admins
Dans cette section, nous allons travailler sur le compte red\ventDuNord_da afin de rendre celui-ci éligible au PAM Role CORP\Domain Admins.
Loguez-vous sur le portail MIM et cliquez sur le menu Users
Sélectionnez le compte VentDuNord_da et cliquez sur
Sélectionnez l’onglet Extended Attributes et cochez la case PresentInAD

Cliquez sur OK puis Submit
Cliquez sur le menu PAM Roles
Cliquez sur CORP\Domain Admins (PAM Role lié au PAM Group CORP.Domain Admins)
La création des PAM Group & PAM Role est décrite dans l’article Elévation de privilèges via PAM (Privileged Account Management) en PowerShell
Onglet Candidates
Cliquez sur puis cliquez sur
Sélectionnez VentDuNord_da

Cliquez sur OK, puis Submit.
Elévation de privilèges via le portail pam sample
N’oubliez pas de rajouter l’URL dans les sites de confiance d’internet Explorer pour éviter d’être prompté
Comme on peut le voir, le compte RED\VentDuNord_da n’est membre d’aucun groupe à privilèges

Ouvrez une session sur une machine du domaine red.lab avec le compte red\VentDuNord_da
Accédez à l’URL http://rolerequest.red.lab:8090
Sur le portail pam sample, cliquez sur Activate
Pour effectuer l’élévation de privilèges cliquez sur le bouton


Cliquez sur le bouton
Confirmation que le privilège a été octroyé

Afin de valider que le privilège a bien été affecté, vous pouvez vérifier :
- que le compte est bien membre du shadow principal correspondant au PAM Group CORP domain admins

- Dans le portail MIM, allez dans les search request


Remarques
Les comptes à privilèges étant des comptes extrêmement sensibles et par conséquent appliquent des règles de sécurité relativement drastiques ( PSO, complexité des mots de passe, Authentication policy, etc…). L’une des mesure de sécurité phare est de rajouter les comptes dans le groupe protected users. Si le compte à privilèges est membre de ce groupe, l’élévation de privilèges via le portail PAM sample, ne sera pas possible. En effet, un des paramètres de sécurité du groupe protected users est d’interdire la délégation kerberos pour ses membres. Par conséquent, il faudra faire vos élévations de privilèges en powershell (Elévation de privilèges via PAM (Privileged Account Management) en PowerShell).
A ciao & have fun !!!