Konfigurasikan identitas federasi dengan AWS Tools for PowerShell - AWS Tools for PowerShell

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

Untuk mengizinkan pengguna di organisasi Anda mengakses sumber daya AWS, Anda harus mengkonfigurasi metode autentikasi standar dan dapat diulang untuk tujuan keamanan, kemampuan audit, kepatuhan, dan kemampuan untuk mendukung pemisahan peran dan akun. Meskipun umum untuk menyediakan pengguna dengan kemampuan untuk mengakses API AWS, tanpa akses API federasi, Anda juga harus membuat pengguna (IAM) AWS Identity and Access Management, yang mengenyampingkan tujuan menggunakan federasi. Topik ini menjelaskan dukungan SAML (Security Assertion Markup Language) di AWS Tools for PowerShell yang memudahkan solusi akses federasi Anda.

Dukungan SAML di AWS Tools for PowerShell memungkinkan Anda memberikan pengguna Anda akses federasi ke layanan AWS. SAML adalah format standar terbuka berbasis XML untuk mentransmisikan autentikasi pengguna dan data otorisasi antar layanan; khususnya, antara penyedia identitas (seperti Layanan Federasi Direktori Aktif), dan penyedia layanan (seperti AWS). Untuk informasi lebih lanjut tentang SAML dan cara kerjanya, lihat SAML di Wikipedia, atau Spesifikasi Teknis SAML di situs web Organisasi untuk Kelanjutan Standar Informasi Terstruktur (OASIS). Dukungan SAML di AWS Tools for PowerShell kompatibel dengan SAML 2.0.

Prasyarat

Anda harus memiliki yang berikut sebelum Anda mencoba untuk menggunakan dukungan SAML 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 khususnya untuk Layanan Federasi Direktori Aktif, lihat Tentang Federasi SAML 2.0 di Panduan Pengguna IAM, dan posting blog, Mengaktifkan Federasi untuk AWS Menggunakan Direktori Aktif Windows, 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 stasiun kerja lokal Anda.

Bagaimana Pengguna Federasi Identitas-Mendapat Akses Federasi ke API Layanan AWS

Proses berikut menjelaskan, pada tingkat tinggi, bagaimana pengguna Direktori Aktif (AD) digabungkan oleh AD FS untuk mendapatkan akses ke sumber daya AWS.

  1. Klien pada komputer pengguna gabungan mengotentikasi terhadap AD FS.

  2. Jika autentikasi berhasil, AD FS mengirimkan pernyataan SAML ke pengguna.

  3. Klien pengguna mengirimkan pernyataan SAML ke (STS) AWS Security Token Service sebagai bagian dari permintaan federasi SAML.

  4. STS mengembalikan jawaban SAML yang berisi kredensial sementara AWS untuk peran yang dapat dikerjakan pengguna.

  5. Pengguna mengakses API layanan AWS dengan memasukkan kredensial sementara tersebut dalam permintaan yang dibuat oleh AWS Tools for PowerShell.

Cara Kerja Support SAML di AWS Tools for PowerShell

Bagian ini menjelaskan cara cmdlet AWS Tools for PowerShell mengaktifkan konfigurasi identitas berbasis SAML untuk pengguna.

  1. AWS Tools for PowerShell mengotentikasi terhadap AD FS dengan menggunakan kredensial pengguna Windows saat ini, atau secara interaktif, ketika pengguna mencoba untuk menjalankan cmdlet yang memerlukan pemanggilan kredensial ke AWS.

  2. AD FS mengotentikasi pengguna.

  3. AD FS menghasilkan jawaban autentikasi 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 pernyataan SAML.

  4. AWS Tools for PowerShell meneruskan permintaan SAML, termasuk Amazon Resource Name (ARN) peran yang diminta, ke STS dengan membuat Panggilan API AssumeRoleWithSAMLRequest.

  5. Jika permintaan SAML valid, STS mengembalikan jawaban yang berisi AWS AccessKeyId, SecretAccessKey, dan SessionToken. Kredensial ini berlangsung selama 3.600 detik (1 jam).

  6. Pengguna sekarang memiliki kredensial yang valid untuk bekerja dengan API layanan AWS yang diizinkan diakses oleh peran pengguna. AWS Tools for PowerShell secara otomatis menerapkan kredensial ini untuk setiap panggilan API AWS, dan memperbaharui mereka secara otomatis setelah masa berlakunya berakhir.

    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 tanpa tergabung domain, AWS Tools for PowerShell meminta pengguna untuk memasukkan kredensialnya sebelum dapat diautentikasi kembali.

