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.
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.Installer
Organizations
,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:
AWSCLI
aws configure
Per 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 politicheAWSSSODirectoryReadOnly
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
Per tutti i sistemi operativi, si consiglia di utilizzare la PowerShell versione 7.0
o successiva.
Architettura
Architettura Target
L'utente esegue lo script in una PowerShell riga di comando.
Lo script presuppone il profilo denominato per AWSCLI. Ciò consente l'accesso a IAM Identity Center.
Lo script recupera le configurazioni delle SSO identità da IAM Identity Center.
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à | Descrizione | Competenze richieste |
---|---|---|
Prepara la sceneggiatura. |
| Amministratore cloud |
Eseguire lo script. | Si consiglia di eseguire lo script personalizzato nella PowerShell shell con il seguente comando.
In alternativa, è possibile eseguire lo script da un'altra shell immettendo il seguente comando.
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
Problema | Soluzione |
---|---|
Errore | 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:
|
Errore | In Prepara lo script nella sezione Epics, conferma di aver inserito correttamente |
| Aggiungere il |
Errore | 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:
|
Risorse correlate
Dove vengono memorizzate le impostazioni di configurazione? (AWSCLIdocumentazione)
Configurazione dell'utilizzo AWS CLI di AWS IAM Identity Center (AWSCLIdocumentazione)
Utilizzo di profili denominati (AWSCLIdocumentazione)
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