

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Exporte um relatório das identidades do AWS IAM Identity Center e suas atribuições usando 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 Chad Miles, Amazon Web Services*

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

Quando você usa o Centro de Identidade do AWS IAM [(sucessor do AWS autenticação única (SSO)] para gerenciar centralmente a autenticação única (SSO) a todas as suas contas e aplicativos na nuvem da Amazon Web Services (AWS), relatar e auditar essas atribuições por meio do Console de Gerenciamento da AWS pode ser entediante e demorado. Isso é especialmente verdadeiro se você estiver relatando permissões para um usuário ou grupo em dezenas ou centenas de contas da AWS.

Para muitos, a ferramenta ideal para visualizar essas informações seria em um aplicativo de planilhas, como o Microsoft Excel. Isso pode ajudar você a filtrar, pesquisar e visualizar os dados de toda a sua organização, gerenciados pelo AWS Organizations.

Esse padrão descreve como usar as ferramentas da AWS PowerShell para gerar um relatório das configurações de identidade de SSO no IAM Identity Center. O relatório é formatado como um arquivo CSV e inclui o nome da identidade (principal), o tipo de identidade (usuário ou grupo), as contas que a identidade pode acessar e os conjuntos de permissões. Depois de gerar esse relatório, você pode abri-lo em seu aplicativo preferido para pesquisar, filtrar e auditar os dados conforme necessário. A imagem a seguir mostra dados de amostra em um aplicativo de planilha.

![\[PowerShell resultados do script visualizados no aplicativo de planilhas.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/46c7dc7f-c726-4754-b590-2f09d657b167/images/bbc21d8b-fc5d-4b5d-b159-81197a89823e.png)



| 
| 
| Importante: como esse relatório contém informações confidenciais, é altamente recomendável que você as armazene com segurança e as compartilhe somente de forma específica. need-to-know | 
| --- |

## Pré-requisitos e limitações
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-prereqs"></a>

**Pré-requisitos **
+ Centro de Identidade IAM e AWS Organizations, configurados e habilitados.
+ O PowerShell instalado e configurado. Para obter mais informações, consulte [Instalando PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2) (documentação da Microsoft).
+ AWS Tools para PowerShell, instaladas e configuradas. Por motivos de desempenho, é altamente recomendável que você instale a versão modularizada do AWS Tools for PowerShell, chamada. `AWS.Tools` Cada serviço da AWS é compatível com seu próprio módulo individual pequeno. No PowerShell shell, insira os seguintes comandos para instalar os módulos necessários para esse padrão: `AWS.Tools.Installer` `Organizations``SSOAdmin`,, `IdentityStore` e.

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

  Para obter mais informações, consulte [Instalar o AWS.Tools no Windows](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up-windows.html#ps-installing-awstools) ou [Instalar o AWS.Tools no Linux ou macOS](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up-linux-mac.html#install-aws.tools-on-linux-macos) (AWS Tools para documentação). PowerShell Se você receber um erro ao instalar os módulos, consulte a seção [Solução de problemas](#export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-troubleshooting) desse padrão.
+ A AWS Command Line Interface (AWS CLI) ou o AWS SDK devem ser previamente configurados com credenciais de trabalho de uma das seguintes maneiras:
  + Usar a AWS CLI `aws configure` Para obter mais informações, consulte [Configuração rápida](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) (documentação da AWS CLI).
  + Configure a AWS CLI ou o AWS Cloud Development Kit (AWS CDK) para obter acesso temporário por meio de um perfil do AWS Identity and Access Management (IAM). Para obter mais informações, consulte [Obter credenciais de perfil do IAM para acesso à CLI](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html) (documentação do Centro de Identidade IAM).
+ Um perfil nomeado para a AWS CLI que salvou as credenciais de uma entidade principal do IAM que:
  + Tem acesso à conta de gerenciamento do AWS Organizations ou à conta de administrador delegado do Centro de Identidade IAM
  + `AWSSSOReadOnly` e as políticas gerenciadas pela AWS `AWSSSODirectoryReadOnly` foram aplicadas a ele?

  Para obter mais informações, consulte [Uso de perfis nomeados](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) (documentação da AWS CLI) e [Políticas gerenciadas pela AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) (documentação do IAM).

**Limitações**
+ As contas de destino da AWS devem ser gerenciadas como uma organização no AWS Organizations.

**Versões do produto**
+ Para todos os sistemas operacionais, é recomendável usar a [PowerShell versão 7.0](https://github.com/powershell/powershell) ou posterior.

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

**Arquitetura de destino**

![\[Script usando o perfil nomeado da AWS CLI para criar um relatório de identidades de SSO no Centro de Identidade IAM.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/46c7dc7f-c726-4754-b590-2f09d657b167/images/ae5189aa-8197-4a05-88df-7c0294a679a1.png)


1. O usuário executa o script em uma linha de PowerShell comando.

1. O script assume o perfil nomeado para a AWS CLI. Isso concede acesso ao Centro de identidade IAM.

1. O script recupera as configurações de identidade de SSO do Centro de identidade IAM.

1. O script gera um arquivo CSV no mesmo diretório na estação de trabalho local em que o script é salvo.

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

**Serviços da AWS**
+ A ‭[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
+ O [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) ajuda você a gerenciar centralmente o acesso à autenticação única (SSO) a todas as suas contas e aplicativos na nuvem da AWS.
+ As [ferramentas da AWS para PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-welcome.html) são um conjunto de PowerShell módulos que ajudam você a criar scripts de operações em seus recursos da AWS a partir da linha de PowerShell comando.

**Outras ferramentas**
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)é um programa de gerenciamento de automação e configuração da Microsoft executado em Windows, Linux e macOS.

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

### Gerar o relatório
<a name="generate-the-report"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Preparar o script. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell.html) | Administrador de nuvem | 
| Executar o script. | É recomendável que você execute seu script personalizado no PowerShell shell com o comando a seguir.<pre>.\SSO-Report.ps1</pre>Como alternativa, você pode executar o script de outro shell digitando o comando a seguir.<pre>pwsh .\SSO-Report.ps1</pre>O script gera um arquivo CSV no mesmo diretório do arquivo de script. | Administrador de nuvem | 
| Analisar os dados do relatório. | **O arquivo CSV de saída tem os cabeçalhos **AccountName**PermissionSet****, **Principal** e Tipo.** Abra esse arquivo no aplicativo de planilhas de sua preferência. Você pode criar uma tabela de dados para filtrar e classificar a saída. | Administrador de nuvem | 

## Solução de problemas
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Erro `The term ‘Get-<parameter>’ is not recognized as the name of a cmdlet, function, script file, or operable program.` | O AWS Tools for PowerShell ou seus módulos não estão instalados. No PowerShell shell, insira os seguintes comandos para instalar o AWS Tools PowerShell e os módulos necessários para esse padrão: `AWS.Tools.Installer` `Organizations``SSOAdmin`,, `IdentityStore` e.<pre>Install-Module AWS.Tools.Installer<br />Install-AWSToolsModule -Name Organizations, SSOAdmin, IdentityStore</pre> | 
| Erro `No credentials specified or obtained from persisted/shell defaults` | Em *Preparar o script* na seção [Épicos](#export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-epics), confirme se você inseriu corretamente as variáveis `ProfileName` e `Region`. Certifique-se de que as configurações e credenciais no perfil nomeado tenham permissões suficientes para administrar o Centro de Identidade IAM. | 
| Erro `Authenticode Issuer …` ao instalar os módulos das ferramentas da AWS | Adicione o parâmetro `-SkipPublisherCheck` no fim do comando `Install-AWSToolsModule`. | 
| Erro `Get-ORGAccountList : Assembly AWSSDK.SSO could not be found or loaded.` | Esse erro pode ocorrer quando perfis nomeados da AWS CLI são especificados, a AWS CLI é configurado para autenticar usuários com o Centro de Identidade IAM e a AWS CLI está configurado para recuperar automaticamente tokens de autenticação atualizados. Para corrigir esse erro, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell.html) | 

## Recursos relacionados
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-resources"></a>
+ [Onde as definições de configuração ficam armazenadas?](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-where) (Documentação da AWS CLI)
+ [Configurar a AWS CLI para usar o Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html) (documentação da AWS CLI)
+ [Usar perfis nomeados](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) (documentação da AWS CLI)

## Mais informações
<a name="export-a-report-of-aws-iam-identity-center-identities-and-their-assignments-by-using-powershell-additional"></a>

No script a seguir, determine se você precisa atualizar os valores dos seguintes parâmetros:
+ Se você estiver usando um perfil nomeado na AWS CLI para acessar a conta na qual o Centro de Identidade IAM está configurado, atualize o valor `$ProfileName`. 
+ Se o Centro de Identidade IAM for implantado em uma região da AWS diferente da região padrão para sua configuração da AWS CLI ou do AWS SDK, atualize o valor `$Region` para usar a região em que o Centro de Identidade IAM está implantado.
+ Se nenhuma dessas situações se aplicar, nenhuma atualização de script será necessária.

```
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
```