Exportieren Sie einen Bericht über AWS IAM Identity Center-Identitäten und deren Zuweisungen mit PowerShell - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Exportieren Sie einen Bericht über AWS IAM Identity Center-Identitäten und deren Zuweisungen mit PowerShell

Erstellt von Jorge Pava (AWS), Chad Miles (), Frank Allotta (AWS) und Manideep Reddy Gillela (AWS) AWS

Umwelt: Produktion

Technologien: Sicherheit, Identität, Compliance; Management und Unternehmensführung

Arbeitslast: Microsoft

AWSDienste: IAM Identity Center; AWS Tools für PowerShell

Übersicht

Wenn Sie AWS IAM Identity Center (Nachfolger von AWS Single Sign-On) verwenden, um den Single Sign-On (SSO) -Zugriff auf all Ihre Amazon Web Services (AWS) -Konten und Cloud-Anwendungen zentral zu verwalten, kann das Melden und Prüfen dieser Zuweisungen über die AWS Management Console mühsam und zeitaufwändig sein. Dies gilt insbesondere dann, wenn Sie über Berechtigungen für einen Benutzer oder eine Gruppe in Dutzenden oder Hunderten von Konten berichten. AWS

Für viele wäre das ideale Tool zum Anzeigen dieser Informationen eine Tabellenkalkulationsanwendung wie Microsoft Excel. Dies kann Ihnen helfen, die von AWS Organizations verwalteten Daten für Ihre gesamte Organisation zu filtern, zu suchen und zu visualisieren.

Dieses Muster beschreibt, wie Sie AWS Tools verwenden PowerShell , um einen Bericht über SSO Identitätskonfigurationen in IAM Identity Center zu erstellen. Der Bericht ist als CSV Datei formatiert und enthält den Identitätsnamen (Prinzipal), den Identitätstyp (Benutzer oder Gruppe), die Konten, auf die die Identität zugreifen kann, und die Berechtigungssätze. Nachdem Sie diesen Bericht generiert haben, können Sie ihn in Ihrer bevorzugten Anwendung öffnen, um die Daten nach Bedarf zu suchen, zu filtern und zu überprüfen. Die folgende Abbildung zeigt Beispieldaten in einer Tabellenkalkulationsanwendung.

PowerShell Die Skriptergebnisse werden in einer Tabellenkalkulationsanwendung angezeigt.

Wichtig: Da dieser Bericht vertrauliche Informationen enthält, empfehlen wir Ihnen dringend, ihn sicher zu speichern und nur auf einer bestimmten need-to-know Grundlage weiterzugeben.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • IAMIdentity Center und AWS Organizations, konfiguriert und aktiviert.

  • PowerShell, installiert und konfiguriert. Weitere Informationen finden Sie unter Installation PowerShell (Microsoft-Dokumentation).

  • AWSTools für PowerShell, installiert und konfiguriert. Aus Leistungsgründen empfehlen wir dringend, die modularisierte Version von AWS Tools for PowerShell, genanntAWS.Tools, zu installieren. Jeder AWS Dienst wird von einem eigenen, kleinen Modul unterstützt. Geben Sie in der PowerShell Shell die folgenden Befehle ein, um die für dieses Muster benötigten Module zu installieren: AWS.Tools.InstallerOrganizations,SSOAdmin, undIdentityStore.

    Install-Module AWS.Tools.Installer Install-AWSToolsModule -Name Organizations, SSOAdmin, IdentityStore

    Weitere Informationen finden Sie unter AWS .Tools unter Windows installieren oder AWS .Tools unter Linux oder macOS installieren (AWSTools für die PowerShell Dokumentation). Wenn Sie bei der Installation der Module eine Fehlermeldung erhalten, lesen Sie den Abschnitt zur Fehlerbehebung in diesem Muster.

  • AWSBefehlszeilenschnittstelle (AWSCLI) oder das AWS SDK muss zuvor mit funktionierenden Anmeldeinformationen konfiguriert werden, indem Sie einen der folgenden Schritte ausführen:

    • Verwenden Sie das. AWS CLI aws configure Weitere Informationen finden Sie unter Schnellkonfiguration (AWSCLIDokumentation).

    • Konfigurieren Sie AWS CLI unser AWS Cloud Development Kit (AWSCDK), um temporären Zugriff über eine AWS Identity and Access Management Zugriffsmanagement-Rolle (IAM) zu erhalten. Weitere Informationen finden Sie unter IAMRollenanmeldedaten für CLI den Zugriff abrufen (IAMIdentity Center-Dokumentation).

  • Ein benanntes Profil für den AWSCLI, das Anmeldeinformationen für einen IAM Prinzipal gespeichert hat, der:

    • Hat Zugriff auf das Verwaltungskonto der AWS Organizations oder das delegierte Administratorkonto für IAM Identity Center

    • Wurden die AWSSSOReadOnly und die AWSSSODirectoryReadOnly AWS verwalteten Richtlinien darauf angewendet

    Weitere Informationen finden Sie unter Verwenden von benannten Profilen (AWSCLIDokumentation) und AWSVerwaltete Richtlinien (IAMDokumentation).

