Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengekspor laporan identitas AWS IAM Identity Center dan tugasnya dengan menggunakan PowerShell
Jorge Pava, Frank Allotta, Manideep Reddy Gillela, dan Chad Miles, Amazon Web Services
Ringkasan
Bila Anda menggunakan AWS IAM Identity Center (penerus AWS Single Sign-On) untuk mengelola akses masuk tunggal (SSO) secara terpusat ke semua akun Amazon Web Services (AWS) dan aplikasi cloud Anda, melaporkan dan mengaudit tugas tersebut melalui AWS Management Console dapat membosankan dan memakan waktu. Hal ini terutama berlaku jika Anda melaporkan izin untuk pengguna atau grup di lusinan atau ratusan akun AWS.
Bagi banyak orang, alat yang ideal untuk melihat informasi ini adalah dalam aplikasi spreadsheet, seperti Microsoft Excel. Ini dapat membantu Anda memfilter, mencari, dan memvisualisasikan data untuk seluruh organisasi Anda, yang dikelola oleh AWS Organizations.
Pola ini menjelaskan cara menggunakan AWS Tools PowerShell untuk menghasilkan laporan konfigurasi identitas SSO di IAM Identity Center. Laporan diformat sebagai file CSV, dan mencakup nama identitas (prinsipal), tipe identitas (pengguna atau grup), akun yang dapat diakses identitas, dan set izin. Setelah membuat laporan ini, Anda dapat membukanya di aplikasi pilihan Anda untuk mencari, memfilter, dan mengaudit data sesuai kebutuhan. Gambar berikut menunjukkan data sampel dalam aplikasi spreadsheet.

Penting: Karena laporan ini berisi informasi sensitif, kami sangat menyarankan Anda menyimpannya dengan aman dan membagikannya hanya atas need-to-know dasar. |
|---|
Prasyarat dan batasan
Prasyarat
IAM Identity Center dan AWS Organizations, dikonfigurasi dan diaktifkan.
PowerShell, diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal PowerShell
(dokumentasi Microsoft). AWS Tools untuk PowerShell, diinstal, dan dikonfigurasi. Untuk alasan kinerja, kami sangat menyarankan Anda menginstal AWS Tools versi termodulasi untuk PowerShell, yang disebut.
AWS.ToolsSetiap layanan AWS didukung oleh modul kecil individualnya sendiri. Di PowerShell shell, masukkan perintah berikut untuk menginstal modul yang diperlukan untuk pola ini:AWS.Tools.Installer,Organizations,SSOAdmin, danIdentityStore.Install-Module AWS.Tools.Installer Install-AWSToolsModule -Name Organizations, SSOAdmin, IdentityStoreUntuk informasi selengkapnya, lihat Menginstal AWS.tools di Windows atau Menginstal AWS.tools di Linux atau macOS (AWS Tools untuk dokumentasi). PowerShell Jika Anda menerima kesalahan saat menginstal modul, lihat bagian Pemecahan Masalah dari pola ini.
AWS Command Line Interface (AWS CLI) atau AWS SDK harus dikonfigurasi sebelumnya dengan kredensyal yang berfungsi dengan melakukan salah satu hal berikut:
Gunakan AWS CLI
aws configureUntuk informasi selengkapnya, lihat Konfigurasi cepat (dokumentasi AWS CLI).Konfigurasikan AWS CLI atau AWS Cloud Development Kit (AWS CDK) untuk mendapatkan akses sementara melalui peran AWS Identity and Access Management (IAM). Untuk informasi selengkapnya, lihat Mendapatkan kredensyal peran IAM untuk akses CLI (dokumentasi Pusat Identitas IAM).
Profil bernama untuk AWS CLI yang telah menyimpan kredensyal untuk prinsipal IAM yang:
Memiliki akses ke akun manajemen AWS Organizations atau akun administrator yang didelegasikan untuk IAM Identity Center
Apakah kebijakan terkelola
AWSSSOReadOnlydanAWSSSODirectoryReadOnlyAWS telah diterapkan padanya
Untuk informasi selengkapnya, lihat Menggunakan profil bernama (dokumentasi AWS CLI) dan kebijakan terkelola AWS (dokumentasi IAM).
Batasan
Akun AWS target harus dikelola sebagai organisasi di AWS Organizations.
Versi produk
Untuk semua sistem operasi, disarankan agar Anda menggunakan PowerShell versi 7.0
atau yang lebih baru.
Arsitektur
Arsitektur target

