Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasikan identitas federasi dengan AWS Tools for PowerShell
Agar pengguna di organisasi Anda dapat mengakses AWS sumber daya, Anda harus mengonfigurasi metode otentikasi standar dan berulang untuk tujuan keamanan, auditabilitas, kepatuhan, dan kemampuan untuk mendukung pemisahan peran dan akun. Meskipun umum untuk menyediakan pengguna dengan kemampuan untuk mengakses AWS APIs, tanpa akses federasiAPI, Anda juga harus membuat AWS Identity and Access Management (IAM) pengguna, yang mengalahkan tujuan menggunakan federasi. Topik ini menjelaskan dukungan SAML (Security Assertion Markup Language) AWS Tools for PowerShell yang memudahkan solusi akses federasi Anda.
SAMLdukungan dalam AWS Tools for PowerShell memungkinkan Anda memberikan pengguna Anda akses federasi ke AWS
layanan. SAMLadalah format standar terbuka XML berbasis untuk mentransmisikan otentikasi pengguna dan data otorisasi antar layanan; khususnya, antara penyedia identitas (seperti Layanan Federasi Direktori Aktif
Prasyarat
Anda harus memiliki yang berikut sebelum Anda mencoba menggunakan SAML dukungan untuk pertama kalinya.
-
Solusi identitas federasi yang terintegrasi dengan benar dengan akun AWS Anda untuk akses konsol dengan menggunakan hanya kredensial organisasi Anda. Untuk informasi selengkapnya tentang cara melakukannya secara khusus untuk Layanan Federasi Direktori Aktif, lihat Tentang Federasi SAML 2.0 di Panduan IAM Pengguna, dan posting blog, Mengaktifkan Federasi untuk AWS Menggunakan Windows Active Directory, AD FS, dan SAML 2.0
. Meskipun posting blog mencakup AD FS 2.0, langkah-langkahnya serupa jika Anda menjalankan AD FS 3.0. -
Versi 3.1.31.0 atau yang lebih baru AWS Tools for PowerShell diinstal pada workstation lokal Anda.
Bagaimana Pengguna Federasi Identitas Mendapat Akses Federasi ke Layanan AWS APIs
Proses berikut menjelaskan, pada tingkat tinggi, bagaimana pengguna Active Directory (AD) digabungkan oleh AD FS untuk mendapatkan akses ke AWS sumber daya.
![Diagram showing federated user access flow to AWS resources via AD FS and Security Token Service.](images/powershell_ADFSauth_using_vsd.png)
-
Klien pada komputer pengguna gabungan mengotentikasi terhadap AD FS.
-
Jika otentikasi berhasil, AD FS mengirimkan pernyataan kepada pengguna. SAML
-
Klien pengguna mengirimkan SAML pernyataan ke AWS Security Token Service (STS) sebagai bagian dari permintaan SAML federasi.
-
STSmengembalikan SAML respons yang berisi kredensil AWS sementara untuk peran yang dapat diasumsikan pengguna.
-
Pengguna mengakses AWS layanan APIs dengan memasukkan kredensil sementara tersebut dalam permintaan yang dibuat oleh. AWS Tools for PowerShell
Bagaimana SAML Support Bekerja di AWS Tools for PowerShell
Bagian ini menjelaskan bagaimana AWS Tools for PowerShell cmdlet mengaktifkan konfigurasi federasi identitas SAML berbasis untuk pengguna.
![Diagram showing SAML-based federation flow between organization, AD FS, AWS, and service APIs.](images/Powershell_SamlAuth_using_vsd.png)
-
AWS Tools for PowerShell mengautentikasi terhadap AD FS dengan menggunakan kredensil pengguna Windows saat ini, atau secara interaktif, saat pengguna mencoba menjalankan cmdlet yang memerlukan kredensil untuk dipanggil. AWS
-
AD FS mengotentikasi pengguna.
-
AD FS menghasilkan respons otentikasi SAML 2.0 yang mencakup pernyataan; tujuan pernyataan adalah untuk mengidentifikasi dan memberikan informasi tentang pengguna. AWS Tools for PowerShell mengekstrak daftar peran resmi pengguna dari SAML pernyataan.
-
AWS Tools for PowerShell meneruskan SAML permintaan, termasuk Amazon Resource Names (ARN) peran yang diminta, ke STS dengan melakukan
AssumeRoleWithSAMLRequest
API panggilan. -
Jika SAML permintaan valid, STS mengembalikan respon yang berisi AWS
AccessKeyId
,SecretAccessKey
, danSessionToken
. Kredensial ini berlangsung selama 3.600 detik (1 jam). -
Pengguna sekarang memiliki kredensi yang valid untuk bekerja dengan AWS layanan apa pun APIs yang diizinkan untuk diakses oleh peran pengguna. AWS Tools for PowerShell secara otomatis menerapkan kredensil ini untuk setiap AWS API panggilan berikutnya, dan memperbaruinya secara otomatis ketika mereka kedaluwarsa.
catatan
Ketika kredensial berakhir, dan mandat baru diperlukan, AWS Tools for PowerShell secara otomatis mengotentikasi ulang dengan AD FS, dan memperoleh kredensial baru untuk jam berikutnya. Untuk pengguna dengan akun tergabung domain, proses ini terjadi secara diam-diam. Untuk akun yang tidak bergabung dengan domain, AWS Tools for PowerShell meminta pengguna untuk memasukkan kredensialnya sebelum mereka dapat mengautentikasi ulang.
Cara Menggunakan Cmdlet PowerShell SAML Konfigurasi
AWS Tools for PowerShell termasuk dua cmdlet baru yang memberikan SAML dukungan.
-
Set-AWSSamlEndpoint
mengkonfigurasi titik akhir AD FS Anda, menetapkan nama yang mudah untuk titik akhir, dan dapat memilih menjelaskan jenis autentikasi titik akhir. -
Set-AWSSamlRoleProfile
membuat atau mengedit profil akun pengguna yang ingin Anda kaitkan dengan titik akhir AD FS, diidentifikasi dengan menentukan nama yang mudah yang Anda berikan untuk cmdletSet-AWSSamlEndpoint
. Setiap profil peran memetakan peran tunggal yang dapat dilaksanakan secara sah oleh pengguna.Sama seperti profil AWS kredensi, Anda menetapkan nama ramah ke profil peran. Anda dapat menggunakan nama ramah yang sama dengan
Set-AWSCredential
cmdlet, atau sebagai nilai-ProfileName
parameter untuk cmdlet apa pun yang memanggil layanan. AWS APIs
Buka AWS Tools for PowerShell sesi baru. Jika Anda menjalankan PowerShell 3.0 atau yang lebih baru, AWS Tools for PowerShell modul secara otomatis diimpor saat Anda menjalankan salah satu cmdletnya. Jika Anda menjalankan PowerShell 2.0, Anda harus mengimpor modul secara manual dengan menjalankan cmdlet ``Import-Module``, seperti yang ditunjukkan pada contoh berikut.
PS >
Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"
Cara Menjalankan Cmdlet Set-AWSSamlEndpoint
dan Set-AWSSamlRoleProfile
-
Pertama, konfigurasikan pengaturan titik akhir untuk sistem AD FS. Cara termudah untuk melakukan hal ini adalah dengan menyimpan titik akhir dalam sebuah variabel, seperti yang ditunjukkan pada langkah ini. Pastikan untuk mengganti akun placeholder IDs dan nama host AD FS dengan akun Anda sendiri IDs dan nama host AD FS. Menentukan nama host AD FS di parameter
Endpoint
.PS >
$endpoint = "https://
adfs.example.com
/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices" -
Untuk membuat pengaturan titik akhir, jalankan cmdlet
Set-AWSSamlEndpoint
, yang menyebutkan nilai yang benar untuk parameterAuthenticationType
. Nilai yang valid termasukBasic
,Digest
,Kerberos
,Negotiate
, danNTLM
. Jika Anda tidak menentukan parameter ini, maka nilai default adalahKerberos
.PS >
$epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs
ADFS-Demo
-AuthenticationType NTLMCmdlet mengembalikan nama mudah yang Anda tetapkan menggunakan parameter
-StoreAs
, sehingga Anda dapat menggunakannya ketika Anda menjalankanSet-AWSSamlRoleProfile
di baris berikutnya. -
Sekarang, jalankan
Set-AWSSamlRoleProfile
cmdlet untuk mengautentikasi dengan penyedia identitas AD FS dan dapatkan kumpulan peran (dalam SAML pernyataan) yang diizinkan oleh pengguna untuk melakukan.Cmdlet
Set-AWSSamlRoleProfile
menggunakan set peran yang dikembalikan untuk meminta pengguna untuk memilih peran untuk mengasosiasikan dengan profil tertentu, atau memvalidasi bahwa data peran yang disediakan dalam parameter sudah ada (jika tidak, pengguna diminta untuk memilih). Jika pengguna diizinkan hanya untuk satu peran, cmdlet akan mengaitkan peran tersebut dengan profil secara otomatis, tanpa meminta pengguna. Tidak perlu memberikan kredensial untuk mengatur profil untuk penggunaan tergabung domain.PS >
Set-AWSSamlRoleProfile -StoreAs
SAMLDemoProfile
-EndpointName $epNameAtau, untuk non-domain-joined akun, Anda dapat memberikan kredensi Direktori Aktif, lalu pilih AWS peran yang dapat diakses pengguna, seperti yang ditunjukkan pada baris berikut. Ini berguna jika Anda memiliki akun pengguna Direktori Aktif yang berbeda untuk membedakan peran dalam organisasi Anda (misalnya, fungsi administrasi).
PS >
$credential = Get-Credential -Message "Enter the domain credentials for the endpoint"
PS >
Set-AWSSamlRoleProfile -EndpointName $epName -NetworkCredential $credential -StoreAs
SAMLDemoProfile
-
Dalam kedua kasus, cmdlet
Set-AWSSamlRoleProfile
meminta Anda untuk memilih peran mana yang harus disimpan dalam profil. Contoh berikut menunjukkan dua peran yang tersedia:ADFS-Dev
, danADFS-Production
. IAMPeran tersebut terkait dengan kredensil login AD Anda oleh administrator AD FS.Select Role Select the role to be assumed when this profile is active [1] 1 - ADFS-Dev [2] 2 - ADFS-Production [?] Help (default is "1"):
Pilihan lainnya, Anda dapat menentukan peran tanpa permntaan tersebut, dengan memasukkan parameter
RoleARN
,PrincipalARN
, atau memilihNetworkCredential
. Jika peran yang ditentukan tidak tercantum dalam pernyataan yang dikembalikan oleh autentikasi, pengguna diminta untuk memilih dari peran yang tersedia.PS >
$params = @{ "NetworkCredential"=$credential, "PrincipalARN"="{arn:aws:iam::012345678912:saml-provider/ADFS}", "RoleARN"="{arn:aws:iam::012345678912:role/ADFS-Dev}" }
PS >
$epName | Set-AWSSamlRoleProfile @params -StoreAs SAMLDemoProfile1 -Verbose
-
Anda dapat membuat profil untuk semua peran dalam satu perintah dengan menambahkan parameter
StoreAllRoles
, seperti yang ditunjukkan dalam kode berikut. Perhatikan bahwa nama peran digunakan sebagai nama profil.PS >
Set-AWSSamlRoleProfile -EndpointName $epName -StoreAllRoles
ADFS-Dev ADFS-Production
Cara Menggunakan Profil Peran untuk Menjalankan Cmdlet yang Memerlukan Kredensil AWS
Untuk menjalankan cmdlet yang memerlukan AWS kredensil, Anda dapat menggunakan profil peran yang ditentukan dalam file kredensi AWS bersama. Berikan nama profil peran ke Set-AWSCredential
(atau sebagai nilai untuk ProfileName
parameter apa pun di AWS Tools for PowerShell) untuk mendapatkan AWS kredensil sementara secara otomatis untuk peran yang dijelaskan dalam profil.
Meskipun Anda menggunakan hanya satu profil peran pada satu waktu, Anda dapat beralih profil dalam sesi shell. Cmdlet Set-AWSCredential
tidak mengotentikasi dan mendapatkan kredensial saat Anda menjalankannya sendiri; catatan cmdlet mencatat bahwa Anda ingin menggunakan profil peran tertentu. Sampai Anda menjalankan cmdlet yang memerlukan kredensial AWS
, tidak ada autentikasi atau permintaan untuk kredensial yang terjadi.
Anda sekarang dapat menggunakan AWS kredensil sementara yang Anda peroleh dengan SAMLDemoProfile
profil untuk bekerja dengan AWS layanan. APIs Bagian berikut menunjukkan contoh cara menggunakan profil peran.
Contoh 1: Mengatur Peran Default dengan Set-AWSCredential
Contoh ini menetapkan peran default untuk AWS Tools for PowerShell sesi dengan menggunakanSet-AWSCredential
. Kemudian, Anda dapat menjalankan cmdlet yang memerlukan kredensial, dan diizinkan oleh peran yang ditentukan. Contoh ini berisi daftar semua instans Amazon Elastic Compute Cloud di Wilayah US West (Oregon) yang terkait dengan profil yang Anda tentukan dengan cmdlet Set-AWSCredential
.
PS >
Set-AWSCredential -ProfileName SAMLDemoProfile
PS >
Get-EC2Instance -Region us-west-2 | Format-Table -Property Instances,GroupNames
Instances GroupNames --------- ---------- {TestInstance1} {default} {TestInstance2} {} {TestInstance3} {launch-wizard-6} {TestInstance4} {default} {TestInstance5} {} {TestInstance6} {AWS-OpsWorks-Default-Server}
Contoh 2: Ubah Profil Peran Selama PowerShell Sesi
Contoh ini mencantumkan semua bucket Amazon S3 yang tersedia di AWS akun peran yang terkait dengan profil. SAMLDemoProfile
Contoh menunjukkan bahwa meskipun Anda mungkin telah menggunakan profil lain di awal AWS Tools for PowerShell sesi Anda, Anda dapat mengubah profil dengan menentukan nilai yang berbeda untuk -ProfileName
parameter dengan cmdlet yang mendukungnya. Ini adalah tugas umum bagi administrator yang mengelola Amazon S3 dari baris perintah PowerShell .
PS >
Get-S3Bucket -ProfileName SAMLDemoProfile
CreationDate BucketName ------------ ---------- 7/25/2013 3:16:56 AM
amzn-s3-demo-bucket
4/15/2015 12:46:50 AMamzn-s3-demo-bucket1
4/15/2015 6:15:53 AMamzn-s3-demo-bucket2
1/12/2015 11:20:16 PMamzn-s3-demo-bucket3
Perhatikan bahwa cmdlet Get-S3Bucket
menentukan nama profil yang dibuat dengan menjalankan cmdlet Set-AWSSamlRoleProfile
. Perintah ini dapat berguna jika Anda telah menetapkan profil peran sebelumnya dalam sesi Anda (misalnya, dengan menjalankan cmdlet Set-AWSCredential
) dan ingin menggunakan profil peran yang berbeda untuk cmdlet Get-S3Bucket
. Manajer profil menyediakan kredensial sementara untuk cmdlet Get-S3Bucket
.
Meskipun kredensialnya kedaluwarsa setelah 1 jam (batas yang diberlakukan olehSTS), AWS Tools for PowerShell secara otomatis menyegarkan kredensil dengan meminta SAML pernyataan baru ketika alat mendeteksi bahwa kredensil saat ini telah kedaluwarsa.
Untuk pengguna tergabung domain, proses ini terjadi tanpa gangguan, karena identitas Windows pengguna saat ini digunakan selama autentikasi. Untuk akun non-domain-joined pengguna, AWS Tools for PowerShell menampilkan prompt PowerShell kredenal yang meminta kata sandi pengguna. Pengguna menyediakan kredensial yang digunakan untuk melakukan autentikasi ulang terhadap pengguna dan mendapatkan pernyataan baru.
Contoh 3: Mendapatkan Instans di suatu Wilayah
Contoh berikut mencantumkan semua EC2 instans Amazon di Wilayah Asia Pasifik (Sydney) yang terkait dengan akun yang digunakan oleh ADFS-Production
profil. Ini adalah perintah yang berguna untuk mengembalikan semua EC2 instance Amazon di suatu wilayah.
PS >
(Get-Ec2Instance -ProfileName ADFS-Production -Region ap-southeast-2).Instances | Select InstanceType, @{Name="Servername";Expression={$_.tags | where key -eq "Name" | Select Value -Expand Value}}
InstanceType Servername ------------ ---------- t2.small DC2 t1.micro NAT1 t1.micro RDGW1 t1.micro RDGW2 t1.micro NAT2 t2.small DC1 t2.micro BUILD
Bacaan Tambahan
Untuk informasi umum tentang cara menerapkan API akses federasi, lihat Cara Menerapkan Solusi Umum untuk API CLI Federasi/Akses Menggunakan SAML 2.0
Untuk pertanyaan atau komentar dukungan, kunjungi Forum AWS Pengembang untuk PowerShell Skrip