Einschränkungen

  • Die AWS Zielkonten müssen als Organisation in AWS Organizations verwaltet werden.

Produktversionen

Architektur

Zielarchitektur

Skript, das ein AWS CLI benanntes Profil verwendet, um einen Identitätsbericht in SSO IAM Identity Center zu erstellen.
  1. Der Benutzer führt das Skript in einer PowerShell Befehlszeile aus.

  2. Das Skript geht von dem genannten Profil für aus AWSCLI. Dadurch wird Zugriff auf IAM Identity Center gewährt.

  3. Das Skript ruft die SSO Identitätskonfigurationen aus IAM Identity Center ab.

  4. Das Skript generiert eine CSV Datei in demselben Verzeichnis auf der lokalen Workstation, in dem das Skript gespeichert ist.

Tools

AWSDienste

  • AWSCommand Line Interface (AWSCLI) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können.

  • AWSIAMIdentity Center hilft Ihnen, den Single Sign-On (SSO) -Zugriff auf all Ihre AWS Konten und Cloud-Anwendungen zentral zu verwalten.

  • AWSBei Tools for PowerShell handelt es sich um eine Reihe von PowerShell Modulen, mit denen Sie Operationen auf Ihren AWS Ressourcen von der PowerShell Befehlszeile aus per Skript ausführen können.

Andere Tools

  • PowerShellist ein Automatisierungs- und Konfigurationsverwaltungsprogramm von Microsoft, das unter Windows, Linux und macOS läuft.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Bereite das Drehbuch vor.

  1. Kopieren Sie das PowerShell Skript im Abschnitt Zusätzliche Informationen dieses Musters.

  2. Definieren Sie in dem Param Abschnitt für Ihre AWS Umgebung die Werte für die folgenden Variablen:

    • OutputFile— Der Dateiname des Berichts.

    • ProfileName— Das AWS CLI benannte Profil, das Sie zum Generieren des Berichts verwenden möchten.

    • Region— Die AWS Region, in der IAM Identity Center bereitgestellt wird. Eine vollständige Liste der Regionen und ihrer Codes finden Sie unter Regionale Endpunkte.

  3. Speichern Sie das Skript mit dem DateinamenSSO-Report.ps1.

Cloud-Administrator

Führen Sie das Skript aus.

Es wird empfohlen, dass Sie Ihr benutzerdefiniertes Skript in der PowerShell Shell mit dem folgenden Befehl ausführen.

.\SSO-Report.ps1

Sie können das Skript auch von einer anderen Shell aus ausführen, indem Sie den folgenden Befehl eingeben.

pwsh .\SSO-Report.ps1

Das Skript generiert eine CSV Datei im selben Verzeichnis wie die Skriptdatei.

Cloud-Administrator

Analysieren Sie Berichtsdaten.

Die CSV Ausgabedatei hat die Header AccountNamePermissionSet, Principal und Type. Öffnen Sie diese Datei in Ihrem bevorzugten Tabellenkalkulationsprogramm. Sie können eine Datentabelle erstellen, um die Ausgabe zu filtern und zu sortieren.

Cloud-Administrator

Fehlerbehebung

ProblemLösung

The term ‘Get-<parameter>’ is not recognized as the name of a cmdlet, function, script file, or operable program.-Fehler

AWSTools für PowerShell oder ihre Module sind nicht installiert. Geben Sie in der PowerShell Shell die folgenden Befehle ein, um AWS Tools für PowerShell und die dafür benötigten Module zu installieren: AWS.Tools.InstallerOrganizations,SSOAdmin, undIdentityStore.

Install-Module AWS.Tools.Installer Install-AWSToolsModule -Name Organizations, SSOAdmin, IdentityStore

No credentials specified or obtained from persisted/shell defaults-Fehler

Vergewissern Sie sich im Abschnitt Prepare the script in the Epics, dass Sie die Region Variablen ProfileName und korrekt eingegeben haben. Stellen Sie sicher, dass die Einstellungen und Anmeldeinformationen im genannten Profil über ausreichende Berechtigungen zur Verwaltung von IAM Identity Center verfügen.

Authenticode Issuer …Fehler bei der Installation der AWS .Tools-Module

Fügen Sie den -SkipPublisherCheck Parameter am Ende des Install-AWSToolsModule Befehls hinzu.

Get-ORGAccountList : Assembly AWSSDK.SSO could not be found or loaded.-Fehler