Cara Menggunakan Cmdlet Konfigurasi PowerShell SAFL

AWS Tools for PowerShell mencakup dua cmdlet baru yang menyediakan dukungan SAML.

  • 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 cmdlet Set-AWSSamlEndpoint. Setiap profil peran memetakan peran tunggal yang dapat dilaksanakan secara sah oleh pengguna.

    Sama seperti profil kredensial AWS, Anda memberikan nama yang mudah untuk profil peran. Anda dapat menggunakan nama mudah yang sama dengan cmdlet Set-AWSCredential, atau sebagai nilai parameter -ProfileName untuk setiap cmdlet yang membuka API layanan AWS.

Membuka sesi AWS Tools for PowerShell 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

  1. 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 ID akun placeholder dan nama host AD FS dengan ID akun Anda sendiri 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"
  2. Untuk membuat pengaturan titik akhir, jalankan cmdlet Set-AWSSamlEndpoint, yang menyebutkan nilai yang benar untuk parameter AuthenticationType. Nilai yang valid termasuk Basic, Digest, Kerberos, Negotiate, dan NTLM. Jika Anda tidak menentukan parameter ini, maka nilai default adalah Kerberos.

    PS > $epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs ADFS-Demo -AuthenticationType NTLM

    Cmdlet mengembalikan nama mudah yang Anda tetapkan menggunakan parameter -StoreAs, sehingga Anda dapat menggunakannya ketika Anda menjalankan Set-AWSSamlRoleProfile di baris berikutnya.

  3. Sekarang, jalankan cmdlet Set-AWSSamlRoleProfile untuk mengotentikasi dengan penyedia identitas AD FS dan mendapatkan set peran (dalam pernyataan SAML) yang dapat secara sah dilakukan oleh pengguna tersebut.

    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 $epName

    Atau, 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
  4. 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, dan ADFS-Production. Peran IAM terkait dengan kredensial masuk 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 memilih NetworkCredential. 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
  5. 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 Kredensial AWS

Untuk menjalankan cmdlet yang memerlukan kredensial AWS, Anda dapat menggunakan profil peran yang didefinisikan dalam file kredensial bersama AWS. Memberikan nama profil peran untuk Set-AWSCredential (atau sebagai nilai untuk parameter ProfileName mana pun dalam AWS Tools for PowerShell) untuk mendapatkan kredensial AWS sementara secara otomatis untuk peran yang dijelaskan di 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.

Sekarang Anda dapat menggunakan kredensial AWS sementara yang Anda peroleh dengan profil SAMLDemoProfile untuk bekerja dengan API layanan AWS. Bagian berikut menunjukkan contoh cara menggunakan profil peran.

Contoh 1: Mengatur Peran Default dengan Set-AWSCredential

Contoh ini mengatur peran default untuk sesi AWS Tools for PowerShell dengan menggunakan Set-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 berisi semua buket Amazon S3 yang tersedia di akun AWS peran yang terkait dengan profil SAMLDemoProfile. Contoh tersebut menunjukkan bahwa meskipun Anda mungkin telah menggunakan profil lain sebelumnya di sesi AWS Tools for PowerShell Anda, Anda dapat mengubah profil dengan menentukan nilai yang berbeda untuk parameter -ProfileName 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 mybucket1 4/15/2015 12:46:50 AM mybucket2 4/15/2015 6:15:53 AM mybucket3 1/12/2015 11:20:16 PM mybucket4

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 kedaluarsa setelah 1 jam (batas yang diberlakukan oleh STS), AWS Tools for PowerShell secara otomatis menyegarkan kredensial dengan meminta pernyataan SAML baru ketika alat mendeteksi bahwa kredensial 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 instans Amazon EC2 di Wilayah Asia Pacific (Sydney) yang terkait dengan akun yang digunakan oleh profil ADFS-Production. Ini adalah perintah yang berguna untuk mengembalikan semua instans Amazon EC2 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 akses API tergabung, lihat Cara Menerapkan Solusi Umum untuk Akses API/CLI Federasi Menggunakan SAML 2.0.

Untuk pertanyaan dukungan atau komentar, kunjungi Forum AWS Pengembang untuk PowerShell Scripting atau .NET Development.