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.
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, genannt
AWS.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.Installer
Organizations
,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 dieAWSSSODirectoryReadOnly
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
Für alle Betriebssysteme wird empfohlen, PowerShell Version 7.0
oder höher zu verwenden.
Architektur
Zielarchitektur
Der Benutzer führt das Skript in einer PowerShell Befehlszeile aus.
Das Skript geht von dem genannten Profil für aus AWSCLI. Dadurch wird Zugriff auf IAM Identity Center gewährt.
Das Skript ruft die SSO Identitätskonfigurationen aus IAM Identity Center ab.
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
PowerShell
ist ein Automatisierungs- und Konfigurationsverwaltungsprogramm von Microsoft, das unter Windows, Linux und macOS läuft.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Bereite das Drehbuch vor. |
| 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.
Sie können das Skript auch von einer anderen Shell aus ausführen, indem Sie den folgenden Befehl eingeben.
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
Problem | Lösung |
---|---|
| 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:
|
| Vergewissern Sie sich im Abschnitt Prepare the script in the Epics, dass Sie die |
| Fügen Sie den |
| 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:
|
Zugehörige Ressourcen
Wo werden die Konfigurationseinstellungen gespeichert? (AWSCLIDokumentation)
Konfiguration des AWS CLI für die Verwendung von AWS IAM Identity Center (AWSCLIDokumentation)
Verwendung benannter Profile (AWSCLIDokumentation)
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