Planen Sie Ihre Identität für getrennte Vorgänge in Azure Lokal

In diesem Artikel wird erläutert, wie Sie Ihre Identität für getrennte Vorgänge in Azure Local planen und integrieren. Erfahren Sie, wie Sie Ihre Identitätslösung einrichten und die Aktionen und Rollen verstehen, die für Operatoren verfügbar sind.

Verstehen und Planen der Identität

Bei getrennten Vorgängen müssen Sie eine vorhandene Identitäts- und Zugriffsverwaltungslösung integrieren. Bevor Sie getrennte Vorgänge bereitstellen, stellen Sie sicher, dass Sie die schritte verstehen, die erforderlich sind, um die Identitätslösung zu integrieren und anzuwenden.

Getrennte Vorgänge unterstützen diese Lösungen:

  • Active Directory: Gruppen und Mitgliedschaften
  • Active Directory-Verbunddienste (AD FS): Authentifizierung

Hinweis

Nur universelle Gruppen werden für Active Directory unterstützt. Legen Sie den Gruppenbereich auf "Universal" fest, wenn Sie Gruppenmitgliedschaften einrichten.

Verstehen der Funktionsweise der Identitätsintegration

Richten Sie während der Bereitstellung Offline-Betrieb ein, um eine Integration mit Ihren Identitätsanbietern (IDP) und der Identitäts- und Zugriffsverwaltung zu erzielen. Geben Sie einen Stammoperator an. Dieser Benutzer besitzt ein spezielles Betreiberabonnement und fügt nach der Bereitstellung weitere Operatoren hinzu. Das Operatorabonnement definiert den Umfang für Operatoraktionen, und einzelne Aktionen hängen von der Operatorrolle ab.

Auf hoher Ebene authentifiziert der OpenID Connect -Endpunkt (OIDC) Benutzer bei getrennten Vorgängen, und der LDAP-Endpunkt (Lightweight Directory Access Protocol) integriert Gruppen und Mitgliedschaften aus Ihrer Organisation. Nach der Integration wird die standardmäßige rollenbasierte Azure-Zugriffssteuerung den gewünschten Bereichen zugewiesen.

Screenshot der Kommunikation zwischen Appliance und Benutzern oder Workloads mit dem Dienst.

Hinweis

Rollenzuweisungen und Richtlinien werden nicht vom Betreiberabonnement an einzelne Abonnements geerbt. Jedes Abonnement verfügt über einen eigenen Bereich. Nur bestimmte Rollen, die einzelnen Abonnements zugewiesen sind, können Aktionen innerhalb dieses bestimmten Abonnements ausführen.

Grundlegendes zur Operatorrolle und -aktionen

