Esporta un report delle identità di AWS IAM Identity Center e delle relative assegnazioni utilizzando PowerShell - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esporta un report delle identità di AWS IAM Identity Center e delle relative assegnazioni utilizzando PowerShell

Creato da Jorge Pava (AWS), Chad Miles (AWS), Frank Allotta (AWS) e Manideep Reddy Gillela (AWS)

Ambiente: produzione

Tecnologie: sicurezza, identità, conformità; gestione e governance

Carico di lavoro: Microsoft

Servizi AWS: IAM Identity Center; AWS Tools per PowerShell

Riepilogo

Quando utilizzi AWS IAM Identity Center (successore di AWS Single Sign-On) per gestire centralmente l'accesso Single Sign-On (SSO) a tutti gli account e le applicazioni cloud di Amazon Web Services (AWS), la segnalazione e il controllo di tali assegnazioni tramite la Console di gestione AWS possono essere noiosi e richiedere molto tempo. Ciò è particolarmente vero se stai segnalando le autorizzazioni per un utente o un gruppo su dozzine o centinaia di account AWS.

Per molti, lo strumento ideale per visualizzare queste informazioni sarebbe utilizzare un'applicazione per fogli di calcolo, come Microsoft Excel. Questo può aiutarti a filtrare, cercare e visualizzare i dati per l'intera organizzazione, gestita da AWS Organizations.

Questo modello descrive come utilizzare AWS Tools per PowerShell generare un report sulle configurazioni di identità SSO in IAM Identity Center. Il report è formattato come file CSV e include il nome dell'identità (principale), il tipo di identità (utente o gruppo), gli account a cui l'identità può accedere e i set di autorizzazioni. Dopo aver generato questo rapporto, puoi aprirlo nella tua applicazione preferita per cercare, filtrare e controllare i dati secondo necessità. L'immagine seguente mostra dati di esempio in un'applicazione per fogli di calcolo.

PowerShell i risultati degli script vengono visualizzati nell'applicazione per fogli di calcolo.

Importante: poiché questo rapporto contiene informazioni riservate, consigliamo vivamente di archiviarle in modo sicuro e condividerle solo su base individuale. need-to-know

Prerequisiti e limitazioni

Prerequisiti

  • IAM Identity Center e AWS Organizations, configurati e abilitati.

  • PowerShell, installato e configurato. Per ulteriori informazioni, vedere Installazione PowerShell (documentazione Microsoft).

  • Strumenti AWS per PowerShell, installati e configurati. Per motivi di prestazioni, consigliamo vivamente di installare la versione modulare di AWS Tools for PowerShell, chiamata. AWS.Tools Ogni servizio AWS è supportato da un piccolo modulo individuale. Nella PowerShell shell, inserisci i seguenti comandi per installare i moduli necessari per questo modello: AWS.Tools.InstallerOrganizations,SSOAdmin, eIdentityStore.

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

    Per ulteriori informazioni, consulta Installare AWS.Tools su Windows o Installare AWS.Tools su Linux o macOS (AWS Tools per la documentazione). PowerShell Se ricevi un errore durante l'installazione dei moduli, consulta la sezione Risoluzione dei problemi di questo schema.

  • AWS Command Line Interface (AWS CLI) o l'SDK AWS devono essere precedentemente configurati con credenziali di lavoro effettuando una delle seguenti operazioni:

    • Usa l'interfaccia a riga di comando di AWS aws configure Per ulteriori informazioni, consulta Quick configuration (documentazione dell'interfaccia a riga di comando di AWS).

    • Configura AWS CLI o AWS Cloud Development Kit (AWS CDK) per ottenere l'accesso temporaneo tramite un ruolo AWS Identity and Access Management (IAM). Per ulteriori informazioni, consulta Ottenere le credenziali del ruolo IAM per l'accesso alla CLI (documentazione IAM Identity Center).

  • Un profilo denominato per l'AWS CLI che ha salvato le credenziali per un principal IAM che:

    • Ha accesso all'account di gestione AWS Organizations o all'account amministratore delegato per IAM Identity Center

    • Le politiche gestite da AWSSSODirectoryReadOnly AWS AWSSSOReadOnly e AWS sono state applicate ad esso?

    Per ulteriori informazioni, consulta Using named profiles (documentazione AWS CLI) e AWS managed policy (documentazione IAM).

Limitazioni

  • Gli account AWS di destinazione devono essere gestiti come organizzazione in AWS Organizations.

Versioni del prodotto

Architettura