Dieser Fehler kann auftreten, wenn benannte AWS CLI Profile angegeben, AWS CLI Benutzer mit IAM Identity Center authentifiziert und AWS CLI aktualisierte Authentifizierungstoken automatisch abgerufen werden. Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

  1. Geben Sie den folgenden Befehl ein, um zu bestätigen, dass die SSOOIDC Module SSO und installiert sind.

    Install-AWSToolsModule SSO, SSOOIDC
  2. Fügen Sie die folgenden Zeilen in das Skript unter dem param() Block ein.

    Import-Module AWS.Tools.SSO
    Import-Module AWS.Tools.SSOOIDC

Zugehörige Ressourcen

Zusätzliche Informationen

Stellen Sie im folgenden Skript fest, ob Sie die Werte für die folgenden Parameter aktualisieren müssen:

  • Wenn Sie ein benanntes Profil verwenden AWSCLI, um auf das Konto zuzugreifen, in dem IAM Identity Center konfiguriert ist, aktualisieren Sie den $ProfileName Wert.

  • Wenn IAM Identity Center in einer anderen AWS Region als der Standardregion für Ihre AWS CLI AWS SDK OR-Konfiguration bereitgestellt wird, aktualisieren Sie den $Region Wert, sodass die Region verwendet wird, in der IAM Identity Center bereitgestellt wird.

  • Wenn keine dieser Situationen zutrifft, ist kein Skript-Update erforderlich.

param ( # The name of the output CSV file [String] $OutputFile = "SSO-Assignments.csv", # The AWS CLI named profile [String] $ProfileName = "", # The AWS Region in which IAM Identity Center is configured [String] $Region = "" ) $Start = Get-Date; $OrgParams = @{} If ($Region){ $OrgParams.Region = $Region} if ($ProfileName){$OrgParams.ProfileName = $ProfileName} $SSOParams = $OrgParams.Clone(); $IdsParams = $OrgParams.Clone() $AccountList = Get-ORGAccountList @OrgParams | Select-Object Id, Name $SSOinstance = Get-SSOADMNInstanceList @OrgParams $SSOParams['InstanceArn'] = $SSOinstance.InstanceArn $IdsParams['IdentityStoreId'] = $SSOinstance.IdentityStoreId $PSsets = @{}; $Principals = @{} $Assignments = @(); $AccountCount = 1; Write-Host "" foreach ($Account in $AccountList) { $Duration = New-Timespan -Start $Start -End (Get-Date) | ForEach-Object {[Timespan]::New($_.Days, $_.Hours, $_.Minutes, $_.Seconds)} Write-Host "`r$Duration - Account $AccountCount of $($AccountList.Count) (Assignments:$($Assignments.Count)) " -NoNewline $AccountCount++ foreach ($PS in Get-SSOADMNPermissionSetsProvisionedToAccountList -AccountId $Account.Id @SSOParams) { if (-not $PSsets[$PS]) {$PSsets[$PS] = (Get-SSOADMNPermissionSet @SSOParams -PermissionSetArn $PS).Name;$APICalls++} $AssignmentsResponse = Get-SSOADMNAccountAssignmentList @SSOParams -PermissionSetArn $PS -AccountId $Account.Id if ($AssignmentsResponse.NextToken) {$AccountAssignments = $AssignmentsResponse.AccountAssignments} else {$AccountAssignments = $AssignmentsResponse} While ($AssignmentsResponse.NextToken) { $AssignmentsResponse = Get-SSOADMNAccountAssignmentList @SSOParams -PermissionSetArn $PS -AccountId $Account.Id -NextToken $AssignmentsResponse.NextToken $AccountAssignments += $AssignmentsResponse.AccountAssignments} foreach ($Assignment in $AccountAssignments) { if (-not $Principals[$Assignment.PrincipalId]) { $AssignmentType = $Assignment.PrincipalType.Value $Expression = "Get-IDS"+$AssignmentType+" @IdsParams -"+$AssignmentType+"Id "+$Assignment.PrincipalId $Principal = Invoke-Expression $Expression if ($Assignment.PrincipalType.Value -eq "GROUP") { $Principals[$Assignment.PrincipalId] = $Principal.DisplayName } else { $Principals[$Assignment.PrincipalId] = $Principal.UserName } } $Assignments += [PSCustomObject]@{ AccountName = $Account.Name PermissionSet = $PSsets[$PS] Principal = $Principals[$Assignment.PrincipalId] Type = $Assignment.PrincipalType.Value} } } } $Duration = New-Timespan -Start $Start -End (Get-Date) | ForEach-Object {[Timespan]::New($_.Days, $_.Hours, $_.Minutes, $_.Seconds)} Write-Host "`r$($AccountList.Count) accounts done in $Duration. Outputting result to $OutputFile" $Assignments | Sort-Object Account | Export-CSV -Path $OutputFile -Force