Pengguna menjalankan skrip dalam PowerShell baris perintah.
Skrip mengasumsikan profil bernama untuk AWS CLI. Ini memberikan akses ke Pusat Identitas IAM.
Skrip mengambil konfigurasi identitas SSO dari IAM Identity Center.
Skrip menghasilkan file CSV di direktori yang sama di workstation lokal tempat skrip disimpan.
Alat
Layanan AWS
AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
AWS IAM Identity Center membantu Anda mengelola akses masuk tunggal (SSO) secara terpusat ke semua akun AWS dan aplikasi cloud Anda.
AWS Tools for PowerShell adalah seperangkat PowerShell modul yang membantu Anda menjalankan skrip pada sumber daya AWS Anda dari baris PowerShell perintah.
Alat-alat lainnya
PowerShell
adalah program manajemen otomatisasi dan konfigurasi Microsoft yang berjalan di Windows, Linux, dan macOS.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan naskahnya. |
| Administrator awan |
Jalankan penulisan. | Disarankan agar Anda menjalankan skrip kustom Anda di PowerShell shell dengan perintah berikut.
Atau, Anda dapat menjalankan skrip dari shell lain dengan memasukkan perintah berikut.
Skrip menghasilkan file CSV di direktori yang sama dengan file skrip. | Administrator awan |
Menganalisis data laporan. | File CSV keluaran memiliki header AccountName,, Principal PermissionSet, dan Type. Buka file ini di aplikasi spreadsheet pilihan Anda. Anda dapat membuat tabel data untuk memfilter dan mengurutkan output. | Administrator awan |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
| AWS Tools untuk PowerShell atau modulnya tidak diinstal. Di PowerShell shell, masukkan perintah berikut untuk menginstal AWS Tools PowerShell dan modul yang diperlukan untuk pola ini:
|
| Di Siapkan skrip di bagian Epik, konfirmasikan bahwa Anda telah memasukkan |
| Tambahkan |
| Kesalahan ini dapat terjadi ketika profil AWS CLI bernama ditentukan, AWS CLI dikonfigurasi untuk mengautentikasi pengguna dengan IAM Identity Center, dan AWS CLI dikonfigurasi untuk secara otomatis mengambil token otentikasi yang diperbarui. Untuk mengatasi kesalahan ini, lakukan hal berikut:
|
Sumber daya terkait
Di mana pengaturan konfigurasi disimpan? (Dokumentasi AWS CLI)
Mengonfigurasi AWS CLI untuk menggunakan AWS IAM Identity Center (dokumentasi AWS CLI)
Menggunakan profil bernama (dokumentasi AWS CLI)
Informasi tambahan
Dalam skrip berikut, tentukan apakah Anda perlu memperbarui nilai untuk parameter berikut:
Jika Anda menggunakan profil bernama di AWS CLI untuk mengakses akun tempat Pusat Identitas IAM dikonfigurasi, perbarui nilainya.
$ProfileNameJika Pusat Identitas IAM diterapkan di Wilayah AWS yang berbeda dari Wilayah default untuk konfigurasi AWS CLI atau AWS SDK Anda, perbarui
$Regionnilainya untuk menggunakan Wilayah tempat Pusat Identitas IAM diterapkan.Jika tidak satu pun dari situasi ini berlaku, maka tidak diperlukan pembaruan skrip.
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