Sie können dem Betreiberabonnement weitere Operatoren zuweisen, damit sie tägliche Aktionen ausführen können. Die integrierte Eigentümerrolle für das Betreiberabonnement ermöglicht es Betreibern, diese Aktionen im Geltungsbereich durchzuführen: /Subscriptions/\<GUID>/Microsoft.AzureLocalOperator/*.

Um die Operatorrolle und die aktionen zu verstehen, die sie ausführen können, bieten die folgenden Tabellen eine detaillierte Übersicht über die verfügbaren Aktionen in verschiedenen Kategorien. Zu diesen Kategorien gehören Identitäts- und Zugriffsverwaltung, Abonnementverwaltung sowie Observability und Diagnose.

Verwenden Sie diese Tabellen, um die spezifischen Aufgaben der Operatoren zu identifizieren, die im Rahmen des Geltungsbereichs des Operatorabonnements ausgeführt werden können.

Identitäts- und Zugriffsverwaltung

Maßnahme Bediener
Mehr Operatoren zuweisen Ja
SPN erstellen Ja
SPN löschen Ja
Dienstprinzipalnamen auflisten (SPNs) Ja
SPN aktualisieren Ja
Anzeigen von Gruppenmitgliedschaften (synchronisiert) Ja
Identitätskonfiguration anzeigen Ja
Identitätssynchronisierungsstatus anzeigen Ja

Abonnementverwaltung

Maßnahme Bediener
Alias erstellen Ja
Erstellen von Abonnements Ja
Alias löschen Ja
Abonnement löschen Ja
Listenalias Ja
Alle Abonnements auflisten Ja
Erneute Zuordnung des Abonnementbesitzers Ja
Abonnement umbenennen Ja
Abonnement fortsetzen Ja

Überwachbarkeit und Diagnose

Maßnahme Bediener
Sammeln von Protokollen Ja
Konfigurieren von Diagnose- und vom System generierten Protokolleinstellungen Ja
Konfigurieren Sie die Syslog-Weiterleitung Ja
Herunterladen von Protokollen Ja

Es gibt einige Ausnahmen von den Aktionen, die für Operatoren verfügbar sind:

  • Operatoren können ein Operatorabonnement nicht löschen.

  • Besitzer, die einem Dienstprinzipalnamen (SERVICE Principal Name, SPN) zugewiesen sind, können diesen SPN auch löschen.

Hinweis

Nur die bereitgestellten Aktionen sind im Azure-Portal verfügbar.

Andere integrierte Rollen wie Sicherheitsoperator, Abonnementmanager und Supportoperator können bei Bedarf als betrachtet und ausgewertet werden. Um detailliertere Operatorrollen zu erzielen, können Sie benutzerdefinierte Rollendefinitionen basierend auf der Operatorrolle erstellen und Zugriff auf das Operatorabonnement zuweisen.

Grundlegendes zur Synchronisierung

Nachdem Sie die ersteinrichtung abgeschlossen haben, synchronisiert das System Gruppen mit Gruppenmitgliedschaften, sodass sie für getrennte Vorgänge zugänglich sind. Um zu sehen, welche Gruppen und Mitgliedschaften synchronisiert werden, verwenden Sie eine Operatoranwendungsprogrammierschnittstelle (API), wie Get-ApplianceExternalIdentityObservability im Anhang aufgeführt. Die Synchronisierung wird regelmäßig alle sechs Stunden ausgeführt.

Identitätscheckliste

Verwenden Sie diese Checkliste, um Ihre Identitätsintegration mit getrennten Vorgängen zu planen.

  • Identifizieren Sie IP-Adressen oder einen vollqualifizierten Domänennamen (FQDN) für folgendes:

    • LDAP-Endpunkt (Active Directory)
    • Anmeldeendpunkt (AD FS/OIDC)
  • Wenn Sie einen FQDN für den LDAP-Endpunkt verwenden:

    • Stellen Sie sicher, dass das Gerät für den Offline-Betrieb konfiguriert ist und ein Domain Name System (DNS) verwendet, mit dem der bereitgestellte Endpunkt aufgelöst wird.
  • Erstellen Sie ein Konto mit schreibgeschütztem Zugriff auf dem LDAP v3-Server (Active Directory).

  • Identifizieren Sie die Stammgruppe für die Synchronisierung der Mitgliedschaft.

  • UPN identifizieren Diesem Benutzer sollte die Rolle des Initialoperators zugewiesen werden.

Sammeln und bereitstellen Sie die folgenden Parameter vor der Bereitstellung:

Parametername BESCHREIBUNG Beispiel
Autorität Ein URI für barrierefreie Autoritäten, der Informationen zu OIDC-Endpunkten, Metadaten und mehr liefert. https://adfs.contoso-AzureLocal.com/adfs
ClientID AppID, die beim Einrichten der adfsclient-App erstellt wurde. 00001111-aaaa-2222-bbbb-3333cccc4444
LdapCredential (Benutzername und Kennwort) Anmeldeinformationen (schreibgeschützt) für die LDAP-Integration. Benutzername: ldap

Passwort:******
LdapsCertChainInfo Zertifikatketteninformationen für Ihren LDAP-Endpunkt. Sie können die Zertifikatketteninformationen für Demozwecke weglassen. So rufen Sie die Zertifikatkette ab
OidcCertChainInfo Zertifikatketteninformationen für Ihren OIDC-Endpunkt. Sie können die Zertifikatketteninformationen für Demozwecke weglassen. So rufen Sie die Zertifikatkette ab
LdapServer LDAP-Endpunkt, der aus getrennten Vorgängen erreicht werden kann. Dieser Endpunkt synchronisiert Gruppen und Gruppenmitgliedschaften. Ldap.local.contoso.com
LdapPort LDAP-Port, der zum Herstellen einer Verbindung mit dem globalen Katalog verwendet wird. Der Standardwert 3268 ist ein unsicherer Kanal und 3269 ist ein SSL/gesicherter Kanal für den globalen Katalog. 3269
RootOperatorUserPrincipalName UPN für die anfängliche Operator-Persona, die Zugriff auf das Operator-Abonnement gewährt Cloud-admin@local.contoso.com
Synchronisierungsgruppenkennung GUID der Active Directory-Gruppe, von der die Synchronisierung gestartet wird.

$group = Get-ADGroup -Identity “mygroup” \| Select-Object Name, ObjectGUID
81d71e5c5-abc4-11af-8132-afdf6bbe2ec1
Automatisierungszertifikat (Optional) Für Automatisierungskonto zu verwendende Zertifikat

Erstellen eines Clientzertifikats mit Ihrem eigenen PKI oder Verwenden eines selbstsignierten Zertifikats und Schützen dieses Zertifikats
$cert=New-SelfSignedCertificate -Subject "Automatisierungskonto"

Beispielkonfigurationsparameter:

$ldapPass = 'retracted'|Convertto-securestring -asplaintext -force
$idpConfig = @{ 
     authority = 'https://adfs.contoso-AzureLocal.com/adfs'    
           clientId  = '9e7655c5-1bc4-45af-8345-cdf6bbf4ec1'    
           rootOperatorUserPrincipalName = 'operator@local.contoso.com'    
           ldapServer                    = 'ldap.local.contoso.com'    
           LdapCredential = New-Object PSCredential -ArgumentList @("ldap", $ldapPass)
      syncGroupIdentifier           = '81d71e5c5-abc4-11af-8132-afdf6bbe2ec1'
}

Vollständig automatisierte Bereitstellungen

Verwenden Sie für vollständig automatisierte Bereitstellungen das AutomationCertificate als Teil der IdentityConfiguration. Auf diese Weise können Sie den vollständigen Bereitstellungsablauf automatisieren, da dieses Konto zum Anmelden als Operator, zum Erstellen von Abonnements, zum Registrieren von Ressourcenanbietern und zum Ausführen mit vollständiger Automatisierung verwendet werden kann.

Nachfolgend sehen Sie ein Beispiel für die Anmeldung bei diesem Zertifikat nach der Bereitstellung:

$username = '2cb981cc-147e-47cd-a32c-4bb0dfa60573'
$certPath = 'C:\Aldo\operatorcert.pem'
$tenantId = 'aaaabbbb-0000-cccc-1111-dddd2222eeee'
# Example using az login
az login --service-principal --username $username --certificate $certPath --tenant $tenantId

# Example using Powershell
# Make sure the cert is installed in the CurrentUser cert store
$CertThumbprint = (Get-ChildItem Cert:\CurrentUser\My | Where-Object { $_.Subject -like "*Azure Local disconnected operations automation credential*" }).Thumbprint
Connect-AzAccount -ServicePrincipal `
                  -ApplicationId $username`
                  -TenantId $tenantId `
                  -CertificateThumbprint $certThumbprint

Bitte notieren Sie sich Folgendes:

  • Der Benutzername ist statisch. Dies ist die Anwendungs-ID, die als Operator fungiert.
  • Sie müssen sicherstellen, dass Sie das Zertifikat in eine PEM-Datei konvertiert/exportiert haben.

Einschränkungen

Berücksichtigen Sie diese Einschränkungen, wenn Sie ihre Identitätsintegration mit getrennten Vorgängen planen:

  • Entfernen von Benutzern und Gruppen nach der Synchronisierung: Wenn Sie Benutzer und Gruppen mit Mitgliedschaften nach der letzten Synchronisierung entfernen, werden sie durch getrennte Vorgänge nicht bereinigt. Diese Einschränkung kann zu Fehlern führen, wenn Sie Gruppenmitgliedschaften abfragen.

  • Keine Erzwingungssynchronisierungsfunktion: Die anfängliche Synchronisierung kann bis zu sechs Stunden dauern. Danach wird die Synchronisierung alle 15 Minuten ausgeführt.

  • Keine Verwaltungsgruppen oder aggregierte Stammebene: Dieses Feature ist für mehrere Abonnements nicht verfügbar.

  • Unterstützte Überprüfungen: Nur Active Directory/AD FS werden auf Unterstützung überprüft.

Minderung von Problemen bei der Integration von Identitäten

Verwenden Sie als Hostadministrator das PowerShell-Cmdlet für getrennte Vorgänge, um Einstellungen zu aktualisieren und Probleme zu beheben. Hier sind einige Szenarien, in denen Sie Ihre Identitätseinstellungen möglicherweise neu konfigurieren müssen:

  • Fehler bei der Synchronisierung oder nicht gestartet:

    • Überprüfen Sie, ob LDAP-Anmeldeinformationen gültig sind.
    • Überprüfen Sie, ob LDAP-Anmeldeinformationen Lesezugriff haben.
    • Überprüfen Sie, ob getrennte Vorgänge den LDAP-Server erreichen können, lösen Sie den FQDN auf (falls keine IP-Adresse verwendet wird), und vergewissern Sie sich, dass keine Firewalls den Datenverkehr blockieren.
  • Falsche Gruppe synchronisierter Gruppen:

    • Überprüfen Sie, ob der SyncGroupIdentifier auf den richtigen Stamm eingestellt ist. Das, von welchem Sie synchronisieren.
  • Verlorener Zugriff auf das Betreiberabonnement:

    • Um den Zugriff auf den Operator wiederherzustellen, ändern Sie die rootOperatorUserPrincipalName.

Cmdlets für die Identitätsintegration

Verwenden Sie als Hostadministrator das Modul für getrennte Vorgänge und Installationszertifikate, um Cmdlets auszuführen, mit denen Sie Einstellungen ändern und die Identitätsintegration beheben können. Führen Sie diese Ausführung Get-Command ApplianceExternalIdentity aus, um die verfügbaren Cmdlets für die Identitätsintegration aufzulisten.

Testen der Identitätskonfiguration

Verwenden Sie dieses Cmdlet, um Ihre Identitätskonfiguration schnell auf clientseitiger Seite zu überprüfen.

$idpConfig = new-applianceIdentityConfiguration @identityParams

Test-ApplianceExternalIdentityConfiguration -config $idpConfig

Testidentitätskonfiguration (umfassende Überprüfung)

Verwenden Sie dieses Cmdlet, um Ihre Parameter und das Setup zu überprüfen, bevor Sie Ihre Konfiguration anwenden.

$idpConfig = new-applianceIdentityConfiguration @identityParams

Test-ApplianceExternalIdentityConfigurationDeep -config $idpConfig

Festlegen oder Zurücksetzen der Identität

Verwenden Sie dieses Cmdlet, um das Operatorabonnement zurückzusetzen. Verwenden Sie dieses Cmdlet nur, wenn Probleme mit der Identitätsintegration auftreten.

Set-ApplianceExternalIdentityConfiguration

Identitätsverwaltung

Verwenden Sie dieses Cmdlet, um alle Cmdlets aufzulisten, die Ihnen beim Einrichten und Beheben von Identitätskonfigurationen helfen.

Get-Command *Appliance*ExternalIdentity*

Anhang

Verwenden Sie PowerShell unter Windows Server 2022 oder höher für diese Befehle.

Einrichten von Active Directory oder Active Directory Domain Services (ADDS) zu Demozwecken

# Modify to fit your domain/installation
$GSMAAccount = 'Local\gmsa_adfs$'

Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

# Import the ADDSDeployement module
Import-Module ADDSDeployment

# Install the AD FS role
Install-WindowsFeature ADFS-Federation -IncludeManagementTools

# Promote the server to a domain controller
Install-ADDSForest `
    -DomainName "local.contoso.com" `
    -DomainNetbiosName "local" ` #NETBIOS 15 char limit
    -SafeModeAdministratorPassword (ConvertTo-SecureString "" -AsPlainText -Force) `
    -InstallDns

# Test only
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))
$cert = New-SelfSignedCertificate -DnsName "adfs.local.contoso.com" 

# Import the AD FS module and configure AD FS
Import-Module ADFS

# Install AD FS
Install-AdfsFarm `
    -CertificateThumbprint "$($cert.Thumbprint)" `
    -FederationServiceName "adfs.local.contoso.com" `
    -FederationServiceDisplayName "Local Contoso ADFS" `
    -GroupServiceAccountIdentifier $GSMAAccount

Erstellen einer AD FS-Client-App, Beispielbenutzer und Gruppen

# ClientID can be any unique id in your organization - hardcoded GUID here just as example
Add-AdfsClient `
    -Name "Azure Local Disconnected operations Sign In Service" `
    -ClientId "11112222-bbbb-3333-cccc-4444dddd5555" `
    -RedirectUri "https://login.autonomous.cloud.private/signin-oidc"

# Import the Active Directory module
Import-Module ActiveDirectory

# Create new Active Directory users
$users = @('operator', 'ldap', 'user1', 'user2', 'user3')
$users | % {Remove-ADUser $_ -Confirm:$false -ErrorAction SilentlyContinue }

$users | % {New-ADUser `
    -Name "AzureLocal User $_" `
    -GivenName "AzureLocal" `
    -Surname "User $_" `
    -SamAccountName $_ `
    -UserPrincipalName "$_@Local.contoso.com" `
    -Path "CN=Users,DC=local,DC=contoso,DC=com" `
    -AccountPassword (ConvertTo-SecureString "" -AsPlainText -Force) `
    -Enabled $true
 }

# Create a new Active Directory group
New-ADGroup `
    -Name "AzureLocal Users" `
    -GroupScope Universal `
    -Path "CN=Users,DC=local,DC=contoso,DC=com"

# Add the user to the group
Add-ADGroupMember `
    -Identity "AzureLocal Users" `
    -Members $users

# Create AD FS sync group and add the operator to it
# Variables
$groupName = "ADFS_Sync_Group"
$ouPath = "CN=Users,DC=local,DC=contoso,DC=com"
$users = @("operator")

# Create the group
New-ADGroup -Name $groupName `
            -SamAccountName $groupName `
            -GroupScope Universal `
            -GroupCategory Security `
            -Path $ouPath `
            -Description "Sync group for ADFS purposes"

# Add members to the group
foreach ($user in $users) {
    Add-ADGroupMember -Identity $groupName -Members $user
}

# Retrieve the group's ObjectGUID
$group = Get-ADGroup -Identity $groupName | Select-Object Name, ObjectGUID

# Display the syncGroupIdentifier (ObjectGUID), which is required by the IDP script run from the host
$group

Gewähren Sie LDAP-Benutzern Leserechte für Benutzer mit der Vererbungsoption

Im folgenden Beispiel wird lesezugriff auf den LDAP-Benutzer im Benutzercontainer mithilfe der ActiveDirectorySecurityInheritance "All" Einstellung gewährt. Durch das Zuweisen einer Zugriffsregel mit "Alle" wird die Regel auf die gesamte Unterstruktur des Zielobjekts angewendet.

$domain = Get-ADDomain
$identity = [System.Security.Principal.NTAccount]"$($domain.Name)\ldap"
$accessRule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($identity,  [System.DirectoryServices.ActiveDirectoryRights] "GenericRead",    [System.Security.AccessControl.AccessControlType] "Allow",    [System.DirectoryServices.ActiveDirectorySecurityInheritance] "All")
$acl = Get-Acl -Path "AD:\CN=Users,$($domain.DistinguishedName)"
$acl.AddAccessRule($accessRule)
Set-ACL -Path "AD:\CN=Users,$($domain.DistinguishedName)" -AclObject $acl
Write-Verbose "Granted 'GenericRead' permissions to LDAP account."

Erlauben Sie dem GSMA-Konto das Lesen der Benutzereinstellungen.

Das folgende Beispiel zeigt, wie das GSMA-Konto Benutzereigenschaften in Active Directory aus der Synchronisierungsgruppe lesen kann.

# GroupName and GSMAccount defined earlier

# Get group details
$Group = Get-ADGroup -Identity $GroupName
$GroupDN = $Group.DistinguishedName

# Build the access rule
$Identity = New-Object System.Security.Principal.NTAccount($GSMAAccount)
$ActiveDirectoryRights = [System.DirectoryServices.ActiveDirectoryRights]::ReadProperty
$AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow
$InheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance]::All

# Create the access rule and apply it to the group
# bf9679c0-0de6-11d0-a285-00aa003049e2 (Member attribute): https://learn.microsoft.com/en-us/windows/win32/adschema/a-member?redirectedfrom=MSDN 
$Rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $Identity, $ActiveDirectoryRights, $AccessControlType, "bf9679c0-0de6-11d0-a285-00aa003049e2", $InheritanceType
$GroupEntry = [ADSI]"LDAP://$GroupDN"
$Security = $GroupEntry.ObjectSecurity
$Security.AddAccessRule($Rule)
$GroupEntry.CommitChanges()

Hinweis

Wenn das GSMA-Konto für Ihre ADFS-Farm benutzereigenschaften nicht lesen kann, schlägt die Anmeldung fehl, auch wenn die auf der ADFS-Anmeldeseite eingegebenen Anmeldeinformationen korrekt sind.

Überprüfen und Testen der ADFS-Funktionalität

Führen Sie die folgenden Schritte aus, um die IDPInitiated Signon-Testseite zu aktivieren:

  1. Aktivieren Sie die Anmeldetestseite. Führen Sie den folgenden Befehl aus:

     Set-AdfsProperties -EnableIdpInitiatedSignonPage $true
    
  2. Wechseln Sie zu IdpInitiatedSignon (https://adfs.FDQN/adfs/ls/IdpInitiatedSignon.aspx) und ersetzen Sie den FQDN durch Ihren tatsächlichen Domänennamen.

    Hier ist ein Beispiel mit Ihrem Domänennamen:

    https://adfs.MYFQDN/adfs/ls/IdpInitiatedSignon.aspx

  3. Melden Sie sich mit Ihrem Operatorkonto an, um die Funktionalität von ADFS zu bestätigen.

Dieses Feature ist nur in Azure Local 2602 oder höher verfügbar.