Translated ['src/README.md', 'src/banners/hacktricks-training.md', 'src/

This commit is contained in:
Translator
2024-12-31 20:20:29 +00:00
parent 77a009d308
commit 4bcd54c1b6
245 changed files with 9959 additions and 12700 deletions

View File

@@ -1,376 +1,372 @@
# Az - Basic Information
# Az - Grundinformationen
{{#include ../../../banners/hacktricks-training.md}}
## Organization Hierarchy
## Organisationshierarchie
<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>
### Management Groups
### Verwaltungsgruppen
- It can contain **other management groups or subscriptions**.
- This allows to **apply governance controls** such as RBAC and Azure Policy once at the management group level and have them **inherited** by all the subscriptions in the group.
- **10,000 management** groups can be supported in a single directory.
- A management group tree can support **up to six levels of depth**. This limit doesnt include the root level or the subscription level.
- Each management group and subscription can support **only one parent**.
- Even if several management groups can be created **there is only 1 root management group**.
- The root management group **contains** all the **other management groups and subscriptions** and **cannot be moved or deleted**.
- All subscriptions within a single management group must trust the **same Entra ID tenant.**
- Sie kann **andere Verwaltungsgruppen oder Abonnements** enthalten.
- Dies ermöglicht es, **Governance-Kontrollen** wie RBAC und Azure Policy einmal auf der Ebene der Verwaltungsgruppe anzuwenden und sie von allen Abonnements in der Gruppe **zu erben**.
- **10.000 Verwaltungs**gruppen können in einem einzigen Verzeichnis unterstützt werden.
- Ein Verwaltungsgruppengeäst kann **bis zu sechs Ebenen tief** sein. Diese Grenze schließt die Wurzelebene oder die Abonnementebene nicht ein.
- Jede Verwaltungsgruppe und jedes Abonnement kann **nur einen Elternteil** unterstützen.
- Auch wenn mehrere Verwaltungsgruppen erstellt werden können, gibt es **nur 1 Wurzelverwaltungsgruppe**.
- Die Wurzelverwaltungsgruppe **enthält** alle **anderen Verwaltungsgruppen und Abonnements** und **kann nicht verschoben oder gelöscht werden**.
- Alle Abonnements innerhalb einer einzigen Verwaltungsgruppe müssen dem **gleichen Entra ID-Mandanten vertrauen.**
<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>
### Azure Subscriptions
### Azure-Abonnements
- Its another **logical container where resources** (VMs, DBs…) can be run and will be billed.
- Its **parent** is always a **management group** (and it can be the root management group) as subscriptions cannot contain other subscriptions.
- It **trust only one Entra ID** directory
- **Permissions** applied at the subscription level (or any of its parents) are **inherited** to all the resources inside the subscription
- Es ist ein weiterer **logischer Container, in dem Ressourcen** (VMs, DBs…) ausgeführt werden können und abgerechnet werden.
- Sein **Elternteil** ist immer eine **Verwaltungsgruppe** (und es kann die Wurzelverwaltungsgruppe sein), da Abonnements keine anderen Abonnements enthalten können.
- Es **vertraut nur einem Entra ID**-Verzeichnis.
- **Berechtigungen**, die auf der Abonnementebene (oder einer seiner Eltern) angewendet werden, werden **auf alle Ressourcen innerhalb des Abonnements vererbt**.
### Resource Groups
### Ressourcengruppen
[From the docs:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) A resource group is a **container** that holds **related resources** for an Azure solution. The resource group can include all the resources for the solution, or only those **resources that you want to manage as a group**. Generally, add **resources** that share the **same lifecycle** to the same resource group so you can easily deploy, update, and delete them as a group.
[Aus den Dokumenten:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Eine Ressourcengruppe ist ein **Container**, der **verwandte Ressourcen** für eine Azure-Lösung enthält. Die Ressourcengruppe kann alle Ressourcen für die Lösung oder nur die **Ressourcen, die Sie als Gruppe verwalten möchten**, umfassen. Im Allgemeinen fügen Sie **Ressourcen** hinzu, die den **gleichen Lebenszyklus** teilen, zur gleichen Ressourcengruppe hinzu, damit Sie sie einfach als Gruppe bereitstellen, aktualisieren und löschen können.
All the **resources** must be **inside a resource group** and can belong only to a group and if a resource group is deleted, all the resources inside it are also deleted.
Alle **Ressourcen** müssen **innerhalb einer Ressourcengruppe** sein und können nur zu einer Gruppe gehören, und wenn eine Ressourcengruppe gelöscht wird, werden auch alle Ressourcen darin gelöscht.
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfe8U30iP_vdZCvxX4g8nEPRLoo7v0kmCGkDn1frBPn3_GIoZ7VT2LkdsVQWCnrG_HSYNRRPM-1pSECUkbDAB-9YbUYLzpvKVLDETZS81CHWKYM4fDl3oMo5-yvTMnjdLTS2pz8U67xUTIzBhZ25MFMRkq5koKY=s2048?key=gSyKQr3HTyhvHa28Rf7LVA" alt=""><figcaption><p><a href="https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&#x26;ssl=1">https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&#x26;ssl=1</a></p></figcaption></figure>
### Azure Resource IDs
### Azure-Ressourcen-IDs
Every resource in Azure has an Azure Resource ID that identifies it.
Jede Ressource in Azure hat eine Azure-Ressourcen-ID, die sie identifiziert.
The format of an Azure Resource ID is as follows:
Das Format einer Azure-Ressourcen-ID ist wie folgt:
- `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}`
For a virtual machine named myVM in a resource group `myResourceGroup` under subscription ID `12345678-1234-1234-1234-123456789012`, the Azure Resource ID looks like this:
Für eine virtuelle Maschine mit dem Namen myVM in einer Ressourcengruppe `myResourceGroup` unter der Abonnement-ID `12345678-1234-1234-1234-123456789012` sieht die Azure-Ressourcen-ID wie folgt aus:
- `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM`
## Azure vs Entra ID vs Azure AD Domain Services
## Azure vs Entra ID vs Azure AD-Domänendienste
### Azure
Azure is Microsofts comprehensive **cloud computing platform, offering a wide range of services**, including virtual machines, databases, artificial intelligence, and storage. It acts as the foundation for hosting and managing applications, building scalable infrastructures, and running modern workloads in the cloud. Azure provides tools for developers and IT professionals to create, deploy, and manage applications and services seamlessly, catering to a variety of needs from startups to large enterprises.
Azure ist Microsofts umfassende **Cloud-Computing-Plattform, die eine Vielzahl von Diensten** anbietet, darunter virtuelle Maschinen, Datenbanken, künstliche Intelligenz und Speicher. Es dient als Grundlage für das Hosting und die Verwaltung von Anwendungen, den Aufbau skalierbarer Infrastrukturen und das Ausführen moderner Workloads in der Cloud. Azure bietet Entwicklern und IT-Profis Werkzeuge, um Anwendungen und Dienste nahtlos zu erstellen, bereitzustellen und zu verwalten, und erfüllt eine Vielzahl von Bedürfnissen von Startups bis hin zu großen Unternehmen.
### Entra ID (formerly Azure Active Directory)
### Entra ID (ehemals Azure Active Directory)
Entra ID is a cloud-based **identity and access management servic**e designed to handle authentication, authorization, and user access control. It powers secure access to Microsoft services such as Office 365, Azure, and many third-party SaaS applications. With features like single sign-on (SSO), multi-factor authentication (MFA), and conditional access policies among others.
Entra ID ist ein cloudbasierter **Identitäts- und Zugriffsverwaltungsdienst**, der für die Handhabung von Authentifizierung, Autorisierung und Benutzerzugriffskontrolle konzipiert ist. Er ermöglicht sicheren Zugriff auf Microsoft-Dienste wie Office 365, Azure und viele Drittanbieter-SaaS-Anwendungen. Mit Funktionen wie Single Sign-On (SSO), Multi-Faktor-Authentifizierung (MFA) und bedingten Zugriffsrichtlinien unter anderem.
### Entra Domain Services (formerly Azure AD DS)
### Entra-Domänendienste (ehemals Azure AD DS)
Entra Domain Services extends the capabilities of Entra ID by offering **managed domain services compatible with traditional Windows Active Directory environments**. It supports legacy protocols such as LDAP, Kerberos, and NTLM, allowing organizations to migrate or run older applications in the cloud without deploying on-premises domain controllers. This service also supports Group Policy for centralized management, making it suitable for scenarios where legacy or AD-based workloads need to coexist with modern cloud environments.
Entra-Domänendienste erweitern die Funktionen von Entra ID, indem sie **verwaltete Domänendienste anbieten, die mit traditionellen Windows Active Directory-Umgebungen kompatibel sind**. Es unterstützt veraltete Protokolle wie LDAP, Kerberos und NTLM, sodass Organisationen ältere Anwendungen in der Cloud migrieren oder ausführen können, ohne lokale Domänencontroller bereitzustellen. Dieser Dienst unterstützt auch Gruppenrichtlinien für eine zentrale Verwaltung, was ihn für Szenarien geeignet macht, in denen veraltete oder AD-basierte Workloads mit modernen Cloud-Umgebungen koexistieren müssen.
## Entra ID Principals
## Entra ID-Prinzipien
### Users
### Benutzer
- **New users**
- Indicate email name and domain from selected tenant
- Indicate Display name
- Indicate password
- Indicate properties (first name, job title, contact info…)
- Default user type is “**member**
- **External users**
- Indicate email to invite and display name (can be a non Microsft email)
- Indicate properties
- Default user type is**Guest**
- **Neue Benutzer**
- E-Mail-Namen und Domäne aus dem ausgewählten Mandanten angeben
- Anzeigename angeben
- Passwort angeben
- Eigenschaften angeben (Vorname, Berufsbezeichnung, Kontaktinformationen…)
- Der Standardbenutzertyp ist „**Mitglied**
- **Externe Benutzer**
- E-Mail angeben, um einzuladen, und Anzeigename (kann eine Nicht-Microsoft-E-Mail sein)
- Eigenschaften angeben
- Der Standardbenutzertyp ist „**Gast**
### Members & Guests Default Permissions
### Standardberechtigungen für Mitglieder & Gäste
You can check them in [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) but among other actions a member will be able to:
Sie können sie in [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) überprüfen, aber unter anderem kann ein Mitglied:
- Read all users, Groups, Applications, Devices, Roles, Subscriptions, and their public properties
- Invite Guests (_can be turned off_)
- Create Security groups
- Read non-hidden Group memberships
- Add guests to Owned groups
- Create new application (_can be turned off_)
- Add up to 50 devices to Azure (_can be turned off_)
- Alle Benutzer, Gruppen, Anwendungen, Geräte, Rollen, Abonnements und deren öffentliche Eigenschaften lesen
- Gäste einladen (_kann deaktiviert werden_)
- Sicherheitsgruppen erstellen
- Nicht versteckte Gruppenmitgliedschaften lesen
- Gäste zu eigenen Gruppen hinzufügen
- Neue Anwendung erstellen (_kann deaktiviert werden_)
- Bis zu 50 Geräte in Azure hinzufügen (_kann deaktiviert werden_)
> [!NOTE]
> Remember that to enumerate Azure resources the user needs an explicit grant of the permission.
> Denken Sie daran, dass der Benutzer eine ausdrückliche Genehmigung für die Berechtigung benötigt, um Azure-Ressourcen aufzulisten.
### Users Default Configurable Permissions
### Standardkonfigurierbare Berechtigungen für Benutzer
- **Members (**[**docs**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)**
- Register Applications: Default **Yes**
- Restrict non-admin users from creating tenants: Default **No**
- Create security groups: Default **Yes**
- Restrict access to Microsoft Entra administration portal: Default **No**
- This doesnt restrict API access to the portal (only web)
- Allow users to connect work or school account with LinkedIn: Default **Yes**
- Show keep user signed in: Default **Yes**
- Restrict users from recovering the BitLocker key(s) for their owned devices: Default No (check in Device Settings)
- Read other users: Default **Yes** (via Microsoft Graph)
- **Guests**
- **Guest user access restrictions**
- **Guest users have the same access as members** grants all member user permissions to guest users by default.
- **Guest users have limited access to properties and memberships of directory objects (default)** restricts guest access to only their own user profile by default. Access to other users and group information is no longer allowed.
- **Guest user access is restricted to properties and memberships of their own directory objects** is the most restrictive one.
- **Guests can invite**
- **Anyone in the organization can invite guest users including guests and non-admins (most inclusive) - Default**
- **Member users and users assigned to specific admin roles can invite guest users including guests with member permissions**
- **Only users assigned to specific admin roles can invite guest users**
- **No one in the organization can invite guest users including admins (most restrictive)**
- **External user leave**: Default **True**
- Allow external users to leave the organization
- **Mitglieder (**[**Dokumente**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)**
- Anwendungen registrieren: Standard **Ja**
- Einschränkung nicht administrativer Benutzer bei der Erstellung von Mandanten: Standard **Nein**
- Sicherheitsgruppen erstellen: Standard **Ja**
- Zugriff auf das Microsoft Entra-Verwaltungsportal einschränken: Standard **Nein**
- Dies schränkt den API-Zugriff auf das Portal nicht ein (nur Web)
- Benutzern erlauben, Arbeits- oder Schulkonten mit LinkedIn zu verknüpfen: Standard **Ja**
- Benutzer angemeldet halten: Standard **Ja**
- Benutzern die Wiederherstellung des BitLocker-Schlüssels für ihre eigenen Geräte verweigern: Standard Nein (Überprüfung in den Geräteeinstellungen)
- Andere Benutzer lesen: Standard **Ja** (über Microsoft Graph)
- **Gäste**
- **Einschränkungen für den Zugriff von Gastbenutzern**
- **Gastbenutzer haben den gleichen Zugriff wie Mitglieder** gewährt allen Mitgliedsbenutzern standardmäßig die Berechtigungen für Gastbenutzer.
- **Gastbenutzer haben eingeschränkten Zugriff auf Eigenschaften und Mitgliedschaften von Verzeichnisobjekten (Standard)** schränkt den Zugriff von Gästen standardmäßig nur auf ihr eigenes Benutzerprofil ein. Der Zugriff auf Informationen anderer Benutzer und Gruppen ist nicht mehr erlaubt.
- **Der Zugriff von Gastbenutzern ist auf Eigenschaften und Mitgliedschaften ihrer eigenen Verzeichnisobjekte beschränkt** ist die restriktivste.
- **Gäste können einladen**
- **Jeder in der Organisation kann Gastbenutzer einladen, einschließlich Gäste und Nicht-Administratoren (am inklusivsten) - Standard**
- **Mitglieder und Benutzer, die bestimmten Administrationsrollen zugewiesen sind, können Gastbenutzer einladen, einschließlich Gäste mit Mitgliedsberechtigungen**
- **Nur Benutzer, die bestimmten Administrationsrollen zugewiesen sind, können Gastbenutzer einladen**
- **Niemand in der Organisation kann Gastbenutzer einladen, einschließlich Administratoren (am restriktivsten)**
- **Externe Benutzer verlassen**: Standard **Wahr**
- Externe Benutzer dürfen die Organisation verlassen
> [!TIP]
> Even if restricted by default, users (members and guests) with granted permissions could perform the previous actions.
> Auch wenn standardmäßig eingeschränkt, könnten Benutzer (Mitglieder und Gäste) mit erteilten Berechtigungen die vorherigen Aktionen ausführen.
### **Groups**
### **Gruppen**
There are **2 types of groups**:
Es gibt **2 Arten von Gruppen**:
- **Security**: This type of group is used to give members access to aplications, resources and assign licenses. Users, devices, service principals and other groups an be members.
- **Microsoft 365**: This type of group is used for collaboration, giving members access to a shared mailbox, calendar, files, SharePoint site, and so on. Group members can only be users.
- This will have an **email address** with the domain of the EntraID tenant.
- **Sicherheit**: Diese Art von Gruppe wird verwendet, um Mitgliedern Zugriff auf Anwendungen, Ressourcen zu gewähren und Lizenzen zuzuweisen. Benutzer, Geräte, Dienstprinzipale und andere Gruppen können Mitglieder sein.
- **Microsoft 365**: Diese Art von Gruppe wird für die Zusammenarbeit verwendet und gewährt Mitgliedern Zugriff auf ein gemeinsames Postfach, Kalender, Dateien, SharePoint-Website usw. Gruppenmitglieder können nur Benutzer sein.
- Dies wird eine **E-Mail-Adresse** mit der Domäne des EntraID-Mandanten haben.
There are **2 types of memberships**:
Es gibt **2 Arten von Mitgliedschaften**:
- **Assigned**: Allow to manually add specific members to a group.
- **Dynamic membership**: Automatically manages membership using rules, updating group inclusion when members attributes change.
- **Zugewiesen**: Ermöglicht das manuelle Hinzufügen spezifischer Mitglieder zu einer Gruppe.
- **Dynamische Mitgliedschaft**: Verwaltet die Mitgliedschaft automatisch mithilfe von Regeln und aktualisiert die Gruppenaufnahme, wenn sich die Attribute der Mitglieder ändern.
### **Service Principals**
### **Dienstprinzipale**
A **Service Principal** is an **identity** created for **use** with **applications**, hosted services, and automated tools to access Azure resources. This access is **restricted by the roles assigned** to the service principal, giving you control over **which resources can be accessed** and at which level. For security reasons, it's always recommended to **use service principals with automated tools** rather than allowing them to log in with a user identity.
Ein **Dienstprinzipal** ist eine **Identität**, die für die **Nutzung** mit **Anwendungen**, gehosteten Diensten und automatisierten Tools zur Zugriff auf Azure-Ressourcen erstellt wurde. Dieser Zugriff ist **durch die zugewiesenen Rollen** für den Dienstprinzipal eingeschränkt, was Ihnen die Kontrolle darüber gibt, **auf welche Ressourcen zugegriffen werden kann** und auf welcher Ebene. Aus Sicherheitsgründen wird immer empfohlen, **Dienstprinzipale mit automatisierten Tools zu verwenden**, anstatt ihnen zu erlauben, sich mit einer Benutzeridentität anzumelden.
It's possible to **directly login as a service principal** by generating it a **secret** (password), a **certificate**, or granting **federated** access to third party platforms (e.g. Github Actions) over it.
Es ist möglich, sich **direkt als Dienstprinzipal anzumelden**, indem man ihm ein **Geheimnis** (Passwort), ein **Zertifikat** oder **föderierten** Zugriff auf Drittanbieterplattformen (z. B. Github Actions) gewährt.
- If you choose **password** auth (by default), **save the password generated** as you won't be able to access it again.
- If you choose certificate authentication, make sure the **application will have access over the private key**.
- Wenn Sie die **Passwort**-Authentifizierung (standardmäßig) wählen, **speichern Sie das generierte Passwort**, da Sie nicht mehr darauf zugreifen können.
- Wenn Sie die Zertifikatsauthentifizierung wählen, stellen Sie sicher, dass die **Anwendung Zugriff auf den privaten Schlüssel hat**.
### App Registrations
### App-Registrierungen
An **App Registration** is a configuration that allows an application to integrate with Entra ID and to perform actions.
Eine **App-Registrierung** ist eine Konfiguration, die es einer Anwendung ermöglicht, sich mit Entra ID zu integrieren und Aktionen auszuführen.
#### Key Components:
#### Schlüsselkomponenten:
1. **Application ID (Client ID):** A unique identifier for your app in Azure AD.
2. **Redirect URIs:** URLs where Azure AD sends authentication responses.
3. **Certificates, Secrets & Federated Credentials:** It's possible to generate a secret or a certificate to login as the service principal of the application, or to grant federated access to it (e.g. Github Actions).&#x20;
1. If a **certificate** or **secret** is generated, it's possible to a person to **login as the service principal** with CLI tools by knowing the **application ID**, the **secret** or **certificate** and the **tenant** (domain or ID).
4. **API Permissions:** Specifies what resources or APIs the app can access.
5. **Authentication Settings:** Defines the app's supported authentication flows (e.g., OAuth2, OpenID Connect).
6. **Service Principal**: A service principal is created when an App is created (if it's done from the web console) or when it's installed in a new tenant.
1. The **service principal** will get all the requested permissions it was configured with.
1. **Anwendungs-ID (Client-ID):** Eine eindeutige Kennung für Ihre App in Azure AD.
2. **Umleitungs-URIs:** URLs, an die Azure AD Authentifizierungsantworten sendet.
3. **Zertifikate, Geheimnisse & Föderierte Anmeldeinformationen:** Es ist möglich, ein Geheimnis oder ein Zertifikat zu generieren, um sich als Dienstprinzipal der Anwendung anzumelden oder um ihr föderierten Zugriff zu gewähren (z. B. Github Actions).&#x20;
1. Wenn ein **Zertifikat** oder **Geheimnis** generiert wird, ist es einer Person möglich, sich **als Dienstprinzipal** mit CLI-Tools anzumelden, indem sie die **Anwendungs-ID**, das **Geheimnis** oder **Zertifikat** und den **Mandanten** (Domäne oder ID) kennt.
4. **API-Berechtigungen:** Gibt an, auf welche Ressourcen oder APIs die App zugreifen kann.
5. **Authentifizierungseinstellungen:** Definiert die unterstützten Authentifizierungsflüsse der App (z. B. OAuth2, OpenID Connect).
6. **Dienstprinzipal**: Ein Dienstprinzipal wird erstellt, wenn eine App erstellt wird (wenn dies über die Webkonsole erfolgt) oder wenn sie in einem neuen Mandanten installiert wird.
1. Der **Dienstprinzipal** erhält alle angeforderten Berechtigungen, mit denen er konfiguriert wurde.
### Default Consent Permissions
### Standardzustimmungsberechtigungen
**User consent for applications**
**Benutzerzustimmung für Anwendungen**
- **Do not allow user consent**
- An administrator will be required for all apps.
- **Allow user consent for apps from verified publishers, for selected permissions (Recommended)**
- All users can consent for permissions classified as "low impact", for apps from verified publishers or apps registered in this organization.
- **Default** low impact permissions (although you need to accept to add them as low):
- User.Read - sign in and read user profile
- offline_access - maintain access to data that users have given it access to
- openid - sign users in
- profile - view user's basic profile
- email - view user's email address
- **Allow user consent for apps (Default)**
- All users can consent for any app to access the organization's data.
- **Benutzerzustimmung nicht zulassen**
- Ein Administrator wird für alle Apps erforderlich sein.
- **Benutzerzustimmung für Apps von verifizierten Herausgebern für ausgewählte Berechtigungen zulassen (Empfohlen)**
- Alle Benutzer können für Berechtigungen zustimmen, die als "geringfügig" eingestuft sind, für Apps von verifizierten Herausgebern oder Apps, die in dieser Organisation registriert sind.
- **Standard** geringfügige Berechtigungen (obwohl Sie zustimmen müssen, um sie als geringfügig hinzuzufügen):
- User.Read - anmelden und Benutzerprofil lesen
- offline_access - Zugriff auf Daten aufrechterhalten, auf die Benutzer Zugriff gewährt haben
- openid - Benutzer anmelden
- profile - grundlegendes Benutzerprofil anzeigen
- email - E-Mail-Adresse des Benutzers anzeigen
- **Benutzerzustimmung für Apps zulassen (Standard)**
- Alle Benutzer können für jede App zustimmen, um auf die Daten der Organisation zuzugreifen.
**Admin consent requests**: Default **No**
**Anfragen zur Zustimmung des Administrators**: Standard **Nein**
- Users can request admin consent to apps they are unable to consent to
- If **Yes**: Its possible to indicate Users, Groups and Roles that can consent requests
- Configure also if users will receive email notifications and expiration reminders&#x20;
- Benutzer können die Zustimmung des Administrators für Apps anfordern, für die sie nicht zustimmen können
- Wenn **Ja**: Es ist möglich, Benutzer, Gruppen und Rollen anzugeben, die Anfragen zustimmen können
- Konfigurieren Sie auch, ob Benutzer E-Mail-Benachrichtigungen und Ablaufbenachrichtigungen erhalten&#x20;
### **Managed Identity (Metadata)**
### **Verwaltete Identität (Metadaten)**
Managed identities in Azure Active Directory offer a solution for **automatically managing the identity** of applications. These identities are used by applications for the purpose of **connecting** to **resources** compatible with Azure Active Directory (**Azure AD**) authentication. This allows to **remove the need of hardcoding cloud credentials** in the code as the application will be able to contact the **metadata** service to get a valid token to **perform actions** as the indicated managed identity in Azure.
Verwaltete Identitäten in Azure Active Directory bieten eine Lösung zur **automatischen Verwaltung der Identität** von Anwendungen. Diese Identitäten werden von Anwendungen verwendet, um sich mit **Ressourcen** zu verbinden, die mit der Azure Active Directory (**Azure AD**) Authentifizierung kompatibel sind. Dies ermöglicht es, die **Notwendigkeit der Hardcodierung von Cloud-Anmeldeinformationen** im Code zu entfernen, da die Anwendung in der Lage ist, den **Metadaten**-Dienst zu kontaktieren, um ein gültiges Token zu erhalten, um **Aktionen** als die angegebene verwaltete Identität in Azure auszuführen.
There are two types of managed identities:
Es gibt zwei Arten von verwalteten Identitäten:
- **System-assigned**. Some Azure services allow you to **enable a managed identity directly on a service instance**. When you enable a system-assigned managed identity, a **service principal** is created in the Entra ID tenant trusted by the subscription where the resource is located. When the **resource** is **deleted**, Azure automatically **deletes** the **identity** for you.
- **User-assigned**. It's also possible for users to generate managed identities. These are created inside a resource group inside a subscription and a service principal will be created in the EntraID trusted by the subscription. Then, you can assign the managed identity to one or **more instances** of an Azure service (multiple resources). For user-assigned managed identities, the **identity is managed separately from the resources that use it**.
- **Systemzugewiesen**. Einige Azure-Dienste ermöglichen es Ihnen, eine verwaltete Identität direkt auf einer Dienstinstanz **zu aktivieren**. Wenn Sie eine systemzugewiesene verwaltete Identität aktivieren, wird ein **Dienstprinzipal** im Entra ID-Mandanten erstellt, dem das Abonnement, in dem sich die Ressource befindet, vertraut. Wenn die **Ressource** **gelöscht** wird, löscht Azure automatisch die **Identität** für Sie.
- **Benutzerzugewiesen**. Es ist auch möglich, dass Benutzer verwaltete Identitäten generieren. Diese werden innerhalb einer Ressourcengruppe innerhalb eines Abonnements erstellt, und ein Dienstprinzipal wird im EntraID erstellt, dem das Abonnement vertraut. Dann können Sie die verwaltete Identität einer oder **mehreren Instanzen** eines Azure-Dienstes (mehrere Ressourcen) zuweisen. Bei benutzerzugewiesenen verwalteten Identitäten wird die **Identität separat von den Ressourcen verwaltet, die sie verwenden**.
Managed Identities **don't generate eternal credentials** (like passwords or certificates) to access as the service principal attached to it.
Verwaltete Identitäten **erzeugen keine ewigen Anmeldeinformationen** (wie Passwörter oder Zertifikate), um auf den daran angehängten Dienstprinzipal zuzugreifen.
### Enterprise Applications
### Unternehmensanwendungen
Its just a **table in Azure to filter service principals** and check the applications that have been assigned to.
Es ist einfach eine **Tabelle in Azure, um Dienstprinzipale zu filtern** und die Anwendungen zu überprüfen, die zugewiesen wurden.
**It isnt another type of “application”,** there isnt any object in Azure that is an “Enterprise Application”, its just an abstraction to check the Service principals, App registrations and managed identities.
**Es ist kein anderer Typ von „Anwendung“,** es gibt kein Objekt in Azure, das eine „Unternehmensanwendung“ ist, es ist nur eine Abstraktion, um die Dienstprinzipale, App-Registrierungen und verwalteten Identitäten zu überprüfen.
### Administrative Units
### Verwaltungseinheiten
Administrative units allows to **give permissions from a role over a specific portion of an organization**.
Verwaltungseinheiten ermöglichen es, **Berechtigungen aus einer Rolle über einen bestimmten Teil einer Organisation zu gewähren**.
Example:
Beispiel:
- Scenario: A company wants regional IT admins to manage only the users in their own region.
- Implementation:
- Create Administrative Units for each region (e.g., "North America AU", "Europe AU").
- Populate AUs with users from their respective regions.
- AUs can **contain users, groups, or devices**
- AUs support **dynamic memberships**
- AUs **cannot contain AUs**
- Assign Admin Roles:
- Grant the "User Administrator" role to regional IT staff, scoped to their region's AU.
- Outcome: Regional IT admins can manage user accounts within their region without affecting other regions.
- Szenario: Ein Unternehmen möchte, dass regionale IT-Administratoren nur die Benutzer in ihrer eigenen Region verwalten.
- Implementierung:
- Erstellen Sie Verwaltungseinheiten für jede Region (z. B. "Nordamerika AU", "Europa AU").
- Füllen Sie AUs mit Benutzern aus ihren jeweiligen Regionen.
- AUs können **Benutzer, Gruppen oder Geräte enthalten**
- AUs unterstützen **dynamische Mitgliedschaften**
- AUs **können keine AUs enthalten**
- Administratorrollen zuweisen:
- Gewähren Sie dem regionalen IT-Personal die Rolle "Benutzeradministrator", die auf die AU ihrer Region beschränkt ist.
- Ergebnis: Regionale IT-Administratoren können Benutzerkonten innerhalb ihrer Region verwalten, ohne andere Regionen zu beeinträchtigen.
### Entra ID Roles
### Entra ID-Rollen
- In order to manage Entra ID there are some **built-in roles** that can be assigned to Entra ID principals to manage Entra ID
- Check the roles in [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)
- The most privileged role is **Global Administrator**
- In the Description of the role its possible to see its **granular permissions**
- Um Entra ID zu verwalten, gibt es einige **integrierte Rollen**, die Entra ID-Prinzipalen zugewiesen werden können, um Entra ID zu verwalten.
- Überprüfen Sie die Rollen in [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)
- Die privilegierteste Rolle ist **Global Administrator**
- In der Beschreibung der Rolle sind ihre **detaillierten Berechtigungen** zu sehen.
## Roles & Permissions
## Rollen & Berechtigungen
**Roles** are **assigned** to **principals** on a **scope**: `principal -[HAS ROLE]->(scope)`
**Rollen** werden **Prinzipalen** auf einem **Bereich** zugewiesen: `principal -[HAS ROLE]->(scope)`
**Roles** assigned to **groups** are **inherited** by all the **members** of the group.
**Rollen**, die Gruppen zugewiesen sind, werden von allen **Mitgliedern** der Gruppe **vererbt**.
Depending on the scope the role was assigned to, the **role** cold be **inherited** to **other resources** inside the scope container. For example, if a user A has a **role on the subscription**, he will have that **role on all the resource groups** inside the subscription and on **all the resources** inside the resource group.
Je nach dem Bereich, dem die Rolle zugewiesen wurde, kann die **Rolle** auf **andere Ressourcen** innerhalb des Bereichscontainers **vererbt** werden. Zum Beispiel, wenn ein Benutzer A eine **Rolle im Abonnement** hat, hat er diese **Rolle in allen Ressourcengruppen** innerhalb des Abonnements und auf **allen Ressourcen** innerhalb der Ressourcengruppe.
### **Classic Roles**
### **Klassische Rollen**
| **Owner** | <ul><li>Full access to all resources</li><li>Can manage access for other users</li></ul> | All resource types |
| **Besitzer** | <ul><li>Vollzugriff auf alle Ressourcen</li><li>Kann den Zugriff für andere Benutzer verwalten</li></ul> | Alle Ressourcentypen |
| ----------------------------- | ---------------------------------------------------------------------------------------- | ------------------ |
| **Contributor** | <ul><li>Full access to all resources</li><li>Cannot manage access</li></ul> | All resource types |
| **Reader** | • View all resources | All resource types |
| **User Access Administrator** | <ul><li>View all resources</li><li>Can manage access for other users</li></ul> | All resource types |
| **Mitwirkender** | <ul><li>Vollzugriff auf alle Ressourcen</li><li>Kann den Zugriff nicht verwalten</li></ul> | Alle Ressourcentypen |
| **Leser** | • Alle Ressourcen anzeigen | Alle Ressourcentypen |
| **Benutzerzugriffsadministrator** | <ul><li>Alle Ressourcen anzeigen</li><li>Kann den Zugriff für andere Benutzer verwalten</li></ul> | Alle Ressourcentypen |
### Built-In roles
### Eingebaute Rollen
[From the docs: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure role-based access control (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) has several Azure **built-in roles** that you can **assign** to **users, groups, service principals, and managed identities**. Role assignments are the way you control **access to Azure resources**. If the built-in roles don't meet the specific needs of your organization, you can create your own [**Azure custom roles**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**.**
[Aus den Dokumenten: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure-Rollenbasierte Zugriffskontrolle (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) hat mehrere Azure **eingebaute Rollen**, die Sie **Benutzern, Gruppen, Dienstprinzipalen und verwalteten Identitäten** zuweisen können. Rollenzuweisungen sind der Weg, wie Sie **Zugriff auf Azure-Ressourcen** steuern. Wenn die integrierten Rollen nicht den spezifischen Bedürfnissen Ihrer Organisation entsprechen, können Sie Ihre eigenen [**Azure benutzerdefinierten Rollen**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)** erstellen.**
**Built-In** roles apply only to the **resources** they are **meant** to, for example check this 2 examples of **Built-In roles over Compute** resources:
**Eingebaute** Rollen gelten nur für die **Ressourcen**, für die sie **bestimmt** sind, zum Beispiel überprüfen Sie diese 2 Beispiele für **eingebaute Rollen über Compute**-Ressourcen:
| [Disk Backup Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Provides permission to backup vault to perform disk backup. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 |
| [Disk Backup Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Berechtigt zur Sicherung des Speichervaults, um eine Datensicherung durchzuführen. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ |
| [Virtual Machine User Login](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | View Virtual Machines in the portal and login as a regular user. | fb879df8-f326-4884-b1cf-06f3ad86be52 |
| [Virtual Machine User Login](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Virtuelle Maschinen im Portal anzeigen und sich als regulärer Benutzer anmelden. | fb879df8-f326-4884-b1cf-06f3ad86be52 |
This roles can **also be assigned over logic containers** (such as management groups, subscriptions and resource groups) and the principals affected will have them **over the resources inside those containers**.
Diese Rollen können **auch über logische Container** (wie Verwaltungsgruppen, Abonnements und Ressourcengruppen) zugewiesen werden, und die betroffenen Prinzipale haben sie **über die Ressourcen innerhalb dieser Container**.
- Find here a list with [**all the Azure built-in roles**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles).
- Find here a list with [**all the Entra ID built-in roles**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference).
- Finden Sie hier eine Liste mit [**allen Azure eingebauten Rollen**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles).
- Finden Sie hier eine Liste mit [**allen Entra ID eingebauten Rollen**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference).
### Custom Roles
### Benutzerdefinierte Rollen
- Its also possible to create [**custom roles**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)
- They are created inside a scope, although a role can be in several scopes (management groups, subscription and resource groups)
- Its possible to configure all the granular permissions the custom role will have
- Its possible to exclude permissions
- A principal with a excluded permission wont be able to use it even if the permissions is being granted elsewhere
- Its possible to use wildcards
- The used format is a JSON
- `actions` are for control actions over the resource
- `dataActions` are permissions over the data within the object
Example of permissions JSON for a custom role:
- Es ist auch möglich, [**benutzerdefinierte Rollen**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles) zu erstellen.
- Sie werden innerhalb eines Bereichs erstellt, obwohl eine Rolle in mehreren Bereichen (Verwaltungsgruppen, Abonnements und Ressourcengruppen) sein kann.
- Es ist möglich, alle detaillierten Berechtigungen zu konfigurieren, die die benutzerdefinierte Rolle haben wird.
- Es ist möglich, Berechtigungen auszuschließen.
- Ein Prinzipal mit einer ausgeschlossenen Berechtigung kann sie nicht verwenden, auch wenn die Berechtigung anderswo gewährt wird.
- Es ist möglich, Platzhalter zu verwenden.
- Das verwendete Format ist JSON.
- `actions` sind für Kontrollaktionen über die Ressource.
- `dataActions` sind Berechtigungen über die Daten innerhalb des Objekts.
Beispiel für JSON-Berechtigungen für eine benutzerdefinierte Rolle:
```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": []
}
]
}
"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": []
}
]
}
}
```
### Berechtigungsreihenfolge
### Permissions order
- In order for a **principal to have some access over a resource** he needs an explicit role being granted to him (anyhow) **granting him that permission**.
- An explicit **deny role assignment takes precedence** over the role granting the permission.
- Damit ein **Principal Zugriff auf eine Ressource hat**, muss ihm eine explizite Rolle zugewiesen werden (in welcher Form auch immer), **die ihm diese Berechtigung gewährt**.
- Eine explizite **Ablehnungsrollenzuweisung hat Vorrang** vor der Rolle, die die Berechtigung gewährt.
<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
### Globaler Administrator
Global Administrator is a role from Entra ID that grants **complete control over the Entra ID tenant**. However, it doesn't grant any permissions over Azure resources by default.
Der globale Administrator ist eine Rolle aus Entra ID, die **vollständige Kontrolle über den Entra ID-Mandanten gewährt**. Standardmäßig gewährt sie jedoch keine Berechtigungen für Azure-Ressourcen.
Users with the Global Administrator role has the ability to '**elevate' to User Access Administrator Azure role in the Root Management Group**. So Global Administrators can manage access in **all Azure subscriptions and management groups.**\
This elevation can be done at the end of the page: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
Benutzer mit der Rolle des globalen Administrators haben die Möglichkeit, sich **zum Benutzerzugriffsadministrator Azure-Rolle in der Root-Management-Gruppe zu "erheben"**. Global Administratoren können den Zugriff in **allen Azure-Abonnements und Managementgruppen verwalten.**\
Diese Erhöhung kann am Ende der Seite durchgeführt werden: [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>
### Azure Policies
### Azure-Richtlinien
**Azure Policies** are rules that help organizations ensure their resources meet specific standards and compliance requirements. They allow you to **enforce or audit settings on resources in Azure**. For example, you can prevent the creation of virtual machines in an unauthorized region or ensure that all resources have specific tags for tracking.
**Azure-Richtlinien** sind Regeln, die Organisationen helfen, sicherzustellen, dass ihre Ressourcen bestimmten Standards und Compliance-Anforderungen entsprechen. Sie ermöglichen es Ihnen, **Einstellungen für Ressourcen in Azure durchzusetzen oder zu überprüfen**. Zum Beispiel können Sie die Erstellung von virtuellen Maschinen in einer nicht autorisierten Region verhindern oder sicherstellen, dass alle Ressourcen bestimmte Tags zur Nachverfolgung haben.
Azure Policies are **proactive**: they can stop non-compliant resources from being created or changed. They are also **reactive**, allowing you to find and fix existing non-compliant resources.
Azure-Richtlinien sind **proaktiv**: Sie können die Erstellung oder Änderung von nicht konformen Ressourcen stoppen. Sie sind auch **reaktiv** und ermöglichen es Ihnen, bestehende nicht konforme Ressourcen zu finden und zu beheben.
#### **Key Concepts**
#### **Schlüsselkonzepte**
1. **Policy Definition**: A rule, written in JSON, that specifies what is allowed or required.
2. **Policy Assignment**: The application of a policy to a specific scope (e.g., subscription, resource group).
3. **Initiatives**: A collection of policies grouped together for broader enforcement.
4. **Effect**: Specifies what happens when the policy is triggered (e.g., "Deny," "Audit," or "Append").
1. **Richtliniendefinition**: Eine Regel, die in JSON geschrieben ist und angibt, was erlaubt oder erforderlich ist.
2. **Richtlinienzuweisung**: Die Anwendung einer Richtlinie auf einen bestimmten Geltungsbereich (z. B. Abonnement, Ressourcengruppe).
3. **Initiativen**: Eine Sammlung von Richtlinien, die zusammengefasst sind, um eine breitere Durchsetzung zu ermöglichen.
4. **Wirkung**: Gibt an, was passiert, wenn die Richtlinie ausgelöst wird (z. B. "Ablehnen", "Überprüfen" oder "Anhängen").
**Some examples:**
**Einige Beispiele:**
1. **Ensuring Compliance with Specific Azure Regions**: This policy ensures that all resources are deployed in specific Azure regions. For example, a company might want to ensure all its data is stored in Europe for GDPR compliance.
2. **Enforcing Naming Standards**: Policies can enforce naming conventions for Azure resources. This helps in organizing and easily identifying resources based on their names, which is helpful in large environments.
3. **Restricting Certain Resource Types**: This policy can restrict the creation of certain types of resources. For example, a policy could be set to prevent the creation of expensive resource types, like certain VM sizes, to control costs.
4. **Enforcing Tagging Policies**: Tags are key-value pairs associated with Azure resources used for resource management. Policies can enforce that certain tags must be present, or have specific values, for all resources. This is useful for cost tracking, ownership, or categorization of resources.
5. **Limiting Public Access to Resources**: Policies can enforce that certain resources, like storage accounts or databases, do not have public endpoints, ensuring that they are only accessible within the organization's network.
6. **Automatically Applying Security Settings**: Policies can be used to automatically apply security settings to resources, such as applying a specific network security group to all VMs or ensuring that all storage accounts use encryption.
1. **Sicherstellen der Einhaltung bestimmter Azure-Regionen**: Diese Richtlinie stellt sicher, dass alle Ressourcen in bestimmten Azure-Regionen bereitgestellt werden. Zum Beispiel möchte ein Unternehmen sicherstellen, dass alle seine Daten in Europa für die Einhaltung der DSGVO gespeichert werden.
2. **Durchsetzung von Namensstandards**: Richtlinien können Namenskonventionen für Azure-Ressourcen durchsetzen. Dies hilft bei der Organisation und der einfachen Identifizierung von Ressourcen anhand ihrer Namen, was in großen Umgebungen hilfreich ist.
3. **Einschränkung bestimmter Ressourcentypen**: Diese Richtlinie kann die Erstellung bestimmter Ressourcentypen einschränken. Zum Beispiel könnte eine Richtlinie festgelegt werden, um die Erstellung teurer Ressourcentypen, wie bestimmter VM-Größen, zur Kostenkontrolle zu verhindern.
4. **Durchsetzung von Tagging-Richtlinien**: Tags sind Schlüssel-Wert-Paare, die mit Azure-Ressourcen verknüpft sind und für das Ressourcenmanagement verwendet werden. Richtlinien können durchsetzen, dass bestimmte Tags vorhanden sein müssen oder spezifische Werte haben müssen, für alle Ressourcen. Dies ist nützlich für die Kostenverfolgung, den Besitz oder die Kategorisierung von Ressourcen.
5. **Einschränkung des öffentlichen Zugriffs auf Ressourcen**: Richtlinien können durchsetzen, dass bestimmte Ressourcen, wie Speicherkonten oder Datenbanken, keine öffentlichen Endpunkte haben, um sicherzustellen, dass sie nur innerhalb des Netzwerks der Organisation zugänglich sind.
6. **Automatisches Anwenden von Sicherheitseinstellungen**: Richtlinien können verwendet werden, um automatisch Sicherheitseinstellungen auf Ressourcen anzuwenden, wie das Anwenden einer bestimmten Netzwerksicherheitsgruppe auf alle VMs oder das Sicherstellen, dass alle Speicherkonten Verschlüsselung verwenden.
Note that Azure Policies can be attached to any level of the Azure hierarchy, but they are **commonly used in the root management group** or in other management groups.
Azure policy json example:
Beachten Sie, dass Azure-Richtlinien an jedem Level der Azure-Hierarchie angehängt werden können, aber sie werden **häufig in der Root-Management-Gruppe** oder in anderen Managementgruppen verwendet.
Azure-Richtlinien JSON-Beispiel:
```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"
"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"
}
```
### Berechtigungsübertragung
### Permissions Inheritance
In Azure **können Berechtigungen auf jeden Teil der Hierarchie zugewiesen werden**. Dazu gehören Verwaltungseinheiten, Abonnements, Ressourcengruppen und einzelne Ressourcen. Berechtigungen werden von enthaltenen **Ressourcen** der Entität, wo sie zugewiesen wurden, **vererbt**.
In Azure **permissions are can be assigned to any part of the hierarchy**. That includes management groups, subscriptions, resource groups, and individual resources. Permissions are **inherited** by contained **resources** of the entity where they were assigned.
This hierarchical structure allows for efficient and scalable management of access permissions.
Diese hierarchische Struktur ermöglicht eine effiziente und skalierbare Verwaltung von Zugriffsberechtigungen.
<figure><img src="../../../images/image (26).png" alt=""><figcaption></figcaption></figure>
### Azure RBAC vs ABAC
**RBAC** (role-based access control) is what we have seen already in the previous sections: **Assigning a role to a principal to grant him access** over a resource.\
However, in some cases you might want to provide **more fined-grained access management** or **simplify** the management of **hundreds** of role **assignments**.
**RBAC** (rollenbasierte Zugriffskontrolle) ist das, was wir bereits in den vorherigen Abschnitten gesehen haben: **Zuweisen einer Rolle an ein Subjekt, um ihm Zugriff** auf eine Ressource zu gewähren.\
In einigen Fällen möchten Sie jedoch möglicherweise **feinere Zugriffsverwaltung** bereitstellen oder die Verwaltung von **Hunderte** von Rollen **zuweisungen** **vereinfachen**.
Azure **ABAC** (attribute-based access control) builds on Azure RBAC by adding **role assignment conditions based on attributes** in the context of specific actions. A _role assignment condition_ is an **additional check that you can optionally add to your role assignment** to provide more fine-grained access control. A condition filters down permissions granted as a part of the role definition and role assignment. For example, you can **add a condition that requires an object to have a specific tag to read the object**.\
You **cannot** explicitly **deny** **access** to specific resources **using conditions**.
Azure **ABAC** (attributbasierte Zugriffskontrolle) baut auf Azure RBAC auf, indem es **Rollen zuweisungsbedingungen basierend auf Attributen** im Kontext spezifischer Aktionen hinzufügt. Eine _Rollen zuweisungsbedingung_ ist eine **zusätzliche Überprüfung, die Sie optional zu Ihrer Rollen zuweisung hinzufügen können**, um eine feinere Zugriffskontrolle zu bieten. Eine Bedingung filtert die Berechtigungen, die als Teil der Rollendefinition und der Rollen zuweisung gewährt werden. Zum Beispiel können Sie **eine Bedingung hinzufügen, die erfordert, dass ein Objekt ein bestimmtes Tag hat, um das Objekt zu lesen**.\
Sie **können** den **Zugriff** auf spezifische Ressourcen **nicht** ausdrücklich **verweigern** **mit Bedingungen**.
## References
## Referenzen
- [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)
@@ -379,7 +375,3 @@ You **cannot** explicitly **deny** **access** to specific resources **using cond
- [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}}

View File

@@ -2,100 +2,99 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Grundlegende Informationen
Entra ID is Microsoft's cloud-based identity and access management (IAM) platform, serving as the foundational authentication and authorization system for services like Microsoft 365 and Azure Resource Manager. Azure AD implements the OAuth 2.0 authorization framework and the OpenID Connect (OIDC) authentication protocol to manage access to resources.
Entra ID ist die cloudbasierte Identitäts- und Zugriffsmanagementplattform (IAM) von Microsoft und dient als grundlegendes Authentifizierungs- und Autorisierungssystem für Dienste wie Microsoft 365 und Azure Resource Manager. Azure AD implementiert das OAuth 2.0-Autorisierungsframework und das OpenID Connect (OIDC)-Authentifizierungsprotokoll zur Verwaltung des Zugriffs auf Ressourcen.
### OAuth
**Key Participants in OAuth 2.0:**
**Wichtige Teilnehmer in OAuth 2.0:**
1. **Resource Server (RS):** Protects resources owned by the resource owner.
2. **Resource Owner (RO):** Typically an end-user who owns the protected resources.
3. **Client Application (CA):** An application seeking access to resources on behalf of the resource owner.
4. **Authorization Server (AS):** Issues access tokens to client applications after authenticating and authorizing them.
1. **Ressourcenserver (RS):** Schützt Ressourcen, die dem Ressourcenbesitzer gehören.
2. **Ressourcenbesitzer (RO):** Typischerweise ein Endbenutzer, der die geschützten Ressourcen besitzt.
3. **Client-Anwendung (CA):** Eine Anwendung, die im Namen des Ressourcenbesitzers Zugriff auf Ressourcen anfordert.
4. **Autorisierungsserver (AS):** Gibt Zugriffstoken an Client-Anwendungen aus, nachdem diese authentifiziert und autorisiert wurden.
**Scopes and Consent:**
**Scopes und Zustimmung:**
- **Scopes:** Granular permissions defined on the resource server that specify access levels.
- **Consent:** The process by which a resource owner grants a client application permission to access resources with specific scopes.
- **Scopes:** Granulare Berechtigungen, die auf dem Ressourcenserver definiert sind und Zugriffslevel spezifizieren.
- **Zustimmung:** Der Prozess, durch den ein Ressourcenbesitzer einer Client-Anwendung die Erlaubnis erteilt, auf Ressourcen mit bestimmten Scopes zuzugreifen.
**Microsoft 365 Integration:**
**Integration von Microsoft 365:**
- Microsoft 365 utilizes Azure AD for IAM and is composed of multiple "first-party" OAuth applications.
- These applications are deeply integrated and often have interdependent service relationships.
- To simplify user experience and maintain functionality, Microsoft grants "implied consent" or "pre-consent" to these first-party applications.
- **Implied Consent:** Certain applications are automatically **granted access to specific scopes without explicit user or administrator approva**l.
- These pre-consented scopes are typically hidden from both users and administrators, making them less visible in standard management interfaces.
- Microsoft 365 nutzt Azure AD für IAM und besteht aus mehreren "First-Party"-OAuth-Anwendungen.
- Diese Anwendungen sind tief integriert und haben oft voneinander abhängige Dienstbeziehungen.
- Um die Benutzererfahrung zu vereinfachen und die Funktionalität aufrechtzuerhalten, gewährt Microsoft diesen First-Party-Anwendungen "implizite Zustimmung" oder "Vorab-Zustimmung".
- **Implizite Zustimmung:** Bestimmte Anwendungen erhalten automatisch **Zugriff auf spezifische Scopes ohne ausdrückliche Genehmigung des Benutzers oder Administrators**.
- Diese vorab genehmigten Scopes sind typischerweise sowohl für Benutzer als auch für Administratoren verborgen, was sie in den Standardverwaltungsoberflächen weniger sichtbar macht.
**Client Application Types:**
**Typen von Client-Anwendungen:**
1. **Confidential Clients:**
- Possess their own credentials (e.g., passwords or certificates).
- Can **securely authenticate themselves** to the authorization server.
2. **Public Clients:**
- Do not have unique credentials.
- Cannot securely authenticate to the authorization server.
- **Security Implication:** An attacker can impersonate a public client application when requesting tokens, as there is no mechanism for the authorization server to verify the legitimacy of the application.
1. **Vertrauliche Clients:**
- Besitzen eigene Anmeldeinformationen (z. B. Passwörter oder Zertifikate).
- Können sich **sicher beim Autorisierungsserver authentifizieren**.
2. **Öffentliche Clients:**
- Haben keine einzigartigen Anmeldeinformationen.
- Können sich nicht sicher beim Autorisierungsserver authentifizieren.
- **Sicherheitsimplikation:** Ein Angreifer kann eine öffentliche Client-Anwendung nachahmen, wenn er Tokens anfordert, da es keinen Mechanismus gibt, mit dem der Autorisierungsserver die Legitimität der Anwendung überprüfen kann.
## Authentication Tokens
## Authentifizierungstoken
There are **three types of tokens** used in OIDC:
Es gibt **drei Arten von Tokens**, die in OIDC verwendet werden:
- [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** The client presents this token to the resource server to **access resources**. It can be used only for a specific combination of user, client, and resource and **cannot be revoked** until expiry - that is 1 hour by default.
- **ID Tokens**: The client receives this **token from the authorization server**. It contains basic information about the user. It is **bound to a specific combination of user and client**.
- **Refresh Tokens**: Provided to the client with access token. Used to **get new access and ID tokens**. It is bound to a specific combination of user and client and can be revoked. Default expiry is **90 days** for inactive refresh tokens and **no expiry for active tokens** (be from a refresh token is possible to get new refresh tokens).
- A refresh token should be tied to an **`aud`** , to some **scopes**, and to a **tenant** and it should only be able to generate access tokens for that aud, scopes (and no more) and tenant. However, this is not the case with **FOCI applications tokens**.
- A refresh token is encrypted and only Microsoft can decrypt it.
- Getting a new refresh token doesn't revoke the previous refresh token.
- [**Zugriffstoken**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Der Client präsentiert dieses Token dem Ressourcenserver, um **auf Ressourcen zuzugreifen**. Es kann nur für eine spezifische Kombination aus Benutzer, Client und Ressource verwendet werden und **kann nicht widerrufen** werden, bis es abläuft - das ist standardmäßig 1 Stunde.
- **ID-Tokens**: Der Client erhält dieses **Token vom Autorisierungsserver**. Es enthält grundlegende Informationen über den Benutzer. Es ist **an eine spezifische Kombination aus Benutzer und Client gebunden**.
- **Aktualisierungstoken**: Werden dem Client mit dem Zugriffstoken bereitgestellt. Wird verwendet, um **neue Zugriffs- und ID-Tokens zu erhalten**. Es ist an eine spezifische Kombination aus Benutzer und Client gebunden und kann widerrufen werden. Die Standardablaufzeit beträgt **90 Tage** für inaktive Aktualisierungstoken und **keine Ablaufzeit für aktive Tokens** (es ist möglich, aus einem Aktualisierungstoken neue Aktualisierungstoken zu erhalten).
- Ein Aktualisierungstoken sollte an ein **`aud`**, an einige **Scopes** und an einen **Mandanten** gebunden sein und sollte nur in der Lage sein, Zugriffstoken für dieses aud, diese Scopes (und nicht mehr) und diesen Mandanten zu generieren. Dies ist jedoch nicht der Fall bei **FOCI-Anwendungstoken**.
- Ein Aktualisierungstoken ist verschlüsselt und nur Microsoft kann es entschlüsseln.
- Das Erhalten eines neuen Aktualisierungstokens widerruft das vorherige Aktualisierungstoken nicht.
> [!WARNING]
> Information for **conditional access** is **stored** inside the **JWT**. So, if you request the **token from an allowed IP address**, that **IP** will be **stored** in the token and then you can use that token from a **non-allowed IP to access the resources**.
> Informationen für **bedingten Zugriff** sind **innerhalb des JWT gespeichert**. Wenn Sie also das **Token von einer erlaubten IP-Adresse anfordern**, wird diese **IP** im Token **gespeichert**, und dann können Sie dieses Token von einer **nicht erlaubten IP verwenden, um auf die Ressourcen zuzugreifen**.
### Access Tokens "aud"
### Zugriffstoken "aud"
The field indicated in the "aud" field is the **resource server** (the application) used to perform the login.
Das im Feld "aud" angegebene Feld ist der **Ressourcenserver** (die Anwendung), der verwendet wird, um die Anmeldung durchzuführen.
The command `az account get-access-token --resource-type [...]` supports the following types and each of them will add a specific "aud" in the resulting access token:
Der Befehl `az account get-access-token --resource-type [...]` unterstützt die folgenden Typen, und jeder von ihnen wird ein spezifisches "aud" im resultierenden Zugriffstoken hinzufügen:
> [!CAUTION]
> Note that the following are just the APIs supported by `az account get-access-token` but there are more.
> Beachten Sie, dass dies nur die von `az account get-access-token` unterstützten APIs sind, es gibt jedoch weitere.
<details>
<summary>aud examples</summary>
<summary>aud Beispiele</summary>
- **aad-graph (Azure Active Directory Graph API)**: Used to access the legacy Azure AD Graph API (deprecated), which allows applications to read and write directory data in Azure Active Directory (Azure AD).
- `https://graph.windows.net/`
- **aad-graph (Azure Active Directory Graph API)**: Wird verwendet, um auf die veraltete Azure AD Graph API (abgekündigt) zuzugreifen, die Anwendungen ermöglicht, Verzeichnisdaten in Azure Active Directory (Azure AD) zu lesen und zu schreiben.
- `https://graph.windows.net/`
* **arm (Azure Resource Manager)**: Used to manage Azure resources through the Azure Resource Manager API. This includes operations like creating, updating, and deleting resources such as virtual machines, storage accounts, and more.
- `https://management.core.windows.net/ or https://management.azure.com/`
* **arm (Azure Resource Manager)**: Wird verwendet, um Azure-Ressourcen über die Azure Resource Manager API zu verwalten. Dazu gehören Operationen wie das Erstellen, Aktualisieren und Löschen von Ressourcen wie virtuellen Maschinen, Speicherkonten und mehr.
- `https://management.core.windows.net/ oder https://management.azure.com/`
- **batch (Azure Batch Services)**: Used to access Azure Batch, a service that enables large-scale parallel and high-performance computing applications efficiently in the cloud.
- `https://batch.core.windows.net/`
- **batch (Azure Batch Services)**: Wird verwendet, um auf Azure Batch zuzugreifen, einen Dienst, der groß angelegte parallele und hochleistungsfähige Rechenanwendungen effizient in der Cloud ermöglicht.
- `https://batch.core.windows.net/`
* **data-lake (Azure Data Lake Storage)**: Used to interact with Azure Data Lake Storage Gen1, which is a scalable data storage and analytics service.
- `https://datalake.azure.net/`
* **data-lake (Azure Data Lake Storage)**: Wird verwendet, um mit Azure Data Lake Storage Gen1 zu interagieren, einem skalierbaren Datenlager- und Analysedienst.
- `https://datalake.azure.net/`
- **media (Azure Media Services)**: Used to access Azure Media Services, which provide cloud-based media processing and delivery services for video and audio content.
- `https://rest.media.azure.net`
- **media (Azure Media Services)**: Wird verwendet, um auf Azure Media Services zuzugreifen, die cloudbasierte Medienverarbeitungs- und Bereitstellungsdienste für Video- und Audioinhalte bereitstellen.
- `https://rest.media.azure.net`
* **ms-graph (Microsoft Graph API)**: Used to access the Microsoft Graph API, the unified endpoint for Microsoft 365 services data. It allows you to access data and insights from services like Azure AD, Office 365, Enterprise Mobility, and Security services.
- `https://graph.microsoft.com`
* **ms-graph (Microsoft Graph API)**: Wird verwendet, um auf die Microsoft Graph API zuzugreifen, den einheitlichen Endpunkt für Microsoft 365-Daten. Es ermöglicht den Zugriff auf Daten und Einblicke aus Diensten wie Azure AD, Office 365, Enterprise Mobility und Sicherheitsdiensten.
- `https://graph.microsoft.com`
- **oss-rdbms (Azure Open Source Relational Databases)**: Used to access Azure Database services for open-source relational database engines like MySQL, PostgreSQL, and MariaDB.
- `https://ossrdbms-aad.database.windows.net`
- **oss-rdbms (Azure Open Source Relational Databases)**: Wird verwendet, um auf Azure-Datenbankdienste für Open-Source-Relationale Datenbank-Engines wie MySQL, PostgreSQL und MariaDB zuzugreifen.
- `https://ossrdbms-aad.database.windows.net`
</details>
### Access Tokens Scopes "scp"
### Zugriffstoken Scopes "scp"
The scope of an access token is stored inside the scp key inside the access token JWT. These scopes define what the access token has access to.
Der Scope eines Zugriffstokens wird im scp-Schlüssel innerhalb des Zugriffstoken-JWT gespeichert. Diese Scopes definieren, auf was das Zugriffstoken Zugriff hat.
If a JWT is allowed to contact an specific API but **doesn't have the scope** to perform the requested action, it **won't be able to perform the action** with that JWT.
### Get refresh & access token example
Wenn ein JWT berechtigt ist, eine bestimmte API zu kontaktieren, aber **nicht den Scope** hat, um die angeforderte Aktion auszuführen, **kann es die Aktion nicht** mit diesem JWT ausführen.
### Beispiel zum Abrufen von Aktualisierungs- und Zugriffstoken
```python
# Code example from https://github.com/secureworks/family-of-client-ids-research
import msal
@@ -107,17 +106,17 @@ from typing import Any, Dict, List
# LOGIN VIA CODE FLOW AUTHENTICATION
azure_cli_client = msal.PublicClientApplication(
"04b07795-8ddb-461a-bbee-02f9e1bf7b46" # ID for Azure CLI client
"04b07795-8ddb-461a-bbee-02f9e1bf7b46" # ID for Azure CLI client
)
device_flow = azure_cli_client.initiate_device_flow(
scopes=["https://graph.microsoft.com/.default"]
scopes=["https://graph.microsoft.com/.default"]
)
print(device_flow["message"])
# Perform device code flow authentication
azure_cli_bearer_tokens_for_graph_api = azure_cli_client.acquire_token_by_device_flow(
device_flow
device_flow
)
pprint(azure_cli_bearer_tokens_for_graph_api)
@@ -125,83 +124,74 @@ pprint(azure_cli_bearer_tokens_for_graph_api)
# DECODE JWT
def decode_jwt(base64_blob: str) -> Dict[str, Any]:
"""Decodes base64 encoded JWT blob"""
return jwt.decode(
base64_blob, options={"verify_signature": False, "verify_aud": False}
)
"""Decodes base64 encoded JWT blob"""
return jwt.decode(
base64_blob, options={"verify_signature": False, "verify_aud": False}
)
decoded_access_token = decode_jwt(
azure_cli_bearer_tokens_for_graph_api.get("access_token")
azure_cli_bearer_tokens_for_graph_api.get("access_token")
)
pprint(decoded_access_token)
# GET NEW ACCESS TOKEN AND REFRESH TOKEN
new_azure_cli_bearer_tokens_for_graph_api = (
# Same client as original authorization
azure_cli_client.acquire_token_by_refresh_token(
azure_cli_bearer_tokens_for_graph_api.get("refresh_token"),
# Same scopes as original authorization
scopes=["https://graph.microsoft.com/.default"],
)
# Same client as original authorization
azure_cli_client.acquire_token_by_refresh_token(
azure_cli_bearer_tokens_for_graph_api.get("refresh_token"),
# Same scopes as original authorization
scopes=["https://graph.microsoft.com/.default"],
)
)
pprint(new_azure_cli_bearer_tokens_for_graph_api)
```
## FOCI Tokens Privilegieneskalation
## FOCI Tokens Privilege Escalation
Zuvor wurde erwähnt, dass Refresh-Token an die **Scopes** gebunden sein sollten, mit denen sie generiert wurden, an die **Anwendung** und den **Mandanten**, für die sie generiert wurden. Wenn eine dieser Grenzen überschritten wird, ist es möglich, Privilegien zu eskalieren, da es möglich sein wird, Zugriffstoken für andere Ressourcen und Mandanten zu generieren, auf die der Benutzer Zugriff hat, und mit mehr Scopes, als ursprünglich beabsichtigt.
Previously it was mentioned that refresh tokens should be tied to the **scopes** it was generated with, to the **application** and **tenant** it was generated to. If any of these boundaries is broken, it's possible to escalate privileges as it will be possible to generate access tokens to other resources and tenants the user has access to and with more scopes than it was originally intended.
Darüber hinaus **ist dies mit allen Refresh-Token** in der [Microsoft-Identitätsplattform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra-Konten, Microsoft-Persönliche Konten und soziale Konten wie Facebook und Google) möglich, da die [**Dokumentation**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) erwähnt: "Refresh-Token sind an eine Kombination aus Benutzer und Client gebunden, aber **nicht an eine Ressource oder einen Mandanten gebunden**. Ein Client kann ein Refresh-Token verwenden, um Zugriffstoken **über jede Kombination von Ressource und Mandant** zu erwerben, für die er die Berechtigung hat. Refresh-Token sind verschlüsselt und nur die Microsoft-Identitätsplattform kann sie lesen."
Moreover, **this is possible with all refresh tokens** in the [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra accounts, Microsoft personal accounts, and social accounts like Facebook and Google) because as the [**docs**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) mention: "Refresh tokens are bound to a combination of user and client, but **aren't tied to a resource or tenant**. A client can use a refresh token to acquire access tokens **across any combination of resource and tenant** where it has permission to do so. Refresh tokens are encrypted and only the Microsoft identity platform can read them."
Darüber hinaus beachten Sie, dass die FOCI-Anwendungen öffentliche Anwendungen sind, sodass **kein Geheimnis erforderlich ist**, um sich beim Server zu authentifizieren.
Moreover, note that the FOCI applications are public applications, so **no secret is needed** to authenticate to the server.
Dann bekannte FOCI-Clients, die in der [**ursprünglichen Forschung**](https://github.com/secureworks/family-of-client-ids-research/tree/main) gemeldet wurden, können [**hier gefunden werden**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
Then known FOCI clients reported in the [**original research**](https://github.com/secureworks/family-of-client-ids-research/tree/main) can be [**found here**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
### Get different scope
Following with the previous example code, in this code it's requested a new token for a different scope:
### Anderen Scope erhalten
Folgend mit dem vorherigen Beispielcode wird in diesem Code ein neues Token für einen anderen Scope angefordert:
```python
# Code from https://github.com/secureworks/family-of-client-ids-research
azure_cli_bearer_tokens_for_outlook_api = (
# Same client as original authorization
azure_cli_client.acquire_token_by_refresh_token(
new_azure_cli_bearer_tokens_for_graph_api.get(
"refresh_token"
),
# But different scopes than original authorization
scopes=[
"https://outlook.office.com/.default"
],
)
# Same client as original authorization
azure_cli_client.acquire_token_by_refresh_token(
new_azure_cli_bearer_tokens_for_graph_api.get(
"refresh_token"
),
# But different scopes than original authorization
scopes=[
"https://outlook.office.com/.default"
],
)
)
pprint(azure_cli_bearer_tokens_for_outlook_api)
```
### Get different client and scopes
### Verschiedene Clients und Scopes abrufen
```python
# Code from https://github.com/secureworks/family-of-client-ids-research
microsoft_office_client = msal.PublicClientApplication("d3590ed6-52b3-4102-aeff-aad2292ab01c")
microsoft_office_bearer_tokens_for_graph_api = (
# This is a different client application than we used in the previous examples
microsoft_office_client.acquire_token_by_refresh_token(
# But we can use the refresh token issued to our original client application
azure_cli_bearer_tokens_for_outlook_api.get("refresh_token"),
# And request different scopes too
scopes=["https://graph.microsoft.com/.default"],
)
# This is a different client application than we used in the previous examples
microsoft_office_client.acquire_token_by_refresh_token(
# But we can use the refresh token issued to our original client application
azure_cli_bearer_tokens_for_outlook_api.get("refresh_token"),
# And request different scopes too
scopes=["https://graph.microsoft.com/.default"],
)
)
# How is this possible?
pprint(microsoft_office_bearer_tokens_for_graph_api)
```
## References
## Referenzen
- [https://github.com/secureworks/family-of-client-ids-research](https://github.com/secureworks/family-of-client-ids-research)
{{#include ../../../banners/hacktricks-training.md}}