Esporta un rapporto sulle AWS IAM identità di Identity Center e le 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 rapporto sulle AWS IAM identità di Identity Center e le relative assegnazioni utilizzando PowerShell

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

Ambiente: produzione

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

Carico di lavoro: Microsoft

AWSservizi: IAM Identity Center; AWS Strumenti 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 i tuoi account Amazon Web Services (AWS) e alle applicazioni cloud, la segnalazione e il controllo di tali assegnazioni tramite la Console di AWS gestione possono essere noiosi e richiedere molto tempo. Ciò è particolarmente vero se stai generando report sulle autorizzazioni di un utente o di 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 gli strumenti per PowerShell generare un report sulle configurazioni delle SSO IAM identità in Identity Center. Il report è formattato come CSV file 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, è possibile aprirlo nell'applicazione preferita per cercare, filtrare e controllare i dati in base alle esigenze. 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

  • IAMIdentity Center and AWS Organizations, configurati e abilitati.

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

  • AWSStrumenti 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 AWS servizio è 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 (AWSstrumenti per la documentazione). PowerShell Se ricevi un errore durante l'installazione dei moduli, consulta la sezione Risoluzione dei problemi di questo schema.

  • AWSL'interfaccia a riga di comando (AWSCLI) o la AWS SDK devono essere precedentemente configurate con credenziali di lavoro effettuando una delle seguenti operazioni:

    • AWSCLIaws configurePer ulteriori informazioni, vedere Configurazione rapida (AWSCLIdocumentazione).

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

  • Un profilo denominato per il quale sono state salvate le credenziali per un IAM principale AWS CLI che:

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

    • Le politiche AWSSSOReadOnly e le politiche AWSSSODirectoryReadOnly AWS gestite sono state applicate

    Per ulteriori informazioni, vedere Utilizzo di profili denominati (AWSCLIdocumentazione) e politiche AWS gestite (IAMdocumentazione).

Limitazioni

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

Versioni del prodotto

Architettura

Architettura Target

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

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

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

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

Strumenti

AWSservizi

  • AWSCommand Line Interface (AWSCLI) è uno strumento open source che consente di interagire con i AWS servizi tramite comandi nella shell della riga di comando.

  • AWSIAMIdentity Center ti aiuta a gestire centralmente l'accesso Single Sign-on (SSO) a tutti i tuoi AWS account e applicazioni cloud.

  • AWSGli strumenti per PowerShell sono un insieme di PowerShell moduli che consentono di eseguire operazioni di script sulle AWS risorse 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, relativa al tuo AWS ambiente, definisci i valori per le seguenti variabili:

    • OutputFile— Il nome del file del rapporto.

    • ProfileName— Il profilo AWS CLI denominato che si desidera utilizzare per generare il rapporto.

    • Region— La AWS regione 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 CSV file nella stessa directory del file di script.

Amministratore cloud

Analizza i dati del report.

Il CSV file 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.

AWSGli strumenti 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

In 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 IAM amministrare Identity Center.

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

Aggiungere 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 AWS CLI profili denominati, AWS CLI è configurato per autenticare gli utenti con IAM Identity Center ed 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, stabilite se è necessario aggiornare i valori per i seguenti parametri:

  • Se stai utilizzando un profilo denominato AWS CLI per accedere all'account in cui è configurato IAM Identity Center, aggiorna il $ProfileName valore.

  • Se IAM Identity Center è distribuito in una AWS regione diversa da quella predefinita per la tua AWS SDK configurazione AWS CLI o la tua configurazione, aggiorna il $Region 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