# Verwaltete Identitäten

{% hint style="info" %}
Diese Funktion erfordert Version **2.0** oder höher.
{% endhint %}

SCEPman muss mit Ihren Entra-Verzeichnis- und Intune-Endpunkten interagieren, um die Zertifikats- und OCSP-Validierung von Benutzern und Geräten bereitzustellen. Nach der Bereitstellung verfügt SCEPman noch nicht über die erforderlichen Berechtigungen, um auf diese Dienste zuzugreifen. Das in diesem Artikel beschriebene PowerShell-Modul fügt der verwalteten Identität des SCEPman App Service die notwendigen Berechtigungen hinzu und schließt die Installation ab.

Zusätzlich fügt das PowerShell-Modul die erforderliche Hintergrundverdrahtung für die mit SCEPman 2.0 eingeführte SCEPman Certificate Master-Komponente hinzu. Falls Sie von SCEPman 1.x auf SCEPman 2.x aktualisiert haben, fügt das PowerShell-Modul sogar zwei neue Azure-Ressourcen für die SCEPman Certificate Master-Komponente hinzu.

## Das SCEPman-Installations-PowerShell-Modul herunterladen und ausführen

Unabhängig davon, ob Sie gerade eine frische Installation von SCEPman 2.x vorgenommen haben oder ob Sie gerade von SCEPman 1.x auf SCEPman 2.x aktualisiert haben, und in einigen Fällen nach Änderungen an der Bereitstellungsarchitektur, sind die Installationsschritte dieselben. Sie laden das SCEPman PowerShell-Modul herunter und führen es aus, das erkennt, was zu tun ist, und die Installation abschließt. Sie können das SCEPman-Modul so oft ausführen, wie Sie möchten, es fügt nur das hinzu, was noch fehlt.

### Voraussetzungen

