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
Criado por Jorge Pava (AWS), Chad Miles (), Frank Allotta (AWS) e Manideep Reddy Gillela (AWS) AWS
Ambiente: produção | Tecnologias: segurança, identidade, conformidade; gerenciamento e governança | Workload: Microsoft |
AWSserviços: IAM Identity Center; AWS Ferramentas para PowerShell |
Resumo
Quando você usa o AWS IAM Identity Center (sucessor do AWS Single Sign-On) para gerenciar centralmente o acesso de single sign-on (SSO) a todas as suas contas e aplicativos na nuvem da Amazon Web Services (AWS), relatar e auditar essas atribuições por meio do AWS Management Console pode ser entediante e demorado. Isso é especialmente verdadeiro se você estiver relatando as permissões de um usuário ou grupo em dezenas ou centenas de AWS contas.
Para muitos, a ferramenta ideal para visualizar essas informações seria em um aplicativo de planilhas, como o Microsoft Excel. Isso pode ajudá-lo a filtrar, pesquisar e visualizar os dados de toda a sua organização, gerenciados por AWS Organizations.
Esse padrão descreve como usar AWS as Ferramentas PowerShell para gerar um relatório de configurações de SSO IAM identidade no Identity Center. O relatório é formatado como um CSV arquivo 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.
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
Pré-requisitos
IAMIdentity Center and AWS Organizations, configurados e habilitados.
PowerShell, instalado e configurado. Para obter mais informações, consulte Instalando PowerShell
(documentação da Microsoft). AWSFerramentas 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 AWS serviço é suportado por seu próprio módulo pequeno e individual. 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 AWS .Tools no Windows ou Instalar AWS .Tools no Linux ou macOS (AWSFerramentas para documentação). PowerShell Se você receber um erro ao instalar os módulos, consulte a seção Solução de problemas desse padrão.
AWSA interface de linha de comando (AWSCLI) ou a AWS SDK deve ser configurada anteriormente com credenciais de trabalho, fazendo o seguinte:
Use o AWS CLI
aws configure
Para obter mais informações, consulte Configuração rápida (AWSCLIdocumentação).Configure AWS CLI nosso AWS Cloud Development Kit (AWSCDK) para obter acesso temporário por meio de uma função de AWS Identity and Access Management (IAM). Para obter mais informações, consulte Obter credenciais de IAM função para CLI acesso (documentação do IAM Identity Center).
Um perfil nomeado para o AWS CLI que salvou as credenciais de um IAM diretor que:
Tem acesso à conta de gerenciamento do AWS Organizations ou à conta de administrador delegado do IAM Identity Center
As políticas
AWSSSODirectoryReadOnly
AWS gerenciadasAWSSSOReadOnly
e as aplicadas a ele
Para obter mais informações, consulte Usando perfis nomeados (AWSCLIdocumentação) e políticas AWS gerenciadas (IAMdocumentação).
Limitações
As AWS contas de destino devem ser gerenciadas como uma organização em AWS Organizations.
Versões do produto
Para todos os sistemas operacionais, é recomendável usar a PowerShell versão 7.0
ou posterior.
Arquitetura
Arquitetura de destino
O usuário executa o script em uma linha de PowerShell comando.
O script assume o perfil nomeado para AWSCLI. Isso concede acesso ao IAM Identity Center.
O script recupera as configurações de SSO identidade do IAM Identity Center.
O script gera um CSV arquivo no mesmo diretório na estação de trabalho local em que o script é salvo.
Ferramentas
AWSserviços
AWSA interface de linha de comando (AWSCLI) é uma ferramenta de código aberto que ajuda você a interagir com AWS serviços por meio de comandos em seu shell de linha de comando.
AWSIAMO Identity Center ajuda você a gerenciar centralmente o acesso de login único (SSO) a todas as suas AWS contas e aplicativos na nuvem.
AWSAs ferramentas para PowerShell são um conjunto de PowerShell módulos que ajudam você a criar scripts de operações em seus AWS recursos a partir da linha de PowerShell comando.
Outras ferramentas
PowerShell
é um programa de gerenciamento de automação e configuração da Microsoft executado em Windows, Linux e macOS.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Preparar o script. |
| Administrador de nuvem |
Executar o script. | É recomendável que você execute seu script personalizado no PowerShell shell com o comando a seguir.
Como alternativa, você pode executar o script de outro shell digitando o comando a seguir.
O script gera um CSV arquivo no mesmo diretório do arquivo de script. | Administrador de nuvem |
Analisar os dados do relatório. | O CSV arquivo de saída tem os cabeçalhos AccountNamePermissionSet, Principal e Type. 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
Problema | Solução |
---|---|
Erro do | AWSAs ferramentas PowerShell ou seus módulos não estão instalados. No PowerShell shell, insira os seguintes comandos para instalar o AWS Tools for PowerShell e os módulos necessários para esse padrão:
|
Erro do | Em Preparar o script na seção Épicos, confirme se você inseriu corretamente as variáveis |
| Adicione o parâmetro |
Erro do | Esse erro pode ocorrer quando AWS CLI perfis nomeados são especificados, AWS CLI configurados para autenticar usuários com o IAM Identity Center e AWS CLI para recuperar automaticamente tokens de autenticação atualizados. Para corrigir esse erro, faça o seguinte:
|
Recursos relacionados
Onde as definições de configuração ficam armazenadas? (AWSCLIdocumentação)
Configurando o AWS IAM Identity Center AWS CLI para usar (AWSCLIdocumentação)
Usando perfis nomeados (AWSCLIdocumentação)
Mais informações
No script a seguir, determine se você precisa atualizar os valores dos seguintes parâmetros:
Se você estiver usando um perfil nomeado AWS CLI para acessar a conta na qual o IAM Identity Center está configurado, atualize o
$ProfileName
valor.Se o IAM Identity Center for implantado em uma AWS região diferente da região padrão para sua AWS SDK configuração AWS CLI ou configuração, atualize o
$Region
valor para usar a região em que o IAM Identity Center 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