Architettura Target

Script che utilizza il profilo denominato AWS CLI per creare un report sulle identità SSO in IAM Identity Center.
  1. L'utente esegue lo script in una PowerShell riga di comando.

  2. Lo script presuppone il profilo denominato per AWS CLI. Ciò consente l'accesso a IAM Identity Center.

  3. Lo script recupera le configurazioni di identità SSO da IAM Identity Center.

  4. Lo script genera un file CSV nella stessa directory sulla workstation locale in cui viene salvato lo script.

Strumenti

Servizi AWS

  • AWS Command Line Interface (AWS CLI) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.

  • AWS IAM Identity Center ti aiuta a gestire centralmente l'accesso Single Sign-On (SSO) a tutti i tuoi account AWS e le tue applicazioni cloud.

  • AWS Tools for PowerShell è un set di PowerShell moduli che ti aiutano a creare script di operazioni sulle tue risorse AWS dalla PowerShell riga di comando.

Altri strumenti

  • PowerShellè un programma di gestione dell'automazione e della configurazione di Microsoft che funziona su Windows, Linux e macOS.

Epiche

AttivitàDescrizioneCompetenze richieste

Prepara la sceneggiatura.

  1. Copia lo PowerShell script nella sezione Informazioni aggiuntive di questo modello.

  2. Nella Param sezione, per il tuo ambiente AWS, definisci i valori per le seguenti variabili:

    • OutputFile— Il nome del file del report.

    • ProfileName— Il profilo denominato della CLI AWS che desideri utilizzare per generare il report.

    • Region— La regione AWS in cui è distribuito IAM Identity Center. Per un elenco completo delle regioni e dei relativi codici, consulta Endpoint regionali.

  3. Salva lo script con il nome SSO-Report.ps1 del file.

Amministratore cloud

Eseguire lo script.

Si consiglia di eseguire lo script personalizzato nella PowerShell shell con il seguente comando.

.\SSO-Report.ps1

In alternativa, è possibile eseguire lo script da un'altra shell immettendo il seguente comando.

pwsh .\SSO-Report.ps1

Lo script genera un file CSV nella stessa directory del file di script.

Amministratore cloud

Analizza i dati del report.

Il file CSV di output contiene le intestazioni AccountNamePermissionSet, Principal e Type. Apri questo file nell'applicazione per fogli di calcolo preferita. È possibile creare una tabella di dati per filtrare e ordinare l'output.

Amministratore cloud

Risoluzione dei problemi

ProblemaSoluzione

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

AWS Tools for PowerShell o i relativi moduli non sono installati. Nella PowerShell shell, inserisci i seguenti comandi per installare AWS Tools for PowerShell e i moduli necessari per questo modello: AWS.Tools.InstallerOrganizations,SSOAdmin, eIdentityStore.

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

Errore No credentials specified or obtained from persisted/shell defaults

Nella sezione Prepara lo script nella sezione Epics, conferma di aver inserito correttamente Region le variabili ProfileName and. Assicurati che le impostazioni e le credenziali nel profilo indicato dispongano di autorizzazioni sufficienti per amministrare IAM Identity Center.

Authenticode Issuer …errore durante l'installazione dei moduli AWS.Tools

Aggiungi il -SkipPublisherCheck parametro alla fine del Install-AWSToolsModule comando.

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

Questo errore può verificarsi quando vengono specificati profili AWS CLI denominati, AWS CLI è configurato per autenticare gli utenti con IAM Identity Center e AWS CLI è configurato per recuperare automaticamente i token di autenticazione aggiornati. Per risolvere questo errore, procedi come segue:

  1. Immettete il comando seguente per confermare che i SSOOIDC moduli SSO and sono installati.

    Install-AWSToolsModule SSO, SSOOIDC
  2. Inserisci le seguenti righe nello script sotto il param() blocco.

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

Risorse correlate

Informazioni aggiuntive

Nel seguente script, stabilisci se è necessario aggiornare i valori per i seguenti parametri:

  • Se utilizzi un profilo denominato nell'interfaccia a riga di comando di AWS per accedere all'account in cui è configurato IAM Identity Center, aggiorna il $ProfileName valore.

  • Se IAM Identity Center è distribuito in una regione AWS diversa dalla regione predefinita per la tua configurazione AWS CLI o AWS SDK, aggiorna $Region il valore per utilizzare la regione in cui è distribuito IAM Identity Center.

  • Se nessuna di queste situazioni si applica, non è richiesto alcun aggiornamento dello script.

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