# Az - Informations de base

{{#include ../../../banners/hacktricks-training.md}}

## Hiérarchie Organisationnelle

<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUcVrh1BpuQXN7RzGqoxrn-4Nm_sjdJU-dDTvshloB7UMQnN1mtH9N94zNiPCzOYAqE9EsJqlboZOj47tQsQktjxszpKvIDPZLs9rgyiObcZCvl7N0ZWztshR0ZddyBYZIAwPIkrEQ=s2048?key=l3Eei079oPmVJuh8lxQYxxrB" alt=""><figcaption><p><a href="https://www.tunecom.be/stg_ba12f/wp-content/uploads/2020/01/VDC-Governance-ManagementGroups-1536x716.png">https://www.tunecom.be/stg_ba12f/wp-content/uploads/2020/01/VDC-Governance-ManagementGroups-1536x716.png</a></p></figcaption></figure>

### Groupes de Gestion

- Il peut contenir **d'autres groupes de gestion ou abonnements**.
- Cela permet d'**appliquer des contrôles de gouvernance** tels que RBAC et Azure Policy une fois au niveau du groupe de gestion et de les **hériter** par tous les abonnements dans le groupe.
- **10 000 groupes de gestion** peuvent être pris en charge dans un seul annuaire.
- Un arbre de groupes de gestion peut supporter **jusqu'à six niveaux de profondeur**. Cette limite n'inclut pas le niveau racine ou le niveau d'abonnement.
- Chaque groupe de gestion et abonnement peut supporter **uniquement un parent**.
- Même si plusieurs groupes de gestion peuvent être créés, **il n'y a qu'un seul groupe de gestion racine**.
- Le groupe de gestion racine **contient** tous les **autres groupes de gestion et abonnements** et **ne peut pas être déplacé ou supprimé**.
- Tous les abonnements au sein d'un seul groupe de gestion doivent faire confiance au **même locataire Entra ID.**

<figure><img src="../../../images/image (147).png" alt=""><figcaption><p><a href="https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png">https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png</a></p></figcaption></figure>

### Abonnements Azure

- C'est un autre **conteneur logique où les ressources** (VMs, DBs…) peuvent être exécutées et seront facturées.
- Son **parent** est toujours un **groupe de gestion** (et cela peut être le groupe de gestion racine) car les abonnements ne peuvent pas contenir d'autres abonnements.
- Il **fait confiance à un seul annuaire Entra ID**
- Les **permissions** appliquées au niveau de l'abonnement (ou à l'un de ses parents) sont **héritées** par toutes les ressources à l'intérieur de l'abonnement.

### Groupes de Ressources

[Dans la documentation :](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Un groupe de ressources est un **conteneur** qui contient des **ressources liées** pour une solution Azure. Le groupe de ressources peut inclure toutes les ressources pour la solution, ou seulement celles **que vous souhaitez gérer en tant que groupe**. En général, ajoutez des **ressources** qui partagent le **même cycle de vie** au même groupe de ressources afin que vous puissiez facilement les déployer, les mettre à jour et les supprimer en tant que groupe.

Toutes les **ressources** doivent être **dans un groupe de ressources** et ne peuvent appartenir qu'à un seul groupe et si un groupe de ressources est supprimé, toutes les ressources à l'intérieur sont également supprimées.

<figure><img src="https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1" alt=""><figcaption><p><a href="https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1">https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1</a></p></figcaption></figure>

### Identifiants de Ressources Azure

Chaque ressource dans Azure a un identifiant de ressource Azure qui l'identifie.

Le format d'un identifiant de ressource Azure est le suivant :

- `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}`

Pour une machine virtuelle nommée myVM dans un groupe de ressources `myResourceGroup` sous l'ID d'abonnement `12345678-1234-1234-1234-123456789012`, l'identifiant de ressource Azure ressemble à ceci :

- `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM`

## Azure vs Entra ID vs Services de Domaine Azure AD

### Azure

Azure est la **plateforme de cloud computing complète de Microsoft, offrant une large gamme de services**, y compris des machines virtuelles, des bases de données, de l'intelligence artificielle et du stockage. Elle sert de fondation pour héberger et gérer des applications, construire des infrastructures évolutives et exécuter des charges de travail modernes dans le cloud. Azure fournit des outils pour les développeurs et les professionnels de l'informatique afin de créer, déployer et gérer des applications et des services de manière transparente, répondant à une variété de besoins allant des startups aux grandes entreprises.

### Entra ID (anciennement Azure Active Directory)

Entra ID est un service de **gestion des identités et des accès basé sur le cloud** conçu pour gérer l'authentification, l'autorisation et le contrôle d'accès des utilisateurs. Il permet un accès sécurisé aux services Microsoft tels qu'Office 365, Azure et de nombreuses applications SaaS tierces. Avec des fonctionnalités telles que l'authentification unique (SSO), l'authentification multi-facteurs (MFA) et des politiques d'accès conditionnel, entre autres.

### Services de Domaine Entra (anciennement Azure AD DS)

Les Services de Domaine Entra étendent les capacités d'Entra ID en offrant des **services de domaine gérés compatibles avec les environnements traditionnels de Windows Active Directory**. Il prend en charge des protocoles hérités tels que LDAP, Kerberos et NTLM, permettant aux organisations de migrer ou d'exécuter des applications plus anciennes dans le cloud sans déployer de contrôleurs de domaine sur site. Ce service prend également en charge les stratégies de groupe pour une gestion centralisée, ce qui le rend adapté aux scénarios où des charges de travail héritées ou basées sur AD doivent coexister avec des environnements cloud modernes.

## Principaux Entra ID

### Utilisateurs

- **Nouveaux utilisateurs**
- Indiquer le nom et le domaine de l'email du locataire sélectionné
- Indiquer le nom affiché
- Indiquer le mot de passe
- Indiquer les propriétés (prénom, titre de poste, informations de contact…)
- Le type d'utilisateur par défaut est "**membre**"
- **Utilisateurs externes**
- Indiquer l'email à inviter et le nom affiché (peut être un email non Microsoft)
- Indiquer les propriétés
- Le type d'utilisateur par défaut est "**Invité**"

### Permissions par Défaut des Membres & Invités

Vous pouvez les vérifier dans [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) mais parmi d'autres actions, un membre pourra :

- Lire tous les utilisateurs, groupes, applications, appareils, rôles, abonnements et leurs propriétés publiques
- Inviter des invités (_peut être désactivé_)
- Créer des groupes de sécurité
- Lire les adhésions de groupe non cachées
- Ajouter des invités aux groupes possédés
- Créer une nouvelle application (_peut être désactivé_)
- Ajouter jusqu'à 50 appareils à Azure (_peut être désactivé_)

> [!NOTE]
> N'oubliez pas que pour énumérer les ressources Azure, l'utilisateur a besoin d'une attribution explicite de la permission.

### Permissions Configurables par Défaut des Utilisateurs

- **Membres (**[**docs**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)**
- Enregistrer des applications : Par défaut **Oui**
- Restreindre les utilisateurs non administrateurs de créer des locataires : Par défaut **Non**
- Créer des groupes de sécurité : Par défaut **Oui**
- Restreindre l'accès au portail d'administration Microsoft Entra : Par défaut **Non**
- Cela ne restreint pas l'accès API au portail (uniquement web)
- Autoriser les utilisateurs à connecter un compte de travail ou d'école avec LinkedIn : Par défaut **Oui**
- Afficher garder l'utilisateur connecté : Par défaut **Oui**
- Restreindre les utilisateurs de récupérer la ou les clés BitLocker pour leurs appareils possédés : Par défaut Non (vérifiez dans les paramètres de l'appareil)
- Lire d'autres utilisateurs : Par défaut **Oui** (via Microsoft Graph)
- **Invités**
- Options de **restrictions d'accès des utilisateurs invités** :
- **Les utilisateurs invités ont le même accès que les membres**.
- **Les utilisateurs invités ont un accès limité aux propriétés et adhésions des objets d'annuaire (par défaut)**. Cela restreint l'accès des invités uniquement à leur propre profil utilisateur par défaut. L'accès à d'autres utilisateurs et informations de groupe n'est plus autorisé.
- **L'accès des utilisateurs invités est restreint aux propriétés et adhésions de leurs propres objets d'annuaire** est la plus restrictive.
- Options **d'invitation des invités** :
- **Quiconque dans l'organisation peut inviter des utilisateurs invités, y compris des invités et des non-administrateurs (le plus inclusif) - Par défaut**
- **Les utilisateurs membres et les utilisateurs assignés à des rôles administratifs spécifiques peuvent inviter des utilisateurs invités, y compris des invités avec des permissions de membre**
- **Seuls les utilisateurs assignés à des rôles administratifs spécifiques peuvent inviter des utilisateurs invités**
- **Personne dans l'organisation ne peut inviter des utilisateurs invités, y compris les administrateurs (le plus restrictif)**
- **Les utilisateurs externes peuvent quitter** : Par défaut **Vrai**
- Autoriser les utilisateurs externes à quitter l'organisation

> [!TIP]
> Même s'ils sont restreints par défaut, les utilisateurs (membres et invités) avec des permissions accordées pourraient effectuer les actions précédentes.

### **Groupes**

Il existe **2 types de groupes** :

- **Sécurité** : Ce type de groupe est utilisé pour donner aux membres accès aux applications, ressources et assigner des licences. Les utilisateurs, appareils, principaux de service et autres groupes peuvent être membres.
- **Microsoft 365** : Ce type de groupe est utilisé pour la collaboration, donnant aux membres accès à une boîte aux lettres partagée, un calendrier, des fichiers, un site SharePoint, etc. Les membres du groupe ne peuvent être que des utilisateurs.
- Cela aura une **adresse email** avec le domaine du locataire EntraID.

Il existe **2 types d'adhésions** :

- **Assigné** : Permet d'ajouter manuellement des membres spécifiques à un groupe.
- **Adhésion dynamique** : Gère automatiquement l'adhésion en utilisant des règles, mettant à jour l'inclusion du groupe lorsque les attributs des membres changent.

### **Principaux de Service**

Un **Principal de Service** est une **identité** créée pour **être utilisée** avec des **applications**, des services hébergés et des outils automatisés pour accéder aux ressources Azure. Cet accès est **restreint par les rôles assignés** au principal de service, vous donnant le contrôle sur **quelles ressources peuvent être accessibles** et à quel niveau. Pour des raisons de sécurité, il est toujours recommandé d'**utiliser des principaux de service avec des outils automatisés** plutôt que de leur permettre de se connecter avec une identité utilisateur.

Il est possible de **se connecter directement en tant que principal de service** en lui générant un **secret** (mot de passe), un **certificat**, ou en accordant un accès **fédéré** à des plateformes tierces (par exemple, Github Actions) à son sujet.

- Si vous choisissez l'authentification par **mot de passe** (par défaut), **enregistrez le mot de passe généré** car vous ne pourrez plus y accéder.
- Si vous choisissez l'authentification par certificat, assurez-vous que l'**application aura accès à la clé privée**.

### Enregistrements d'Applications

Un **Enregistrement d'Application** est une configuration qui permet à une application de s'intégrer avec Entra ID et d'effectuer des actions.

#### Composants Clés :

1. **ID d'Application (Client ID)** : Un identifiant unique pour votre application dans Azure AD.
2. **URIs de Redirection** : URLs où Azure AD envoie les réponses d'authentification.
3. **Certificats, Secrets & Identifiants Fédérés** : Il est possible de générer un secret ou un certificat pour se connecter en tant que principal de service de l'application, ou pour lui accorder un accès fédéré (par exemple, Github Actions).
1. Si un **certificat** ou un **secret** est généré, il est possible pour une personne de **se connecter en tant que principal de service** avec des outils CLI en connaissant l'**ID d'application**, le **secret** ou le **certificat** et le **locataire** (domaine ou ID).
4. **Permissions API** : Spécifie quelles ressources ou APIs l'application peut accéder.
5. **Paramètres d'Authentification** : Définit les flux d'authentification pris en charge par l'application (par exemple, OAuth2, OpenID Connect).
6. **Principal de Service** : Un principal de service est créé lorsqu'une application est créée (si cela est fait depuis la console web) ou lorsqu'elle est installée dans un nouveau locataire.
1. Le **principal de service** obtiendra toutes les permissions demandées avec lesquelles il a été configuré.

### Permissions de Consentement par Défaut

**Consentement des utilisateurs pour les applications**

- **Ne pas autoriser le consentement des utilisateurs**
- Un administrateur sera requis pour toutes les applications.
- **Autoriser le consentement des utilisateurs pour les applications de publishers vérifiés, applications internes et applications demandant uniquement des permissions sélectionnées (Recommandé)**
- Tous les utilisateurs peuvent consentir aux applications demandant uniquement des permissions classées comme "impact faible", applications de publishers vérifiés et applications enregistrées dans le locataire.
- **Permissions par défaut à faible impact** (bien que vous deviez accepter de les ajouter comme faibles) :
- User.Read - se connecter et lire le profil utilisateur
- offline_access - maintenir l'accès aux données auxquelles les utilisateurs ont donné accès
- openid - connecter les utilisateurs
- profile - voir le profil de base de l'utilisateur
- email - voir l'adresse email de l'utilisateur
- **Autoriser le consentement des utilisateurs pour les applications (Par défaut)**
- Tous les utilisateurs peuvent consentir pour toute application à accéder aux données de l'organisation.

**Demandes de consentement administratives** : Par défaut **Non**

- Les utilisateurs peuvent demander le consentement administratif pour des applications auxquelles ils ne peuvent pas consentir
- Si **Oui** : Il est possible d'indiquer les Utilisateurs, Groupes et Rôles qui peuvent consentir aux demandes
- Configurer également si les utilisateurs recevront des notifications par email et des rappels d'expiration

### **Identité Gérée (Métadonnées)**

Les identités gérées dans Azure Active Directory offrent une solution pour **gérer automatiquement l'identité** des applications. Ces identités sont utilisées par les applications dans le but de **se connecter** aux **ressources** compatibles avec l'authentification Azure Active Directory (**Azure AD**). Cela permet de **supprimer le besoin de coder en dur les identifiants cloud** dans le code car l'application pourra contacter le **service de métadonnées** pour obtenir un jeton valide afin de **réaliser des actions** en tant qu'identité gérée indiquée dans Azure.

Il existe deux types d'identités gérées :

- **Assignée au système**. Certains services Azure vous permettent d'**activer une identité gérée directement sur une instance de service**. Lorsque vous activez une identité gérée assignée au système, un **principal de service** est créé dans le locataire Entra ID de confiance par l'abonnement où la ressource est située. Lorsque la **ressource** est **supprimée**, Azure supprime automatiquement **l'identité** pour vous.
- **Assignée par l'utilisateur**. Il est également possible pour les utilisateurs de générer des identités gérées. Celles-ci sont créées à l'intérieur d'un groupe de ressources dans un abonnement et un principal de service sera créé dans l'EntraID de confiance par l'abonnement. Ensuite, vous pouvez assigner l'identité gérée à une ou **plusieurs instances** d'un service Azure (plusieurs ressources). Pour les identités gérées assignées par l'utilisateur, **l'identité est gérée séparément des ressources qui l'utilisent**.

Les Identités Gérées **ne génèrent pas de credentials éternels** (comme des mots de passe ou des certificats) pour accéder en tant que principal de service qui y est attaché.

### Applications d'Entreprise

C'est juste une **table dans Azure pour filtrer les principaux de service** et vérifier les applications qui ont été assignées.

**Ce n'est pas un autre type d'“application”**, il n'y a aucun objet dans Azure qui est une “Application d'Entreprise”, c'est juste une abstraction pour vérifier les Principaux de Service, les Enregistrements d'Applications et les Identités Gérées.

### Unités Administratives

Les unités administratives permettent de **donner des permissions d'un rôle sur une portion spécifique d'une organisation**.

Exemple :

- Scénario : Une entreprise souhaite que les administrateurs informatiques régionaux gèrent uniquement les utilisateurs de leur propre région.
- Mise en œuvre :
- Créer des Unités Administratives pour chaque région (par exemple, "AU Amérique du Nord", "AU Europe").
- Peupler les AU avec des utilisateurs de leurs régions respectives.
- Les AU peuvent **contenir des utilisateurs, groupes ou appareils**
- Les AU prennent en charge **les adhésions dynamiques**
- Les AU **ne peuvent pas contenir d'AU**
- Attribuer des Rôles Administrateurs :
- Accorder le rôle "Administrateur des Utilisateurs" au personnel informatique régional, limité à l'AU de leur région.
- Résultat : Les administrateurs informatiques régionaux peuvent gérer les comptes utilisateurs au sein de leur région sans affecter d'autres régions.

### Rôles & Permissions Entra ID

- Afin de gérer Entra ID, il existe certains **rôles intégrés** qui peuvent être assignés aux principaux Entra ID pour gérer Entra ID
- Vérifiez les rôles dans [https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference)
- Les rôles marqués comme **`PRIVILÉGIÉ`** par EntraID doivent être assignés avec prudence car comme l'explique Microsoft [dans la documentation](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference) : Les attributions de rôles privilégiés peuvent entraîner une élévation de privilèges si elles ne sont pas utilisées de manière sécurisée et intentionnelle.
- Le rôle le plus privilégié est **Administrateur Global**
- Les rôles regroupent **des permissions granulaires** et elles peuvent être trouvées dans leurs descriptions.
- Il est possible de **créer des rôles personnalisés** avec les permissions souhaitées. Bien que pour une raison quelconque, toutes les permissions granulaires ne soient pas disponibles pour que les administrateurs créent des rôles personnalisés.
- Les rôles dans Entra ID sont complètement **indépendants** des rôles dans Azure. La seule relation est que les principaux avec le rôle **Administrateur Global** dans Entra ID peuvent s'élever au rôle **Administrateur d'Accès Utilisateur** dans Azure.
- Il est **impossible d'utiliser des jokers** dans les rôles Entra ID.

## Rôles & Permissions Azure

- **Les Rôles** sont **assignés** aux **principaux** sur un **scope** : `principal -[A UN RÔLE]->(scope)`
- **Les Rôles** assignés à **des groupes** sont **hérités** par tous les **membres** du groupe.
- En fonction du scope auquel le rôle a été assigné, le **rôle** peut être **hérité** par **d'autres ressources** à l'intérieur du conteneur de scope. Par exemple, si un utilisateur A a un **rôle sur l'abonnement**, il aura ce **rôle sur tous les groupes de ressources** à l'intérieur de l'abonnement et sur **toutes les ressources** à l'intérieur du groupe de ressources.

### Rôles Intégrés

[Dans la documentation : ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Le contrôle d'accès basé sur les rôles Azure (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) a plusieurs **rôles intégrés Azure** que vous pouvez **assigner** à **des utilisateurs, groupes, principaux de service et identités gérées**. Les attributions de rôles sont la manière dont vous contrôlez **l'accès aux ressources Azure**. Si les rôles intégrés ne répondent pas aux besoins spécifiques de votre organisation, vous pouvez créer vos propres [**rôles personnalisés Azure**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles).

Les **Rôles Intégrés** s'appliquent uniquement aux **ressources** auxquelles ils sont **destinés**, par exemple, vérifiez ces 2 exemples de **Rôles Intégrés sur les ressources de Calcul** :

| [Lecteur de Sauvegarde de Disque](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader)                 | Fournit la permission au coffre de sauvegarde pour effectuer une sauvegarde de disque.      | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ |
| [Connexion Utilisateur de Machine Virtuelle](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Voir les Machines Virtuelles dans le portail et se connecter en tant qu'utilisateur régulier. | fb879df8-f326-4884-b1cf-06f3ad86be52 |

Ces rôles peuvent **également être assignés sur des conteneurs logiques** (tels que des groupes de gestion, des abonnements et des groupes de ressources) et les principaux affectés les auront **sur les ressources à l'intérieur de ces conteneurs**.

- Trouvez ici une liste avec [**tous les rôles intégrés Azure**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles).
- Trouvez ici une liste avec [**tous les rôles intégrés Entra ID**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference).

### Rôles Personnalisés

- Il est également possible de créer [**des rôles personnalisés**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)
- Ils sont créés à l'intérieur d'un scope, bien qu'un rôle puisse être dans plusieurs scopes (groupes de gestion, abonnements et groupes de ressources)
- Il est possible de configurer toutes les permissions granulaires que le rôle personnalisé aura
- Il est possible d'exclure des permissions
- Un principal avec une permission exclue ne pourra pas l'utiliser même si la permission est accordée ailleurs
- Il est possible d'utiliser des jokers
- Le format utilisé est un JSON
- `actions` se réfère aux permissions pour les opérations de gestion sur les ressources, telles que la création, la mise à jour ou la suppression des définitions et paramètres de ressources.
- `dataActions` sont des permissions pour les opérations de données au sein de la ressource, vous permettant de lire, écrire ou supprimer les données réelles contenues dans la ressource.
- `notActions` et `notDataActions` sont utilisés pour exclure des permissions spécifiques du rôle. Cependant, **elles ne les refusent pas**, si un rôle différent les accorde, le principal les aura.
- `assignableScopes` est un tableau de scopes où le rôle peut être assigné (comme des groupes de gestion, des abonnements ou des groupes de ressources).

Exemple de permissions JSON pour un rôle personnalisé :
```json
{
"properties": {
"roleName": "",
"description": "",
"assignableScopes": ["/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f"],
"permissions": [
{
"actions": [
"Microsoft.DigitalTwins/register/action",
"Microsoft.DigitalTwins/unregister/action",
"Microsoft.DigitalTwins/operations/read",
"Microsoft.DigitalTwins/digitalTwinsInstances/read",
"Microsoft.DigitalTwins/digitalTwinsInstances/write",
"Microsoft.CostManagement/exports/*"
],
"notActions": [
"Astronomer.Astro/register/action",
"Astronomer.Astro/unregister/action",
"Astronomer.Astro/operations/read",
"Astronomer.Astro/organizations/read"
],
"dataActions": [],
"notDataActions": []
}
]
}
}
```
### Permissions order

- Afin qu'un **principal ait un accès à une ressource**, il a besoin d'un rôle explicite qui lui est accordé (de quelque manière que ce soit) **lui accordant cette permission**.
- Une **attribution de refus explicite a la priorité** sur le rôle accordant la permission.

<figure><img src="../../../images/image (191).png" alt=""><figcaption><p><a href="https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10">https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10</a></p></figcaption></figure>

### Global Administrator

Global Administrator est un rôle d'Entra ID qui accorde **un contrôle total sur le locataire Entra ID**. Cependant, il n'accorde par défaut aucune permission sur les ressources Azure.

Les utilisateurs ayant le rôle de Global Administrator ont la capacité de '**s'élever' au rôle d'Administrateur d'Accès Utilisateur Azure dans le Groupe de Gestion Racine**. Ainsi, les Global Administrators peuvent gérer l'accès dans **toutes les souscriptions Azure et groupes de gestion.**\
Cette élévation peut être effectuée en bas de la page : [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)

<figure><img src="../../../images/image (349).png" alt=""><figcaption></figcaption></figure>

### Assignments Conditions & MFA

Selon **[la documentation](https://learn.microsoft.com/en-us/azure/role-based-access-control/conditions-role-assignments-portal)** : Actuellement, des conditions peuvent être ajoutées aux attributions de rôles intégrés ou personnalisés qui ont **des actions de données de stockage blob ou des actions de données de stockage de files d'attente**.

### Deny Assignments

Tout comme les attributions de rôles, les **attributions de refus** sont utilisées pour **contrôler l'accès aux ressources Azure**. Cependant, les **attributions de refus** sont utilisées pour **refuser explicitement l'accès** à une ressource, même si un utilisateur a été accordé l'accès par le biais d'une attribution de rôle. Les **attributions de refus** ont la priorité sur les **attributions de rôle**, ce qui signifie que si un utilisateur se voit accorder l'accès par le biais d'une attribution de rôle mais se voit également explicitement refuser l'accès par une attribution de refus, l'attribution de refus prévaudra.

Tout comme les attributions de rôles, les **attributions de refus** sont appliquées sur un certain périmètre indiquant les principaux affectés et les permissions qui sont refusées. De plus, dans le cas des attributions de refus, il est possible de **prévenir que le refus soit hérité** par les ressources enfants.

### Azure Policies

**Azure Policies** sont des règles qui aident les organisations à s'assurer que leurs ressources répondent à des normes spécifiques et à des exigences de conformité. Elles vous permettent de **faire respecter ou d'auditer les paramètres sur les ressources dans Azure**. Par exemple, vous pouvez empêcher la création de machines virtuelles dans une région non autorisée ou vous assurer que toutes les ressources ont des balises spécifiques pour le suivi.

Les Azure Policies sont **proactives** : elles peuvent empêcher la création ou la modification de ressources non conformes. Elles sont également **réactives**, vous permettant de trouver et de corriger les ressources non conformes existantes.

#### **Key Concepts**

1. **Policy Definition** : Une règle, écrite en JSON, qui spécifie ce qui est autorisé ou requis.
2. **Policy Assignment** : L'application d'une politique à un périmètre spécifique (par exemple, souscription, groupe de ressources).
3. **Initiatives** : Une collection de politiques regroupées pour une application plus large.
4. **Effect** : Spécifie ce qui se passe lorsque la politique est déclenchée (par exemple, "Deny", "Audit" ou "Append").

**Quelques exemples :**

1. **Assurer la conformité avec des régions Azure spécifiques** : Cette politique garantit que toutes les ressources sont déployées dans des régions Azure spécifiques. Par exemple, une entreprise pourrait vouloir s'assurer que toutes ses données sont stockées en Europe pour se conformer au RGPD.
2. **Faire respecter les normes de nommage** : Les politiques peuvent faire respecter des conventions de nommage pour les ressources Azure. Cela aide à organiser et à identifier facilement les ressources en fonction de leurs noms, ce qui est utile dans de grands environnements.
3. **Restreindre certains types de ressources** : Cette politique peut restreindre la création de certains types de ressources. Par exemple, une politique pourrait être définie pour empêcher la création de types de ressources coûteux, comme certaines tailles de VM, pour contrôler les coûts.
4. **Faire respecter les politiques de balisage** : Les balises sont des paires clé-valeur associées aux ressources Azure utilisées pour la gestion des ressources. Les politiques peuvent faire respecter que certaines balises doivent être présentes, ou avoir des valeurs spécifiques, pour toutes les ressources. Cela est utile pour le suivi des coûts, la propriété ou la catégorisation des ressources.
5. **Limiter l'accès public aux ressources** : Les politiques peuvent faire respecter que certaines ressources, comme les comptes de stockage ou les bases de données, n'ont pas de points de terminaison publics, garantissant qu'elles ne sont accessibles que dans le réseau de l'organisation.
6. **Appliquer automatiquement des paramètres de sécurité** : Les politiques peuvent être utilisées pour appliquer automatiquement des paramètres de sécurité aux ressources, comme appliquer un groupe de sécurité réseau spécifique à toutes les VM ou s'assurer que tous les comptes de stockage utilisent le chiffrement.

Notez que les Azure Policies peuvent être attachées à n'importe quel niveau de la hiérarchie Azure, mais elles sont **généralement utilisées dans le groupe de gestion racine** ou dans d'autres groupes de gestion.

Exemple de politique Azure json :
```json
{
"policyRule": {
"if": {
"field": "location",
"notIn": ["eastus", "westus"]
},
"then": {
"effect": "Deny"
}
},
"parameters": {},
"displayName": "Allow resources only in East US and West US",
"description": "This policy ensures that resources can only be created in East US or West US.",
"mode": "All"
}
```
### Héritage des autorisations

Dans Azure, **les autorisations peuvent être attribuées à n'importe quelle partie de la hiérarchie**. Cela inclut les groupes de gestion, les abonnements, les groupes de ressources et les ressources individuelles. Les autorisations sont **héritées** par les **ressources** contenues de l'entité où elles ont été attribuées.

Cette structure hiérarchique permet une gestion efficace et évolutive des autorisations d'accès.

<figure><img src="../../../images/image (26).png" alt=""><figcaption></figcaption></figure>

### Azure RBAC vs ABAC

**RBAC** (contrôle d'accès basé sur les rôles) est ce que nous avons déjà vu dans les sections précédentes : **Attribuer un rôle à un principal pour lui accorder l'accès** à une ressource.\
Cependant, dans certains cas, vous pourriez vouloir fournir une **gestion des accès plus granulaire** ou **simplifier** la gestion de **centaines** d'**attributions** de rôles.

Azure **ABAC** (contrôle d'accès basé sur les attributs) s'appuie sur Azure RBAC en ajoutant des **conditions d'attribution de rôle basées sur des attributs** dans le contexte d'actions spécifiques. Une _condition d'attribution de rôle_ est un **vérification supplémentaire que vous pouvez ajouter à votre attribution de rôle** pour fournir un contrôle d'accès plus granulaire. Une condition filtre les autorisations accordées dans le cadre de la définition de rôle et de l'attribution de rôle. Par exemple, vous pouvez **ajouter une condition qui exige qu'un objet ait une étiquette spécifique pour lire l'objet**.\
Vous **ne pouvez pas** explicitement **refuser** l'**accès** à des ressources spécifiques **en utilisant des conditions**.

## Références

- [https://learn.microsoft.com/en-us/azure/governance/management-groups/overview](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview)
- [https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/organize-subscriptions](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/organize-subscriptions)
- [https://abouttmc.com/glossary/azure-subscription/#:\~:text=An%20Azure%20subscription%20is%20a,the%20subscription%20it%20belongs%20to.](https://abouttmc.com/glossary/azure-subscription/)
- [https://learn.microsoft.com/en-us/azure/role-based-access-control/overview#how-azure-rbac-determines-if-a-user-has-access-to-a-resource](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview#how-azure-rbac-determines-if-a-user-has-access-to-a-resource)
- [https://stackoverflow.com/questions/65922566/what-are-the-differences-between-service-principal-and-app-registration](https://stackoverflow.com/questions/65922566/what-are-the-differences-between-service-principal-and-app-registration)

{{#include ../../../banners/hacktricks-training.md}}
