

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
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell"></a>

*Jorge Pava, Frank Allotta, Manideep Reddy Gillela e Ciad Miles, Amazon Web Services*

## Riepilogo
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-summary"></a>

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 nell'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.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/46c7dc7f-c726-4754-b590-2f09d657b167/images/bbc21d8b-fc5d-4b5d-b159-81197a89823e.png)



| 
| 
| 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
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-prereqs"></a>

**Prerequisiti**
+ IAM Identity Center e AWS Organizations, configurati e abilitati.
+ PowerShell, installato e configurato. Per ulteriori informazioni, vedere [Installazione PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2) (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.Installer``Organizations`,`SSOAdmin`, e`IdentityStore`.

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

  Per ulteriori informazioni, consulta [Installare AWS.Tools su Windows](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up-windows.html#ps-installing-awstools) o [Installare AWS.Tools su Linux o macOS](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up-linux-mac.html#install-aws.tools-on-linux-macos) (AWS Tools per la documentazione). PowerShell Se ricevi un errore durante l'installazione dei moduli, consulta la sezione [Risoluzione dei problemi](#export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-troubleshooting) 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) AWS CLI).
  + 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](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html) (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](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) (documentazione AWS CLI) e [AWS managed policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) (documentazione IAM).

**Limitazioni**
+ Gli account AWS 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](https://github.com/powershell/powershell) o successiva.

## Architecture
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-architecture"></a>

**Architettura Target**

![\[Script che utilizza il profilo denominato AWS CLI per creare un report sulle identità SSO in IAM Identity Center.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/46c7dc7f-c726-4754-b590-2f09d657b167/images/ae5189aa-8197-4a05-88df-7c0294a679a1.png)


1. L'utente esegue lo script in una PowerShell riga di comando.

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

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

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

## Tools (Strumenti)
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-tools"></a>

**Servizi AWS**
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) è 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](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) ti aiuta a gestire centralmente l'accesso Single Sign-On (SSO) a tutti i tuoi account AWS e applicazioni cloud.
+ [AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-welcome.html) è 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](https://learn.microsoft.com/en-us/powershell/)è un programma di gestione dell'automazione e della configurazione di Microsoft che funziona su Windows, Linux e macOS.

## Epiche
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-epics"></a>

### Genera il rapporto
<a name="generate-the-report"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Prepara la sceneggiatura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell.html) | Amministratore cloud | 
| Eseguire lo script. | Si consiglia di eseguire lo script personalizzato nella PowerShell shell con il seguente comando.<pre>.\SSO-Report.ps1</pre>In alternativa, è possibile eseguire lo script da un'altra shell immettendo il seguente comando.<pre>pwsh .\SSO-Report.ps1</pre>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 **AccountName**PermissionSet****, **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
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| 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.Installer``Organizations`,`SSOAdmin`, e`IdentityStore`.<pre>Install-Module AWS.Tools.Installer<br />Install-AWSToolsModule -Name Organizations, SSOAdmin, IdentityStore</pre> | 
| Errore `No credentials specified or obtained from persisted/shell defaults` | Nella sezione *Prepara lo script* nella sezione [Epics](#export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell.html) | 

## Risorse correlate
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-resources"></a>
+ [Dove vengono memorizzate le impostazioni di configurazione?](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-where) (documentazione dell'interfaccia a riga di comando AWS)
+ [Configurazione dell'interfaccia a riga di comando di AWS per l'utilizzo di AWS IAM Identity Center (documentazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html) AWS CLI)
+ [Utilizzo di profili denominati](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) (documentazione AWS CLI)

## Informazioni aggiuntive
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-additional"></a>

Nel seguente script, determina 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
```