* Ein **Global Admin** Konto für den Mandanten, in dem Sie SCEPman installieren möchten (oder eine andere AAD-Rolle wie *Privileged Role Administrator* und Schreibberechtigungen für das Azure-Abonnement). Es gibt die Möglichkeit, ein Konto mit nur der *Application Administrator* Rolle zu verwenden und die Befehle, die Global-Administrator-Berechtigungen erfordern, später manuell auszuführen.
* [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) (auch bekannt als *az*) installiert. Azure CLI ist bereits vorinstalliert in der [Azure Cloud Shell](https://docs.microsoft.com/en-us/azure/cloud-shell/overview), der bevorzugten Methode zum Ausführen des Moduls.

### Das SCEPman-Installations-CMDlet ausführen

#### Aktivierte Homepage

Sobald die Voraussetzungen erfüllt sind, können Sie das SCEPman-Installationsmodul aus der PowerShell Gallery installieren und dann das CMDlet ausführen, um die SCEPman- und Certificate Master-Installation abzuschließen.

1. Zuerst müssen Sie zum SCEPman App Service navigieren und auf Default domain klicken (siehe Screenshot unten). Dadurch gelangen Sie zur SCEPman-Homepage.

<figure><img src="https://2075553437-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FOpFw5ty3cTxb27sfldRx%2F2024-04-17%2016_16_16.png?alt=media&#x26;token=ee0ac055-4107-494d-9990-8a610fbec7f7" alt=""><figcaption></figcaption></figure>

2. Führen Sie den auf der Homepage Ihrer SCEPman-Instanz angezeigten PowerShell-Befehl in Ihrer PowerShell oder Azure Cloud Shell aus (siehe Screenshot unten). Dies enthält einen Parameter zur Identifizierung Ihrer SCEPman-Instanz, sodass der Code idealerweise ohne Benutzereingriff ausgeführt werden kann.

![](https://2075553437-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-9189fc6b1b39a7ba68b3add0dfe55427083ef43e%2F2022-04-07SCEPmanV2.0AfterNewInstallation.png?alt=media)

{% hint style="warning" %}
Nach dem Ausführen des CMDlets können auf der SCEPman-Homepage möglicherweise „Service not available“ oder „502 Server Error“ angezeigt werden. Bitte warten Sie 2-3 Minuten und aktualisieren Sie die Seite dann erneut.
{% endhint %}

#### Deaktivierte Homepage

Wenn Sie die SCEPman-Homepage deaktiviert haben oder das CMDlet erneut ausführen müssen, gehen Sie wie folgt vor:

1. &#x20;Fügen Sie den folgenden Code in Ihre PowerShell oder Azure Cloud Shell ein:

```
Install-Module SCEPman -Scope CurrentUser -Force
Complete-SCEPmanInstallation 6>&1
```

2. Füllen Sie die Eingabeaufforderungen aus für:

* In welchem Azure-Abonnement SCEPman ausgeführt wird (wenn Sie Zugriff auf mehr als eines haben)
* Der Name des SCEPman App Service (nicht erforderlich, wenn Sie den Code von der SCEPman-Homepage verwendet haben)

3. (Nur für SCEPman-Updates) benötigen Sie zwei zusätzliche Bestätigungen:

* Der Name des neuen SCEPman Certificate Master App Service (Sie können den Vorschlag durch Drücken von Enter bestätigen oder einen neuen Namen für die Ressource eingeben)
* Der Name der neuen Storage Account-Ressource (auch hier können Sie den Vorschlag durch Drücken von Enter bestätigen oder einen neuen Namen für die Ressource eingeben)

### Das SCEPman-Installations-CMDlet ohne Global-Admin-Rolle ausführen

Verwenden Sie den *-SkipAppRoleAssignments* Schalter von Complete-SCEPmanInstallation, um das CMDlet ohne Global-Admin-Berechtigungen auszuführen. Dadurch wird die Zuweisung der erforderlichen App-Rollen zu den verwalteten Identitäten der SCEPman- und Certificate Master-App-Services übersprungen. Sie können die App-Rollen dann manuell als Global Administrator zuweisen. Das CMDlet gibt die erforderlichen Befehle in der Konsole aus.

### Überlegungen bei der Verwendung von Bereitstellungs-Slots

Das SCEPman-Modul aktualisiert die Konfiguration in allen Bereitstellungs-Slots, es sei denn, Sie teilen ihm mit, dass es nur einen bestimmten Bereitstellungs-Slot mit dem Parameter verwenden soll `-DeploymentSlotName` (der nicht der Hauptslot sein kann, da es sich technisch gesehen um keinen Bereitstellungs-Slot handelt). Die Konfigurationsaktualisierung ändert die SCEPman-Einstellungen auf **verwenden** **Authentifizierung per Managed Identity anstelle von Enterprise-App-Authentifizierung**.&#x20;

SCEPman 1.x **unterstützt nicht** die Authentifizierung per Managed Identity und macht daher Bereitstellungs-Slots, die noch eine 1.x-Version ausführen, unbrauchbar. Wenn Sie also mehrere Bereitstellungs-Slots haben und nicht alle gleichzeitig aktualisieren möchten, sollten Sie den Produktions-Slot zuletzt aktualisieren -- **sein Upgrade betrifft auch alle anderen Bereitstellungs-Slots**.&#x20;

Verwenden Sie für andere Bereitstellungs-Slots den `-DeploymentSlotName` Parameter, um nur diese einzelnen Bereitstellungs-Slots anzusprechen. Dies ist es, was die auf der SCEPman-Homepage des jeweiligen Bereitstellungs-Slots angezeigten PowerShell-Befehle darstellen, sodass Sie die Befehle einfach kopieren können.

Sobald alle Ihre Bereitstellungs-Slots auf 2.x laufen, führen Sie das Complete-SCEPmanInstallation-CMDlet einfach noch einmal aus, und dann verwenden alle Managed Identities.

{% hint style="danger" %}
Wenn Sie versehentlich einen Bereitstellungs-Slot auf die Authentifizierung per Managed Identity aktualisiert haben, der noch SCEPman 1.x ausführt, sehen Sie sich bitte die [Downgrade-Anleitung](https://docs.scepman.com/de/deployment-options/enterprise-deployment#downgrade-from-2.x-to-1.x) an, um ihn wieder funktionsfähig zu machen.
{% endhint %}

### Überlegungen bei der Installation von SCEPman mehrmals in einem Mandanten

Das CMDlet Complete-SCEPmanInstallation erstellt zwei App-Registrierungen: `SCEPman-api` und `SCEPman-CertMaster`. [Abschnitt „Wie das CMDlet SCEPman Certificate Master konfiguriert](#how-the-cmdlet-configures-scepman-certificate-master)“ erklärt, was diese App-Registrierungen tun. Das CMDlet erfordert, dass ihre Namen eindeutig sind. Wenn Sie also mehrere SCEPman-Installationen in einem Mandanten haben, verwenden diese standardmäßig dieselben App-Registrierungen. Das bedeutet, dass Benutzer auf allen Certificate Masters dieselben Rollen haben und dass technisch gesehen jede Certificate Master-Instanz Zertifikatsanforderungen an beliebige SCEPman-Instanzen senden kann (obwohl dies nicht geschieht, es sei denn, Sie konfigurieren SCEPman Certificate Master entsprechend).

Wenn Sie dieses Verhalten nicht möchten, zum Beispiel weil die SCEPman-Installationen zu unterschiedlichen Teilen Ihrer Organisation gehören, oder weil eine SCEPman-Installation eine Vorproduktionsumgebung ist, oder weil Sie eine mehrstufige PKI mit einer SCEPman Root CA und einer SCEPman Issuing CA möchten, müssen Sie den SCEPman-Instanzen mitteilen, andere App-Registrierungen zu verwenden.

Zu diesem Zweck verfügt das CMDlet Complete-SCEPmanInstallation über die beiden Parameter `-AzureADAppNameForSCEPman` und `-AzureADAppNameForCertMaster`. Mit diesen Parametern können Sie unterschiedliche Namen für Ihre App-Registrierungen festlegen. Zum Beispiel könnten Sie das CMDlet für Ihre Root CA wie folgt aufrufen:\
`Complete-SCEPmanInstallation -SCEPmanAppServiceName app-scepmanroot -SearchAllSubscriptions -AzureAdAppNameForSCEPman SCEPman-api-root -AzureAdAppNameForCertMaster -SCEPman-CertMaster-root 6>&1`

Und dann rufen Sie es ein weiteres Mal für Ihre Subordinate CA wie folgt auf:

`Complete-SCEPmanInstallation -SCEPmanAppServiceName app-scepmansub -SearchAllSubscriptions -AzureAdAppNameForSCEPman SCEPman-api-sub -AzureAdAppNameForCertMaster -SCEPman-CertMaster-sub 6>&1`

## Hintergrunddetails des SCEPman PowerShell-Moduls

In diesem Abschnitt werden die internen Abläufe des PowerShell-Moduls beschrieben. Dies kann hilfreich sein, wenn Sie eine spezielle Konfiguration haben, die eine Anpassung des Skripts erfordert, wenn Sie eine besondere Berechtigung gewähren müssen, wenn Sie Probleme mit einer SCEPman-Installation beheben oder wenn Sie die internen Abläufe verstehen möchten, um ein Installationsskript für Ihr eigenes Projekt zu schreiben. Beachten Sie, dass das PowerShell-Modul Open-Source-Software ist. Sie können den Quellcode in seinem [GitHub-Repository](https://github.com/scepman/scepman-psmodule)überprüfen. Pull Requests sind willkommen!

Wir empfehlen, den Befehl mit `6>&1`auszuführen, wodurch der Informationsstrom umgeleitet und auf dem Bildschirm ausgegeben wird, was mehr Informationen über den Zustand des Programms liefert, als wenn Sie die Umleitung weglassen. Wenn Sie `-Verbose`hinzufügen, gibt es noch mehr Informationen darüber, was das Skript tut.

### Wie das CMDlet SCEPman konfiguriert

Das PowerShell-CMDlet sucht nach dem SCEPman App Service. Der App Service verwendet eine systemzugewiesene Managed Identity, die in einer regulären Installation bereits Zugriffsrechte auf den Azure Key Vault von SCEPman hat. Das CMDlet fügt Berechtigungen hinzu, um auf Microsoft Graph zuzugreifen, um Benutzer und Geräte in AAD und Intune für eingehende OCSP-Anfragen zu suchen, sowie auf Intune selbst, um eingehende SCEP-Anfragen zu überprüfen.

### Wie das CMDlet Updates von SCEPman 1.x behandelt

Zusätzlich zur Gewährung der Rechte für SCEPman fügt das Modul bei einem Upgrade zwei neue Azure-Ressourcen hinzu:

* Der SCEPman Certificate Master App Service
* Der von SCEPman und SCEPman Certificate Master gemeinsam genutzte Storage Account für manuell erstellte Zertifikate

Selbst für die Community Edition, die die SCEPman Certificate Master-Komponente nicht verwendet, werden die beiden neuen Ressourcen hinzugefügt. Dies ermöglicht einen leichteren Wechsel zur Enterprise Edition, wenn Sie möchten, und verursacht keine zusätzlichen Kosten -- der Storage Account wird leer sein und Microsoft berechnet dies nach der Speichermenge, und der Certificate Master App Service teilt sich einen App Service Plan mit SCEPman, was ebenfalls keine zusätzlichen Kosten verursacht.

SCEPman 1.x verwendete eine App-Registrierung zur Authentifizierung bei Microsoft Graph und Intune, während SCEPman 2.x seine Managed Identity verwenden kann. Das CMDlet wechselt zur Managed Identity, indem diese Einstellungen geändert werden:

* [AppConfig:AuthConfig:ApplicationId](https://docs.scepman.com/de/scepman-konfiguration/application-settings/dependencies-azure-services/azure-ad#appconfigauthconfigapplicationid) wird auf eine neu erstellte App-Registrierung ohne Berechtigungen gesetzt. Sie wird zur Authentifizierung verwendet *gegenüber* SCEPman, nicht damit sich SCEPman irgendwo anders authentifiziert. Der alte Wert wird gesichert als `Backup:AppConfig:AuthConfig:ApplicationId`.
* [AppConfig:AuthConfig:ApplicationKey](https://docs.scepman.com/de/scepman-konfiguration/application-settings/dependencies-azure-services/azure-ad#appconfigauthconfigapplicationkey) wird gelöscht, der alte Wert wird gesichert als `Backup:AppConfig:AuthConfig:ApplicationKey`. Er wird nicht mehr benötigt, da SCEPman nicht als die Anwendung authentifiziert.
* [AppConfig:AuthConfig:ManagedIdentityEnabledOnUnixTime](https://docs.scepman.com/de/scepman-konfiguration/application-settings/dependencies-azure-services/azure-ad#appconfigauthconfigmanagedidentityenabledonunixtime) enthält den Zeitpunkt, zu dem das CMDlet ausgeführt wurde. SCEPman erhält erst nach einer kurzen Verzögerung nach Ausführung des CMDlets ein Token unter Verwendung der Managed Identity, da erst dann die Rollen im Token die vom CMDlet hinzugefügten korrekten Berechtigungen widerspiegeln.

### Wie das CMDlet SCEPman Certificate Master konfiguriert

Der SCEPman App Service erlaubt anonymen Zugriff auf seine Homepage, da dort nur nicht sensible Informationen mit Lesezugriff angezeigt werden. Im Gegensatz dazu ermöglicht die SCEPman Certificate Master-Komponente Benutzern, Zertifikate auszustellen. Daher erlaubt sie nur authentifizierten Zugriff und nur, wenn Sie die richtigen Berechtigungen haben. Dies erfordert eine Azure-App-Registrierung mit delegierten Berechtigungen, um zu sehen, wer angemeldet ist, sowie die richtige Konfiguration der Anmelde-URL. Das Modul registriert diese App-Registrierung als `SCEPman-CertMaster` in Ihrem Azure-Mandanten.

Zusätzlich benötigt der SCEPman Certificate Master App Service die Berechtigung, Certificate Signing Requests (CSRs) an den zentralen SCEPman App Service zu senden, um Zertifikate auszustellen. Der Authentifizierungsmechanismus dahinter basiert auf einer weiteren App-Registrierung: `SCEPman-api`. SCEPman verwendet *SCEPman-api* zur Verwaltung der Berechtigungen für die CSR-Einreichung. Das Skript registriert SCEPman-api und fügt der verwalteten Identität des SCEPman Certificate Master die Einreichungsberechtigung hinzu.

{% hint style="info" %}
Falls Sie SCEPman von 1.x auf 2.x aktualisieren und das PS-Skript erfolgreich ausgeführt haben, können Sie die in SCEPman 1.x verwendete App-Registrierung entfernen

SCEPman V2.x verwendet zwei neue App-Registrierungen: „SCEPman-api“ und „SCEPman-CertMaster“
{% endhint %}
