

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kredensial keamanan sementara di IAM
<a name="id_credentials_temp"></a>

Anda dapat menggunakan AWS Security Token Service (AWS STS) untuk membuat dan menyediakan kredenal keamanan sementara kepada pengguna tepercaya yang dapat mengontrol akses ke sumber daya Anda AWS . Kredensil keamanan sementara bekerja hampir identik dengan kredensil kunci akses jangka panjang, dengan perbedaan berikut:
+ Kredensial keamanan sementara bersifat *jangka pendek*, seperti namanya. Konfigurasi dapat berlangsung selama beberapa menit hingga beberapa jam. Setelah kredensialnya kedaluwarsa, AWS tidak lagi mengenalinya atau mengizinkan segala jenis akses dari permintaan API yang dibuat dengannya.
+ Kredensial keamanan sementara tidak disimpan dengan pengguna tetapi dihasilkan secara dinamis dan diberikan kepada pengguna saat diminta. Ketika (atau bahkan sebelum) kredensial keamanan sementara kedaluwarsa, pengguna dapat meminta kredensial baru, selama pengguna yang memintanya masih memiliki izin untuk melakukannya.

Akibatnya, kredensil sementara memiliki keunggulan sebagai berikut dibandingkan kredensil jangka panjang:
+ Anda tidak perlu mendistribusikan atau menanamkan kredensil AWS keamanan jangka panjang dengan aplikasi.
+ Anda dapat memberikan akses ke AWS sumber daya Anda kepada pengguna tanpa harus menentukan AWS identitas untuk mereka. Kredensi sementara adalah dasar untuk [peran](id_roles.md) dan federasi [identitas](id_roles_providers.md).
+ Kredensi keamanan sementara memiliki masa pakai yang terbatas, jadi Anda tidak perlu memperbaruinya atau mencabutnya secara eksplisit saat tidak lagi diperlukan. Setelah kredensial keamanan sementara berakhir, kredensial tersebut tidak dapat digunakan kembali. Anda dapat menentukan berapa lama kredensial berlaku, hingga batas maksimum. 

## AWS STS dan AWS daerah
<a name="sts-regionalization"></a>

Kredensial keamanan sementara dihasilkan oleh AWS STS. Secara default, AWS STS adalah layanan global dengan titik akhir tunggal di`https://sts.amazonaws.com`. Namun, Anda juga dapat memilih untuk melakukan panggilan AWS STS API ke titik akhir di Wilayah lain yang didukung. Ini dapat mengurangi latensi (server lag) dengan mengirim permintaan ke server di Wilayah yang secara geografis lebih dekat dengan Anda. Tidak peduli dari Wilayah mana kredensial Anda berasal, mereka bekerja secara global. Untuk informasi selengkapnya, lihat [Kelola AWS STS dalam sebuah Wilayah AWS](id_credentials_temp_enable-regions.md).

## Skenario umum untuk kredensial sementara
<a name="sts-introduction"></a>

Kredensial sementara berguna dalam skenario yang melibatkan federasi identitas, pendelegasian, akses lintas akun, dan peran IAM.

### Federasi identitas
<a name="id-federation"></a>

Anda dapat mengelola identitas pengguna di sistem eksternal di luar AWS dan memberi pengguna yang masuk dari sistem tersebut akses untuk melakukan AWS tugas dan mengakses AWS sumber daya Anda. IAM mendukung dua jenis federasi identitas. Dalam kedua kasus, identitas disimpan di luar. AWS Perbedaannya adalah tempat sistem eksternal berada—di pusat data Anda atau pihak ketiga eksternal di web. Untuk membandingkan fitur kredensil keamanan sementara untuk federasi identitas, lihat. [Bandingkan AWS STS kredensialnya](id_credentials_sts-comparison.md)

Untuk informasi lebih lanjut tentang penyedia identitas eksternal, lihat [Penyedia identitas dan federasi ke AWS](id_roles_providers.md).
+ **Federasi OpenID Connect (OIDC)** - Anda dapat mengizinkan pengguna masuk menggunakan penyedia identitas pihak ketiga yang terkenal seperti Login with Amazon, Facebook, Google, atau penyedia yang kompatibel dengan OIDC 2.0 untuk aplikasi seluler atau web Anda, Anda tidak perlu membuat kode masuk khusus atau mengelola identitas pengguna Anda sendiri. Menggunakan federasi OIDC membantu Anda menjaga Akun AWS keamanan Anda, karena Anda tidak perlu mendistribusikan kredensil keamanan jangka panjang, seperti kunci akses pengguna IAM, dengan aplikasi Anda. Untuk informasi selengkapnya, lihat [Federasi OIDC](id_roles_providers_oidc.md).

  AWS STS Federasi OIDC mendukung Login with Amazon, Facebook, Google, dan penyedia identitas yang kompatibel dengan OpenID Connect (OIDC).
**catatan**  
Untuk aplikasi seluler, kami sarankan Anda menggunakan Amazon Cognito. Anda dapat menggunakan layanan ini untuk pengembangan seluler AWS SDKs untuk membuat identitas unik bagi pengguna dan mengautentikasi mereka untuk akses aman ke sumber daya Anda AWS . Amazon Cognito mendukung penyedia identitas yang sama dengan AWS STS, dan juga mendukung akses (tamu) yang tidak diautentikasi dan memungkinkan Anda memigrasikan data pengguna saat pengguna masuk. Amazon Cognito juga menyediakan operasi API untuk mensinkronisasi data pengguna sehingga data terjaga saat pengguna berpindah antar perangkat. Untuk informasi selengkapnya, lihat [Otentikasi dengan Amplify di Dokumentasi](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify) *Amplify*.
+ **Federasi SAMP** - Anda dapat mengautentikasi pengguna di jaringan organisasi Anda, dan kemudian memberikan akses kepada pengguna tersebut AWS tanpa membuat AWS identitas baru untuk mereka dan mengharuskan mereka untuk masuk dengan kredenal masuk yang berbeda. Ini dikenal sebagai pendekatan *masuk tunggal* untuk akses sementara. AWS STS mendukung standar terbuka seperti Security Assertion Markup Language (SAMP) 2.0, yang dengannya Anda dapat menggunakan Microsoft AD FS untuk memanfaatkan Microsoft Active Directory Anda. Anda juga dapat menggunakan SAML 2.0 untuk mengelola solusi Anda sendiri untuk memfederasi identitas pengguna. Untuk informasi selengkapnya, lihat [Federasi SAMP 2.0](id_roles_providers_saml.md).
  + **Pialang federasi khusus** - Anda dapat menggunakan sistem otentikasi organisasi Anda untuk memberikan akses ke AWS sumber daya. Untuk contoh skenario, lihat [Aktifkan akses broker identitas khusus ke AWS konsol](id_roles_providers_enable-console-custom-url.md).
  + **Federasi menggunakan SAMP 2.0** — Anda dapat menggunakan sistem otentikasi organisasi Anda dan SAMP untuk memberikan akses ke sumber daya. AWS Untuk informasi lebih lanjut dan contoh skenario, lihat [Federasi SAMP 2.0](id_roles_providers_saml.md).

### Peran untuk akses lintas akun
<a name="role_cross-account"></a>

Banyak organisasi mempertahankan lebih dari satu Akun AWS. Dengan menggunakan peran dan akses lintas akun, Anda dapat menentukan identitas pengguna dalam satu akun, dan menggunakan identitas tersebut untuk mengakses sumber daya AWS di akun lain yang menjadi bagian dari organisasi Anda. Ini dikenal sebagai pendekatan *pendelegasian* ke akses sementara. Untuk informasi selengkapnya tentang cara membuat peran lintas akun, lihat [Buat peran untuk memberikan izin kepada pengguna IAM](id_roles_create_for-user.md). Untuk mempelajari apakah prinsipal dalam akun di luar zona kepercayaan (organisasi atau akun terpercaya) memiliki akses untuk mengasumsikan peran Anda, lihat [Apa yang dimaksud dengan IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

### Peran untuk Amazon EC2
<a name="role_ec2"></a>

Jika Anda menjalankan aplikasi di instans Amazon EC2 dan aplikasi tersebut memerlukan akses ke AWS sumber daya, Anda dapat memberikan kredensil keamanan sementara ke instans saat meluncurkannya. Kredensial keamanan sementara ini tersedia untuk semua aplikasi yang berjalan pada instans, sehingga Anda tidak perlu menyimpan kredensial jangka panjang apa pun pada instans. Untuk informasi selengkapnya, lihat [Menggunakan peran IAM untuk memberikan izin ke aplikasi yang berjalan di instans Amazon EC2](id_roles_use_switch-role-ec2.md).

Untuk mempelajari selengkapnya tentang kredenal peran IAM Amazon EC2, [lihat peran IAM untuk Amazon EC2 *di* Panduan Pengguna Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) Elastic Compute Cloud.

### AWS Layanan lainnya
<a name="other-services"></a>

Anda dapat menggunakan kredensil keamanan sementara untuk mengakses sebagian besar AWS layanan. Untuk daftar layanan yang menerima kredensial keamanan sementara, lihat [AWS layanan yang bekerja dengan IAM](reference_aws-services-that-work-with-iam.md).

## Contoh aplikasi yang menggunakan kredensial sementara
<a name="id_credentials_temp_sample-apps"></a>

Anda dapat menggunakan AWS Security Token Service (AWS STS) untuk membuat dan menyediakan kredenal keamanan sementara kepada pengguna tepercaya yang dapat mengontrol akses ke sumber daya Anda AWS . Untuk informasi lebih lanjut tentang AWS STS, lihat[Kredensial keamanan sementara di IAM](#id_credentials_temp). Untuk melihat bagaimana Anda dapat menggunakan AWS STS untuk mengelola kredenal keamanan sementara, Anda dapat mengunduh contoh aplikasi berikut yang menerapkan skenario contoh lengkap:
+ [Mengaktifkan Federasi untuk AWS Menggunakan Windows Active Directory, ADFS, dan SAMP 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/). Menunjukkan cara menghapus akses menggunakan federasi perusahaan untuk AWS menggunakan Windows Active Directory (AD), Active Directory Federation Services (ADFS) 2.0, dan SAMP (Security Assertion Markup Language) 2.0.
+ [Aktifkan akses broker identitas khusus ke AWS konsol](id_roles_providers_enable-console-custom-url.md). Menunjukkan cara membuat proxy federasi kustom yang memungkinkan single sign-on (SSO) sehingga pengguna Active Directory yang ada dapat masuk ke file. Konsol Manajemen AWS
+ [Cara Menggunakan Shibboleth untuk Single Sign-On ke. Konsol Manajemen AWS](https://aws.amazon.com/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console/) . Menunjukkan cara menggunakan [Shibboleth](http://shibboleth.net/) dan [SAML](id_roles_providers_saml.md) untuk memberikan akses pengguna dengan sistem masuk tunggal (SSO) ke Konsol Manajemen AWS.

### Sampel untuk federasi OIDC
<a name="sts-sample-apps-wif"></a>

Contoh aplikasi berikut menggambarkan cara menggunakan OIDCfederation dengan penyedia seperti Login with Amazon, Amazon Cognito, Facebook, atau Google. Anda dapat menukar otentikasi dari penyedia ini untuk kredensi AWS keamanan sementara untuk mengakses layanan. AWS 
+ [Tutorial Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorials.html) — Kami menyarankan Anda menggunakan Amazon Cognito dengan pengembangan seluler AWS SDKs untuk. Amazon Cognito adalah cara paling mudah untuk mengelola identitas untuk aplikasi seluler, serta menyediakan fitur tambahan seperti sinkronisasi dan identitas lintas perangkat. *Untuk informasi selengkapnya tentang Amazon Cognito, lihat [Otentikasi dengan Amplify di Dokumentasi Amplify](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify).*

## Sumber daya tambahan untuk kredensial keamanan sementara
<a name="id_credentials_temp_related-topics"></a>

Skenario dan aplikasi berikut dapat memandu Anda dalam menggunakan kredensial keamanan sementara: 
+ [Bagaimana mengintegrasikan AWS STS SourceIdentity dengan penyedia identitas Anda](https://aws.amazon.com/blogs/security/how-to-integrate-aws-sts-sourceidentity-with-your-identity-provider/). Posting ini menunjukkan cara mengatur AWS STS `SourceIdentity` atribut saat menggunakan Okta, Ping, atau OneLogin sebagai idP Anda.
+  [Federasi OIDC](id_roles_providers_oidc.md). Bagian ini membahas cara mengonfigurasi peran IAM saat Anda menggunakan federasi OIDC dan API. `AssumeRoleWithWebIdentity` 
+ [Akses API aman dengan MFA](id_credentials_mfa_configure-api-require.md). Topik ini menjelaskan cara menggunakan peran untuk mewajibkan Autentikasi Multi-Faktor (MFA) untuk melindungi tindakan API rahasia di akun Anda.

Untuk informasi selengkapnya tentang kebijakan dan izin di AWS lihat topik berikut:
+ [Manajemen akses untuk AWS sumber daya](access.md)
+ [Logika evaluasi kebijakan](reference_policies_evaluation-logic.md).
+ [Mengelola Izin Akses ke Sumber Daya Amazon S3 Anda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.
+  Untuk mempelajari apakah prinsip di akun di luar zona kepercayaan (organisasi atau akun tepercaya) memiliki akses untuk menjalankan peran Anda, lihat [Apa yang dimaksud dengan Penganalisis Akses IAM?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

# Bandingkan AWS STS kredensialnya
<a name="id_credentials_sts-comparison"></a>

Tabel berikut membandingkan fitur operasi API AWS STS yang mengembalikan kredensil keamanan sementara tersebut. Untuk mempelajari tentang berbagai metode yang dapat Anda gunakan untuk meminta kredensial keamanan sementara dengan mengambil peran, lihat [Metode untuk mengambil peran](id_roles_manage-assume.md). Untuk mempelajari berbagai operasi AWS STS API yang memungkinkan Anda meneruskan tag sesi, lihat[Lulus tag sesi di AWS STS](id_session-tags.md).

**catatan**  
Anda dapat mengirim panggilan AWS STS API ke titik akhir global atau ke salah satu titik akhir Regional. Jika Anda memilih titik akhir yang lebih dekat dengan Anda, Anda dapat mengurangi latensi dan meningkatkan kinerja panggilan API Anda. Anda juga dapat memilih untuk mengarahkan panggilan Anda ke titik akhir Regional alternatif jika Anda tidak lagi dapat berkomunikasi dengan titik akhir awal. Jika Anda menggunakan salah satu dari beragam AWS SDKs, gunakan metode SDK tersebut untuk menentukan Region sebelum Anda melakukan panggilan API. Jika Anda membuat permintaan HTTP API secara manual, maka Anda harus mengarahkan permintaan ke titik akhir yang benar sendiri. Untuk informasi lebih lanjut, lihat [bagian AWS STS dari *Wilayah dan Titik Akhir*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) dan [Kelola AWS STS dalam sebuah Wilayah AWS](id_credentials_temp_enable-regions.md).


|  **AWS STS API**  |  **Siapa yang bisa menelepon**  |  **Masa pakai kredensi (min \$1 maks \$1 default)**  |  **Support MFA**¹  |  **Dukungan kebijakan sesi**²  |  **Pembatasan pada kredensi sementara yang dihasilkan**  | 
| --- | --- | --- | --- | --- | --- | 
|  [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)  | Pengguna IAM atau peran IAM dengan kredensial keamanan sementara yang ada  | 15 m \$1 Pengaturan durasi sesi maksimum³ \$1 1 jam  | Ya  | Ya |  Tidak bisa menelepon `GetFederationToken` atau `GetSessionToken`.  | 
|  [AssumeRoleWithSAM](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)  | Setiap pengguna; penelepon harus melewati tanggapan autentikasi SAML yang menunjukkan autentikasi dari penyedia layanan yang dikenal | 15 m \$1 Pengaturan durasi sesi maksimum³ \$1 1 jam  | Tidak | Ya |  Tidak bisa menelepon `GetFederationToken` atau `GetSessionToken`.  | 
|  [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)  | Setiap pengguna; penelepon harus melewati token JWT yang sesuai dengan OIDC yang menunjukkan otentikasi dari penyedia identitas yang dikenal | 15 m \$1 Pengaturan durasi sesi maksimum³ \$1 1 jam  | Tidak | Ya |  Tidak bisa menelepon `GetFederationToken` atau `GetSessionToken`.  | 
| [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) | Pengguna IAM atau Pengguna root akun AWS |  Pengguna IAM: 15 m \$1 1 jam \$1 1 jam Pengguna root: 15 m \$1 1 jam \$1 1 jam  | Tidak  | Ya  |  Tidak dapat memanggil operasi IAM menggunakan AWS CLI atau AWS API. Batasan ini tidak berlaku untuk sesi konsol. Tidak dapat memanggil AWS STS operasi kecuali `GetCallerIdentity` .1 SSO ke konsol diperbolehkan.⁵  | 
| [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) | Pengguna IAM atau Pengguna root akun AWS |  Pengguna IAM: 15 m \$1 1 jam \$1 1 jam Pengguna root: 15 m \$1 1 jam \$1 1 jam  | Ya  | Tidak  |  Tidak dapat memanggil operasi API IAM kecuali informasi MFA disertakan dengan permintaan. Tidak dapat memanggil operasi AWS STS API kecuali `AssumeRole` atau`GetCallerIdentity`. SSO ke konsol tidak diperbolehkan.⁶  | 

 ¹ **Support MFA** Anda dapat menyertakan informasi tentang perangkat otentikasi multi-faktor (MFA) saat Anda memanggil operasi dan API. AssumeRole GetSessionToken Hal ini memastikan kredensial keamanan sementara yang dihasilkan dari panggilan API hanya dapat digunakan oleh pengguna yang diautentikasi dengan perangkat MFA. Untuk informasi selengkapnya, lihat [Akses API aman dengan MFA](id_credentials_mfa_configure-api-require.md). 

 ² **Dukungan kebijakan sesi**. Kebijakan sesi adalah kebijakan yang Anda teruskan sebagai parameter saat Anda membuat sesi sementara secara terprogram untuk peran atau sesi pengguna AWS STS gabungan. Kebijakan ini membatasi izin dari peran atau kebijakan berbasis identitas pengguna yang ditetapkan untuk sesi. Izin sesi yang dihasilkan adalah titik pertemuan antara kebijakan berbasis identitas entitas dan kebijakan sesi. Kebijakan sesi tidak dapat digunakan untuk memberikan lebih banyak izin daripada yang diizinkan oleh kebijakan berbasis identitas dari peran yang sedang diasumsikan. Untuk informasi lebih lanjut tentang izin sesi peran, lihat [Kebijakan sesi](access_policies.md#policies_session).

³ **Pengaturan durasi sesi maksimum**. Gunakan parameter `DurationSeconds` untuk menentukan durasi sesi peran Anda dari 900 detik (15 menit) hingga pengaturan durasi sesi maksimum untuk peran tersebut. Untuk mempelajari cara melihat nilai maksimum untuk peran Anda, lihat [Memperbarui durasi sesi maksimum untuk peran](id_roles_update-role-settings.md#id_roles_update-session-duration).

**GetCallerIdentity**. Tidak ada izin yang diperlukan untuk melakukan operasi ini. Jika administrator menambahkan kebijakan ke pengguna IAM Anda atau peran yang secara jelas menghalangi akses ke tindakan `sts:GetCallerIdentity`, Anda masih dapat melakukan operasi ini. Izin tidak diperlukan karena informasi yang sama dikembalikan saat pengguna IAM atau peran ditolak aksesnya. Untuk melihat contoh tanggapan, lihat [Saya tidak berwenang untuk melakukan: iam: DeleteVirtual MFADevice](troubleshoot.md#troubleshoot_general_access-denied-delete-mfa).

⁵ **Masuk tunggal (SSO) ke konsol**. Untuk mendukung SSO, Anda AWS dapat memanggil federasi endpoint (`https://signin.aws.amazon.com/federation`) dan meneruskan kredensi keamanan sementara. Titik akhir mengembalikan token yang dapat Anda gunakan untuk membangun URL yang menandai pengguna secara langsung ke konsol tanpa memerlukan kata sandi. Untuk informasi selengkapnya, lihat [Mengaktifkan prinsip federasi SAMP 2.0 untuk mengakses Konsol Manajemen AWS](id_roles_providers_enable-console-saml.md) dan [Cara Mengaktifkan Akses Lintas Akun ke Konsol AWS Manajemen](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) di Blog AWS Keamanan. 

⁶ Setelah Anda mendapatkan kredensial sementara Anda, Anda tidak dapat mengakses Konsol Manajemen Konsol Manajemen AWS dengan meneruskan kredensial ke titik akhir masuk tunggal gabungan. Lihat informasi yang lebih lengkap di [Aktifkan akses broker identitas khusus ke AWS konsol](id_roles_providers_enable-console-custom-url.md).

# Token pembawa layanan
<a name="id_credentials_bearer"></a>

Beberapa AWS layanan mengharuskan Anda memiliki izin untuk mendapatkan token pembawa AWS STS layanan sebelum Anda dapat mengakses sumber daya mereka secara terprogram. Layanan ini mendukung protokol yang mengharuskan Anda untuk menggunakan token pembawa alih-alih menggunakan tradisional[AWS Signature Versi 4 untuk permintaan API](reference_sigv.md). Saat Anda melakukan AWS CLI atau operasi AWS API yang memerlukan token pembawa, AWS layanan meminta token pembawa atas nama Anda. Layanan memberi Anda token, yang kemudian dapat Anda gunakan untuk melakukan operasi selanjutnya dalam layanan tersebut. 

AWS STS token pembawa layanan mencakup informasi dari otentikasi utama asli Anda yang dapat memengaruhi izin Anda. Informasi ini dapat mencakup tanda utama, tanda sesi, dan kebijakan sesi. Access key ID token dimulai dengan awalan `ABIA`. Ini membantu Anda untuk mengidentifikasi operasi yang dilakukan menggunakan token pembawa layanan dalam log CloudTrail anda.

**penting**  
Token pembawa dapat digunakan hanya untuk panggilan ke layanan yang membuatnya dan di Wilayah tempat pembuatannya. Anda tidak dapat menggunakan token pembawa untuk melakukan operasi di layanan atau Wilayah lain.

Contoh layanan yang mendukung token pembawa adalah AWS CodeArtifact. Sebelum Anda dapat berinteraksi dengan AWS CodeArtifact menggunakan manajer paket seperti NPM, Maven, atau PIP, Anda harus memanggil operasi. `aws codeartifact get-authorization-token` Operasi ini mengembalikan token pembawa yang dapat Anda gunakan untuk melakukan AWS CodeArtifact operasi. Atau, Anda dapat menggunakan perintah `aws codeartifact login` yang menyelesaikan operasi yang sama dan kemudian mengonfigurasi klien Anda secara otomatis. 

Jika Anda melakukan tindakan dalam AWS layanan yang menghasilkan token pembawa untuk Anda, Anda harus memiliki izin berikut dalam kebijakan IAM Anda:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowServiceBearerToken",
            "Effect": "Allow",
            "Action": "sts:GetServiceBearerToken",
            "Resource": "*"
        }
    ]
}
```

------

Untuk contoh token pembawa layanan, lihat [Menggunakan kebijakan berbasis identitas untuk AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/auth-and-access-control-iam-identity-based-access-control.html) dalam panduan pengguna. *AWS CodeArtifact*

# Minta kredensil keamanan sementara
<a name="id_credentials_temp_request"></a>

Untuk meminta kredensil keamanan sementara, Anda dapat menggunakan operasi AWS Security Token Service (AWS STS) di API. AWS Ini termasuk operasi untuk membuat dan menyediakan kredensi keamanan sementara kepada pengguna tepercaya yang dapat mengontrol akses ke sumber daya Anda AWS . Untuk informasi lebih lanjut tentang AWS STS, lihat[Kredensial keamanan sementara di IAM](id_credentials_temp.md). Untuk mempelajari lebih lanjut tentang berbagai metode berbeda yang dapat Anda gunakan untuk meminta kredensial keamanan sementara dengan mengasumsikan peran, lihat [Metode untuk mengambil peran](id_roles_manage-assume.md).

Untuk memanggil operasi API, Anda dapat menggunakan salah satu [AWS SDKs](https://aws.amazon.com/tools/). SDKs Tersedia untuk berbagai bahasa pemrograman dan lingkungan, termasuk Java, .NET, Python, Ruby, Android, dan iOS. SDKs Menangani tugas-tugas seperti menandatangani permintaan Anda secara kriptografis, mencoba ulang permintaan jika perlu, dan menangani respons kesalahan. Anda juga dapat menggunakan AWS STS Query API, yang dijelaskan dalam [Referensi AWS Security Token Service API](https://docs.aws.amazon.com/STS/latest/APIReference/). Akhirnya, dua alat baris perintah mendukung AWS STS perintah: [AWS Command Line Interface](https://aws.amazon.com/documentation/cli), dan [AWS Tools for Windows PowerShell](https://aws.amazon.com/documentation/powershell). 

Operasi AWS STS API membuat sesi baru dengan kredensial keamanan sementara yang mencakup access key pair dan token sesi. Pasangan pasangan access key terdiri dari access key ID dan secret access key. Pengguna (atau aplikasi yang dijalankan pengguna) dapat menggunakan kredensial ini untuk mengakses sumber daya Anda. Anda dapat membuat sesi peran dan meneruskan kebijakan sesi dan tag sesi secara terprogram menggunakan operasi AWS STS API. Izin sesi yang dihasilkan adalah persimpangan kebijakan berbasis identitas peran dan kebijakan sesi. Untuk informasi lebih lanjut tentang kebijakan sesi, lihat [Kebijakan sesi](access_policies.md#policies_session). Untuk informasi lebih lanjut tentang tanda sesi, lihat [Lulus tag sesi di AWS STS](id_session-tags.md).

**catatan**  
Ukuran token sesi yang dikembalikan operasi AWS STS API tidak tetap. Kami sangat menyarankan agar Anda tidak membuat asumsi tentang ukuran maksimum. Ukuran token umumnya kurang dari 4096 byte, tetapi itu dapat bervariasi.

## Menggunakan AWS STS dengan AWS Wilayah
<a name="using_sts_regions"></a>

Anda dapat mengirim panggilan AWS STS API ke titik akhir global atau ke salah satu titik akhir Regional. Jika Anda memilih titik akhir yang lebih dekat dengan Anda, Anda dapat mengurangi latensi dan meningkatkan kinerja panggilan API Anda. Anda juga dapat memilih untuk mengarahkan panggilan Anda ke titik akhir Regional alternatif jika Anda tidak lagi dapat berkomunikasi dengan titik akhir awal. Jika Anda menggunakan salah satu dari beragam AWS SDKs, gunakan metode SDK tersebut untuk menentukan Region sebelum Anda melakukan panggilan API. Jika Anda membuat permintaan HTTP API secara manual, maka Anda harus mengarahkan permintaan ke titik akhir yang benar sendiri. Untuk informasi lebih lanjut, lihat [bagian AWS STS dari *Wilayah dan Titik Akhir*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) dan [Kelola AWS STS dalam sebuah Wilayah AWS](id_credentials_temp_enable-regions.md).

Berikut ini adalah operasi API yang dapat Anda gunakan untuk memperoleh kredensil sementara untuk digunakan di AWS lingkungan dan aplikasi Anda.

## Meminta kredensi untuk delegasi dan federasi lintas akun melalui pialang identitas khusus
<a name="api_assumerole"></a>

Operasi [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html)API berguna untuk memungkinkan pengguna IAM yang ada mengakses AWS sumber daya yang belum mereka akses. Misalnya, pengguna mungkin memerlukan akses ke sumber daya di tempat lain Akun AWS. Itu juga berguna sebagai sarana untuk mendapatkan akses istimewa sementara waktu—misalnya, untuk menyediakan Multi-Factor Authentication (MFA) Anda harus memanggil API ini menggunakan kredensi aktif. Untuk mempelajari siapa yang dapat memanggil operasi ini, lihat[Bandingkan AWS STS kredensialnya](id_credentials_sts-comparison.md). Untuk informasi selengkapnya, lihat [Buat peran untuk memberikan izin kepada pengguna IAM](id_roles_create_for-user.md) dan [Akses API aman dengan MFA](id_credentials_mfa_configure-api-require.md).

**Untuk meminta kredensi keamanan sementara untuk delegasi lintas akun dan federasi melalui broker identitas khusus**

1. Otentikasi dengan kredensi AWS keamanan Anda. Panggilan ini harus dilakukan dengan menggunakan kredensial keamanan AWS yang berlaku.

1. Panggil operasi [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html).

Contoh berikut menunjukkan permintaan sampel dan respons menggunakan `AssumeRole`. Contoh permintaan ini mengasumsikan peran `demo` untuk durasi yang ditentukan dengan disertakan [Kebijakan sesi](access_policies.md#policies_session), [tanda sesi](id_session-tags.md), [ID eksternal](id_roles_common-scenarios_third-party.md), dan [identitas sumber](id_credentials_temp_control-access_monitor.md). Sesi yang dihasilkan diberi nama `John-session`. 

**Example Contoh Permintaan**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=AssumeRole
&RoleSessionName=John-session
&RoleArn=arn:aws::iam::123456789012:role/demo
&Policy=%7B%22Version%22%3A%222012-10-17		 	 	 %22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&ExternalId=123ABC
&SourceIdentity=DevUser123
&AUTHPARAMS
```

Nilai kebijakan yang ditunjukkan dalam contoh sebelumnya adalah versi kebijakan berkode URL dari kebijakan berikut ini:

------
#### [ JSON ]

****  

```
{"Version":"2012-10-17",		 	 	 "Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}
```

------

Parameter `AUTHPARAMS` dalam contoh adalah placeholder untuk *tanda tangan* Anda. Tanda tangan adalah informasi otentikasi yang harus Anda sertakan dengan permintaan AWS HTTP API. Sebaiknya gunakan [AWS SDKs](https://aws.amazon.com/tools/)untuk membuat permintaan API, dan salah satu manfaatnya adalah penandatanganan permintaan penandatanganan untuk Anda. SDKs Jika Anda harus membuat dan menandatangani permintaan API secara manual, lihat [Menandatangani AWS Permintaan Dengan Menggunakan Tanda Tangan Versi 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) di bagian *Referensi Umum Amazon Web Services*untuk mempelajari cara menandatangani permintaan.

Selain kredensial keamanan sementara, responsnya mencakup Amazon Resource Name (ARN) untuk pengguna federasi dan waktu kedaluwarsa kredensial tersebut.

**Example Contoh tanggapan**  

```
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleResult>
<SourceIdentity>DevUser123</SourceIdentity>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
  </SessionToken>
  <SecretAccessKey>
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-07-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
<AssumedRoleUser>
  <Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn>
  <AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId>
</AssumedRoleUser>
<PackedPolicySize>8</PackedPolicySize>
</AssumeRoleResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</AssumeRoleResponse>
```

**catatan**  
 AWS Konversi memampatkan kebijakan sesi dan tag sesi yang diteruskan ke dalam format biner yang dikemas yang memiliki batas terpisah. Permintaan Anda bisa gagal untuk batas ini bahkan jika teks biasa Anda memenuhi persyaratan lain. Elemen respons `PackedPolicySize` menunjukkan persentase seberapa dekat kebijakan dan tanda untuk permintaan Anda dengan batas ukuran atas.

## Meminta kredensi melalui penyedia OIDC
<a name="api_assumerolewithwebidentity"></a>

Operasi [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)API mengembalikan satu set kredensil AWS keamanan sementara dengan imbalan JSON Web Token (JWT). Ini termasuk penyedia identitas publik, seperti Login with Amazon, Facebook, Google, dan penyedia yang mengeluarkan JWTs yang kompatibel dengan penemuan OpenID Connect (OIDC), seperti GitHub tindakan atau Azure Devops. Untuk informasi selengkapnya, lihat [Federasi OIDC](id_roles_providers_oidc.md).

**catatan**  
`AssumeRoleWithWebIdentity`permintaan tidak ditandatangani dengan, dan tidak memerlukan AWS kredensil.

**Meminta kredensi melalui penyedia OIDC**

1. Panggil operasi [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html).

   Saat Anda menelepon`AssumeRoleWithWebIdentity`, AWS validasi token yang disajikan dengan memverifikasi tanda tangan digital menggunakan kunci publik yang tersedia melalui keyset web JSON (JWKS) IDP Anda. Jika token valid, dan semua kondisi yang ditetapkan dalam kebijakan kepercayaan peran IAM terpenuhi, AWS kembalikan informasi berikut kepada Anda:
   + Serangkaian kredensial keamanan sementara. Ini terdiri dari access key ID, secret access key, dan token sesi.
   + ID peran dan ARN peran yang diasumsikan.
   + Suatu nilai `SubjectFromWebIdentityToken` yang memuat ID pengguna unik.

1. Aplikasi Anda kemudian dapat menggunakan kredenal keamanan sementara yang dikembalikan dalam respons untuk melakukan panggilan AWS API. Ini adalah proses yang sama dengan membuat panggilan AWS API dengan kredensil keamanan jangka panjang. Perbedaannya adalah Anda harus menyertakan token sesi, yang memungkinkan AWS verifikasi bahwa kredensil keamanan sementara valid.

Aplikasi Anda harus menyimpan kredensil yang dikembalikan oleh AWS STS dan menyegarkannya sesuai kebutuhan. Jika aplikasi Anda dibuat menggunakan AWS SDK, SDK memiliki penyedia kredensi yang dapat menangani kredensi panggilan `AssumeRoleWithWebIdentity` dan penyegaran AWS sebelum kedaluwarsa. Untuk informasi selengkapnya, lihat [AWS SDKs dan Penyedia kredensi standar Alat](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) di Panduan Referensi Alat *AWS SDKs dan Alat*.

## Meminta kredensil melalui penyedia identitas SALL 2.0
<a name="api_assumerolewithsaml"></a>

Operasi [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)API mengembalikan satu set kredensil keamanan sementara untuk prinsipal federasi SAMP yang diautentikasi oleh sistem identitas organisasi Anda yang ada. Pengguna juga harus menggunakan [SAML](https://www.oasis-open.org/standards#samlv2.0) 2.0 (Security Assertion Markup Language) untuk menyampaikan informasi autentikasi dan otorisasi ke AWS. Operasi API ini berguna pada organisasi yang telah mengintegrasikan sistem identitas mereka (seperti Windows Active Directory atau OpenLDAP) dengan perangkat lunak yang dapat menghasilkan pernyataan SAML. Integrasi tersebut menyediakan informasi tentang identitas dan izin pengguna (seperti ctive Directory Federation Services atau Shibboleth). Untuk informasi selengkapnya, lihat [Federasi SAMP 2.0](id_roles_providers_saml.md).

1. Panggil operasi [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html).

   Ini adalah panggilan yang tidak ditandatangani, artinya Anda tidak perlu mengautentikasi kredensi AWS keamanan sebelum membuat permintaan.
**catatan**  
Sebuah panggilan ke `AssumeRoleWithSAML` tidak ditandatangani (dienkripsi). Oleh karena itu, Anda hanya boleh menyertakan kebijakan sesi opsional jika permintaan dikirim melalui perantara terpercaya. Dalam hal ini, seseorang dapat mengubah kebijakan untuk menghapus pembatasan.

1. Saat Anda menelepon`AssumeRoleWithSAML`, AWS verifikasi keaslian pernyataan SAFL. Dengan asumsi bahwa penyedia identitas memvalidasi pernyataan, AWS mengembalikan informasi berikut kepada Anda:
   + Serangkaian kredensial keamanan sementara. Ini terdiri dari access key ID, secret access key, dan token sesi. 
   + ID peran dan ARN peran yang diasumsikan. 
   + Nilai `Audience` yang berisi nilai atribut `Recipient` dari `SubjectConfirmationData` elemen pernyataan SAML.
   + Nilai `Issuer` yang berisi nilai dari elemen `Issuer` pernyataan SAML.
   + `NameQualifier`Elemen yang berisi nilai hash yang dibangun dari `Issuer` nilai, Akun AWS ID, dan nama ramah penyedia SAMP. Ketika dikombinasikan dengan `Subject` elemen, mereka dapat secara unik mengidentifikasi prinsipal federasi SALL.
   + Suatu Elemen `Subject` yang berisi nilai dari elemen `NameID` dalam elemen `Subject` pernyataan SAML.
   + Suatu elemen `SubjectType` yang menunjukkan format elemen `Subject`. Kunci ini dapat berupa `persistent`, `transient`, atau URI `Format` penuh dari elemen `Subject` dan `NameID` yang digunakan dalam pernyataan SAML Anda. Untuk informasi tentang elemen `NameID` `Format` atribut, lihat [Konfigurasikan pernyataan SAMP untuk respons otentikasi](id_roles_providers_create_saml_assertions.md). 

1. Gunakan kredenal keamanan sementara yang ditampilkan dalam respons untuk melakukan panggilan AWS API. Ini adalah proses yang sama dengan membuat panggilan AWS API dengan kredensil keamanan jangka panjang. Perbedaannya adalah bahwa Anda harus menyertakan token sesi, yang memungkinkan AWS memverifikasi bahwa kredensial keamanan sementara valid.

Aplikasi Anda harus menyimpan kredensial. Secara default kredensial kedaluwarsa setelah satu jam. Jika Anda tidak menggunakan tindakan [STSCredentialsPenyedia Amazon](https://aws.amazon.com/blogs/mobile/using-the-amazoncredentialsprovider-protocol-in-the-aws-sdk-for-ios) di AWS SDK, terserah Anda dan aplikasi Anda untuk menelepon `AssumeRoleWithSAML` lagi. Panggil operasi ini untuk mendapatkan rangkaian kredensial keamanan sementara yang baru sebelum kredensial lama kedaluwarsa.

## Meminta kredensi melalui pialang identitas khusus
<a name="api_getfederationtoken"></a>

Operasi [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)API mengembalikan satu set kredensil keamanan sementara untuk prinsipal pengguna AWS STS federasi. API ini berbeda dari `AssumeRole` karena periode kedaluwarsa default jauh lebih lama (12 jam, bukan satu jam). Sebagai tambahan, Anda dapat menggunakan parameter `DurationSeconds` untuk menentukan durasi untuk kredensial keamanan sementara agar tetap valid. Kredensi yang dihasilkan berlaku untuk durasi yang ditentukan, antara 900 detik (15 menit) hingga 129.600 detik (36 jam). Masa kedaluwarsa yang lebih lama dapat membantu mengurangi jumlah panggilan AWS karena Anda tidak perlu mendapatkan kredensi baru sesering mungkin.

1. Otentikasi dengan kredensi AWS keamanan pengguna IAM spesifik Anda. Panggilan ini harus dilakukan menggunakan kredensil AWS keamanan yang valid.

1. Panggil operasi [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html).

`GetFederationToken`Panggilan mengembalikan kredensil keamanan sementara yang terdiri dari token sesi, kunci akses, kunci rahasia, dan kedaluwarsa. Anda dapat menggunakan `GetFederationToken` jika anda ingin mengelola izin di dalam organization anda (misalnya, menggunakan aplikasi proksi untuk menetapkan izin).

Contoh berikut menunjukkan permintaan sampel dan respons yang menggunakan `GetFederationToken`. Permintaan contoh ini meminta menggabungkan pengguna panggilan untuk durasi yang ditentukan dengan ARN [kebijakan sesi](access_policies.md#policies_session) dan[tanda sesi](id_session-tags.md). Sesi yang dihasilkan diberi nama `Jane-session`.

**Example Contoh Permintaan**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetFederationToken
&Name=Jane-session
&PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&AUTHPARAMS
```

Kebijakan ARN yang ditunjukkan dalam contoh sebelumnya mencakup ARN berkode URL berikut: 

`arn:aws:iam::123456789012:policy/Role1policy`

Selain itu, perhatikan bahwa parameter `&AUTHPARAMS` dalam contoh dimaksudkan sebagai kerangka untuk informasi autentikasi. Ini adalah *tanda tangan*, yang harus Anda sertakan dengan permintaan AWS HTTP API. Sebaiknya gunakan [AWS SDKs](https://aws.amazon.com/tools/)untuk membuat permintaan API, dan salah satu manfaatnya adalah penandatanganan permintaan penandatanganan untuk Anda. SDKs Jika Anda harus membuat dan menandatangani permintaan API secara manual, buka [AWS Permintaan Menandatangani Dengan Menggunakan Tanda Tangan Versi 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) di bagian *Referensi Umum Amazon Web Services*untuk mempelajari cara menandatangani permintaan.

Selain kredensial keamanan sementara, responsnya mencakup Amazon Resource Name (ARN) untuk pengguna federasi dan waktu kedaluwarsa kredensial tersebut.

**Example Contoh tanggapan**  

```
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetFederationTokenResult>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE==
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-04-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId>
</Credentials>
<FederatedUser>
  <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn>
  <FederatedUserId>123456789012:Jean</FederatedUserId>
</FederatedUser>
<PackedPolicySize>4</PackedPolicySize>
</GetFederationTokenResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</GetFederationTokenResponse>
```

**catatan**  
 AWS Konversi memampatkan kebijakan sesi dan tag sesi yang diteruskan ke dalam format biner yang dikemas yang memiliki batas terpisah. Permintaan Anda bisa gagal untuk batas ini bahkan jika teks biasa Anda memenuhi persyaratan lain. Elemen respons `PackedPolicySize` menunjukkan persentase seberapa dekat kebijakan dan tanda untuk permintaan Anda dengan batas ukuran atas.

AWS menyarankan agar Anda memberikan izin di tingkat sumber daya (misalnya, Anda melampirkan kebijakan berbasis sumber daya ke bucket Amazon S3), Anda dapat menghilangkan parameternya. `Policy` Namun, jika Anda tidak menyertakan kebijakan untuk prinsipal pengguna AWS STS federasi, kredensil keamanan sementara tidak akan memberikan izin apa pun. Dalam kasus ini, Anda *harus* menggunakan kebijakan sumber daya untuk memberikan akses pengguna gabungan ke sumber daya AWS Anda.

Misalnya, anggaplah Akun AWS nomor Anda 111122223333, dan Anda memiliki bucket Amazon S3 yang ingin Anda izinkan untuk diakses oleh Susan. Kredensial keamanan sementara Susan tidak menyertakan kebijakan untuk bucket. Dalam hal ini, Anda perlu memastikan bahwa bucket memiliki kebijakan ARN yang cocok dengan ARN Susan, seperti `arn:aws:sts::111122223333:federated-user/Susan`. 

## Meminta kredensi untuk pengguna di lingkungan yang tidak tepercaya
<a name="api_getsessiontoken"></a>

Operasi API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) mengembalikan satu set kredensial keamanan sementara untuk pengguna IAM yang sudah ada. Ini berguna untuk memberikan keamanan yang ditingkatkan, seperti mengizinkan AWS permintaan hanya ketika MFA diaktifkan untuk pengguna IAM. Karena kredensial bersifat sementara, kredensial ini memberikan keamanan yang lebih baik ketika Anda memiliki pengguna IAM yang mengakses sumber daya Anda melalui lingkungan yang kurang aman. Contoh lingkungan yang kurang aman termasuk perangkat seluler atau browser web.

1. Otentikasi dengan kredensi AWS keamanan pengguna IAM spesifik Anda. Panggilan ini harus dilakukan menggunakan kredensil AWS keamanan yang valid.

1. Panggil operasi [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html).

1. `GetSessionToken`mengembalikan kredensil keamanan sementara yang terdiri dari token sesi, ID kunci akses, dan kunci akses rahasia.

Secara default, kredensial keamanan sementara untuk pengguna IAM berlaku selama maksimal 12 jam. Tetapi Anda dapat meminta durasi sesingkat 15 menit atau selama 36 jam menggunakan parameter `DurationSeconds`. Untuk alasan keamanan, token untuk sebuah Pengguna root akun AWS dibatasi hingga durasi satu jam.

Contoh berikut menunjukkan permintaan sampel dan respons menggunakan `GetSessionToken`. Jawaban juga mencakup waktu kedaluwarsa kredensial keamanan sementara. 

**Example Contoh Permintaan**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=1800
&AUTHPARAMS
```

Parameter `AUTHPARAMS` dalam contoh adalah placeholder untuk *tanda tangan* Anda. Tanda tangan adalah informasi otentikasi yang harus Anda sertakan dengan permintaan AWS HTTP API. Sebaiknya gunakan [AWS SDKs](https://aws.amazon.com/tools/)untuk membuat permintaan API, dan salah satu manfaatnya adalah penandatanganan permintaan penandatanganan untuk Anda. SDKs Jika Anda harus membuat dan menandatangani permintaan API secara manual, buka [AWS Permintaan Menandatangani Dengan Menggunakan Tanda Tangan Versi 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) di bagian *Referensi Umum Amazon Web Services*untuk mempelajari cara menandatangani permintaan.

**Example Contoh tanggapan**  

```
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetSessionTokenResult>
<Credentials>
  <SessionToken>
   AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L
   To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z
   rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp
   Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2011-07-11T19:55:29.611Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
</GetSessionTokenResult>
<ResponseMetadata>
<RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId>
</ResponseMetadata>
</GetSessionTokenResponse>
```

Secara opsional, `GetSessionToken` permintaan dapat menyertakan `SerialNumber` dan `TokenCode` nilai untuk verifikasi otentikasi AWS multi-faktor (MFA). Jika nilai yang diberikan valid, AWS STS berikan kredensil keamanan sementara yang mencakup status otentikasi MFA. Kredensi keamanan sementara kemudian dapat digunakan untuk mengakses operasi API atau AWS situs web yang dilindungi MFA selama otentikasi MFA valid. 

Contoh berikut menunjukkan permintaan `GetSessionToken` yang menyertakan kode verifikasi MFA dan nomor seri perangkat. 

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=7200
&SerialNumber=YourMFADeviceSerialNumber
&TokenCode=123456
&AUTHPARAMS
```

**catatan**  
Panggilan untuk AWS STS dapat ke titik akhir global atau ke salah satu titik akhir Regional yang Anda aktifkan. Akun AWS Untuk informasi lebih lanjut, lihat [bagian AWS STS pada *Wilayah dan Titik Akhir*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region).  
Parameter `AUTHPARAMS` dalam contoh adalah placeholder untuk *tanda tangan* Anda. Tanda tangan adalah informasi otentikasi yang harus Anda sertakan dengan permintaan AWS HTTP API. Sebaiknya gunakan [AWS SDKs](https://aws.amazon.com/tools/)untuk membuat permintaan API, dan salah satu manfaatnya adalah penandatanganan permintaan penandatanganan untuk Anda. SDKs Jika Anda harus membuat dan menandatangani permintaan API secara manual, lihat [Menandatangani AWS Permintaan Dengan Menggunakan Tanda Tangan Versi 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) di bagian *Referensi Umum Amazon Web Services*untuk mempelajari cara menandatangani permintaan.

# Gunakan kredensi sementara dengan sumber daya AWS
<a name="id_credentials_temp_use-resources"></a>

Anda dapat menggunakan kredenal keamanan sementara untuk membuat permintaan terprogram untuk AWS sumber daya menggunakan AWS CLI atau AWS API (menggunakan). [AWS SDKs](https://aws.amazon.com/tools/) Kredensi sementara memberikan izin yang sama dengan kredenal keamanan jangka panjang, seperti kredenal pengguna IAM. Namun, ada beberapa perbedaan:
+ Saat Anda melakukan panggilan menggunakan kredensi keamanan sementara, panggilan harus menyertakan token sesi, yang dikembalikan bersama dengan kredensial sementara tersebut. AWS menggunakan token sesi untuk memvalidasi kredenal keamanan sementara. 
+ Kredensi sementara kedaluwarsa setelah interval tertentu. Setelah kredensi sementara kedaluwarsa, panggilan apa pun yang Anda lakukan dengan kredensi tersebut akan gagal, jadi Anda harus membuat kumpulan kredensi sementara yang baru. Kredensi sementara tidak dapat diperpanjang atau disegarkan di luar interval yang ditentukan asli.
+ Saat Anda menggunakan kredensial sementara untuk membuat permintaan, prinsipal Anda mungkin mencakup satu set tanda. Tanda ini berasal dari tanda sesi dan tanda yang dilampirkan pada peran yang Anda asumsikan. Untuk informasi lebih lanjut tentang tanda sesi, lihat [Lulus tag sesi di AWS STS](id_session-tags.md).

Jika Anda menggunakan, [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/)(AWS CLI) [AWS SDKs](https://aws.amazon.com/tools), atau [Tools untuk Windows PowerShell, cara untuk](https://aws.amazon.com/powershell) mendapatkan dan menggunakan kredenal keamanan sementara berbeda dengan konteksnya. Jika Anda menjalankan kode, AWS CLI, atau PowerShell perintah Alat untuk Windows di dalam instans EC2, Anda dapat memanfaatkan peran untuk Amazon EC2. Jika tidak, Anda dapat menghubungi [API AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/) untuk mendapatkan kredensial sementara, kemudian menggunakannya secara eksplisit untuk melakukan panggilan ke layanan AWS .

**catatan**  
Anda dapat menggunakan AWS Security Token Service (AWS STS) untuk membuat dan menyediakan kredenal keamanan sementara kepada pengguna tepercaya yang dapat mengontrol akses ke sumber daya Anda AWS . Untuk informasi lebih lanjut tentang AWS STS, lihat[Kredensial keamanan sementara di IAM](id_credentials_temp.md). AWS STS adalah layanan global yang memiliki titik akhir default di`https://sts.amazonaws.com`. Titik akhir ini berada di Wilayah AS Timur (Virginia N.), meskipun kredensi yang Anda dapatkan dari titik ini dan titik akhir lainnya valid secara global. Kredensial ini bekerja dengan layanan dan sumber daya di Wilayah mana pun. Anda juga dapat memilih untuk melakukan panggilan AWS STS API ke titik akhir di salah satu Wilayah yang didukung. Hal ini dapat mengurangi latensi dengan membuat permintaan dari server di Wilayah yang secara geografis lebih dekat dengan Anda. Tidak peduli dari Wilayah mana kredensial Anda berasal, mereka bekerja secara global. Untuk informasi selengkapnya, lihat [Kelola AWS STS dalam sebuah Wilayah AWS](id_credentials_temp_enable-regions.md).

**Contents**
+ [Menggunakan kredensial sementara di instans Amazon EC2](#using-temp-creds-sdk-ec2-instances)
+ [Menggunakan kredensi keamanan sementara dengan AWS SDKs](#using-temp-creds-sdk)
+ [Menggunakan kredensi keamanan sementara dengan AWS CLI](#using-temp-creds-sdk-cli)
+ [Menggunakan kredensial keamanan sementara dengan operasi API](#RequestWithSTS)
+ [Informasi selengkapnya](#using-temp-creds-more-info)

## Menggunakan kredensial sementara di instans Amazon EC2
<a name="using-temp-creds-sdk-ec2-instances"></a>

Jika Anda ingin menjalankan AWS CLI perintah atau kode di dalam instans EC2, cara yang disarankan untuk mendapatkan kredensi adalah dengan menggunakan [peran untuk Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html). Anda membuat peran IAM yang menentukan izin yang ingin Anda berikan ke aplikasi yang berjalan di instans EC2 Saat Anda meluncurkan instans, Anda mengaitkan peran dengan instans tersebut.

Aplikasi, AWS CLI, dan Alat untuk PowerShell perintah Windows yang berjalan pada instance kemudian bisa mendapatkan kredenal keamanan sementara otomatis dari metadata instance. Anda tidak perlu secara eksplisit mendapatkan kredensial kerahasiaan keamanan sementara. The AWS SDKs, AWS CLI, and Tools untuk Windows PowerShell secara otomatis mendapatkan kredensi dari Layanan Metadata Instans EC2 (IMDS) dan menggunakannya. Kredensial sementara memiliki izin yang Anda tentukan untuk peran yang terkait dengan instans.

Untuk informasi selengkapnya dan untuk contoh, lihat berikut ini:
+  [Menggunakan Peran IAM untuk Memberikan Akses ke AWS Sumber Daya di Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) - AWS SDK untuk Java
+  [Memberikan Akses Menggunakan Peran IAM](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html) - AWS SDK untuk .NET 
+  [Menciptakan Peran](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/iam-example-create-role.html) - AWS SDK untuk Ruby

## Menggunakan kredensi keamanan sementara dengan AWS SDKs
<a name="using-temp-creds-sdk"></a>

Untuk menggunakan kredensi keamanan sementara dalam kode, Anda secara terprogram memanggil AWS STS API seperti `AssumeRole` dan mengekstrak kredenal dan token sesi yang dihasilkan. Anda kemudian menggunakan nilai-nilai tersebut sebagai kredensi untuk panggilan berikutnya ke. AWS Contoh berikut menunjukkan pseudocode untuk cara menggunakan kredenal keamanan sementara jika Anda menggunakan SDK: AWS 

```
assumeRoleResult = AssumeRole(role-arn);
tempCredentials = new SessionAWSCredentials(
   assumeRoleResult.AccessKeyId, 
   assumeRoleResult.SecretAccessKey, 
   assumeRoleResult.SessionToken);
s3Request = CreateAmazonS3Client(tempCredentials);
```

Untuk contoh yang ditulis dalam Python (menggunakan [AWS SDK for Python (Boto)](https://aws.amazon.com/sdk-for-python/)), lihat[Beralih ke peran IAM (AWS API)](id_roles_use_switch-role-api.md). Contoh ini menunjukkan cara melakukan panggilan `AssumeRole` untuk mendapatkan kredensial keamanan sementara dan kemudian menggunakan kredensial tersebut untuk melakukan panggilan ke Amazon S3

Untuk detail tentang cara memanggil `AssumeRole``GetFederationToken`, dan operasi API lainnya, lihat [Referensi AWS Security Token Service API](https://docs.aws.amazon.com/STS/latest/APIReference/). Untuk informasi tentang mendapatkan kredensial keamanan sementara dan token sesi dari hasilnya, lihat dokumentasi untuk SDK yang sedang Anda kerjakan. Anda dapat menemukan dokumentasi untuk semua AWS SDKs pada [halaman AWS dokumentasi](https://aws.amazon.com/documentation) utama, di bagian **SDKs dan Toolkit**.

Anda harus memastikan bahwa Anda mendapatkan set kredensial baru sebelum kredensial yang lama kedaluwarsa. Di beberapa SDKs, Anda dapat menggunakan penyedia yang mengelola proses penyegaran kredenal untuk Anda; periksa dokumentasi untuk SDK yang Anda gunakan. 

## Menggunakan kredensi keamanan sementara dengan AWS CLI
<a name="using-temp-creds-sdk-cli"></a>

Anda dapat menggunakan kredensial keamanan sementara dengan AWS CLI Ini dapat berguna untuk menguji kebijakan. 

Dengan menggunakan [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/), Anda dapat memanggil [AWS STS API](https://docs.aws.amazon.com/STS/latest/APIReference/) seperti `AssumeRole` atau `GetFederationToken` dan kemudian menangkap output yang dihasilkan. Contoh berikut ini menunjukkan panggilan ke `AssumeRole` yang mengirimkan output ke file. Dalam contoh, `profile` parameter diasumsikan sebagai profil dalam file AWS CLI konfigurasi. Itu juga diasumsikan sebagai kredensial referensi untuk pengguna IAM yang memiliki izin untuk mengambil peran tersebut.

```
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name > assume-role-output.txt
```

Setelah perintah selesai, Anda dapat mengekstrak ID kunci akses, kunci akses rahasia, dan token sesi dari mana pun Anda merutekannya. Anda dapat melakukannya secara manual atau dengan menggunakan skrip. Kemudian Anda dapat menetapkan nilai-nilai ini ke variabel lingkungan. 

Ketika Anda menjalankan AWS CLI perintah, AWS CLI mencari kredensi dalam urutan tertentu—pertama dalam variabel lingkungan dan kemudian di file konfigurasi. Oleh karena itu, setelah Anda memasukkan kredensi sementara ke dalam variabel lingkungan, kredensialnya akan AWS CLI digunakan secara default. (Jika Anda menentukan `profile` parameter dalam perintah, AWS CLI melewatkan variabel lingkungan. Sebagai gantinya, AWS CLI tampilan dalam file konfigurasi, yang memungkinkan Anda mengganti kredensi dalam variabel lingkungan jika perlu.) 

Contoh berikut menunjukkan bagaimana Anda dapat mengatur variabel lingkungan untuk kredenal keamanan sementara dan kemudian memanggil perintah AWS CLI . Karena tidak ada `profile` parameter yang disertakan dalam AWS CLI perintah, AWS CLI mencari kredensi terlebih dahulu dalam variabel lingkungan dan oleh karena itu menggunakan kredenal sementara. 

**Linux**

```
$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token>
$ aws ec2 describe-instances --region us-west-1
```

**Windows**

```
C:\> SET AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
C:\> SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of token> 
C:\> aws ec2 describe-instances --region us-west-1
```

## Menggunakan kredensial keamanan sementara dengan operasi API
<a name="RequestWithSTS"></a>

Jika Anda membuat permintaan HTTPS API langsung AWS, Anda dapat menandatangani permintaan tersebut dengan kredenal keamanan sementara yang Anda dapatkan dari AWS Security Token Service ()AWS STS. Untuk melakukan ini, Anda menggunakan ID kunci akses dan kunci akses rahasia yang Anda terima AWS STS. Anda menggunakan access key ID dan secret access key dengan cara yang sama seperti Anda menggunakan kredensial jangka panjang untuk menandatangani permintaan. Anda juga menambahkan ke permintaan API Anda token sesi yang Anda terima AWS STS. Anda menambahkan token sesi untuk header HTTP atau parameter string kueri bernama `X-Amz-Security-Token`. Anda menambahkan token sesi untuk HTTP header *atau*parameter string kueri, tetapi tidak keduanya. Untuk informasi selengkapnya tentang penandatanganan permintaan API HTTPS, lihat [Menandatangani Permintaan AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) di bagian *Referensi Umum AWS*.

## Informasi selengkapnya
<a name="using-temp-creds-more-info"></a>

Untuk informasi selengkapnya tentang penggunaan AWS STS dengan AWS layanan lain, lihat tautan berikut:
+ **Amazon S3**. Lihat [Membuat permintaan menggunakan kredensi sementara pengguna IAM atau Membuat permintaan menggunakan kredenal](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempSessionToken.html) [sementara pengguna gabungan di Panduan Pengguna Layanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempFederationToken.html) Penyimpanan Sederhana *Amazon*.
+ **Amazon SNS**. Lihat [Menggunakan kebijakan berbasis identitas dengan Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#UsingTemporarySecurityCredentials_SNS) di Panduan Pengembang Layanan Pemberitahuan *Sederhana Amazon*.
+ **Amazon SQS**. Lihat [Manajemen identitas dan akses di Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html#UsingTemporarySecurityCredentials_SQS) di Panduan Pengembang *Layanan Antrian Sederhana Amazon*.
+ **Amazon SimpleDB**. Lihat [Menggunakan Kredenal Keamanan Sementara](https://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?UsingTemporarySecurityCredentials_SDB.html) di Panduan Pengembang *Amazon SimpleDB*.

# Izin untuk kredensial keamanan sementara
<a name="id_credentials_temp_control-access"></a>

Anda dapat menggunakan AWS Security Token Service (AWS STS) untuk membuat dan menyediakan kredenal keamanan sementara kepada pengguna tepercaya yang dapat mengontrol akses ke sumber daya Anda AWS . Untuk informasi lebih lanjut tentang AWS STS, lihat[Kredensial keamanan sementara di IAM](id_credentials_temp.md). Setelah AWS STS mengeluarkan kredensial keamanan sementara, kredensial tersebut berlaku selama periode kedaluwarsa dan tidak dapat dicabut. Namun, izin yang diberikan untuk kredensial keamanan sementara dievaluasi setiap kali sebuah permintaan dibuat ketika menggunakan kredensial tersebut, sehingga Anda dapat memperoleh dampak dari mencabut kredensial dengan mengubah hak akses mereka setelah diterbitkan. 

Topik berikut menganggap Anda memiliki pengetahuan tentang AWS izin dan kebijakan. Untuk informasi lebih lanjut pada topik ini, lihat [Manajemen akses untuk AWS sumber daya](access.md). 

**Topics**
+ [Izin untuk AssumeRole, AssumeRoleWith SALL, dan AssumeRoleWithWebIdentity](id_credentials_temp_control-access_assumerole.md)
+ [Memantau dan mengontrol tindakan yang diambil dengan peran yang diasumsikan](id_credentials_temp_control-access_monitor.md)
+ [Izin untuk GetFederationToken](id_credentials_temp_control-access_getfederationtoken.md)
+ [Izin untuk GetSessionToken](id_credentials_temp_control-access_getsessiontoken.md)
+ [Menonaktifkan izin untuk kredensial keamanan sementara](id_credentials_temp_control-access_disable-perms.md)
+ [Memberikan izin untuk membuat kredensial keamanan sementara](id_credentials_temp_control-access_enable-create.md)
+ [Memberikan izin untuk menggunakan sesi konsol yang disempurnakan identitas](id_credentials_temp_control-access_sts-setcontext.md)

# Izin untuk AssumeRole, AssumeRoleWith SALL, dan AssumeRoleWithWebIdentity
<a name="id_credentials_temp_control-access_assumerole"></a>

Kebijakan izin dari peran yang sedang diasumsikan menentukan izin untuk kredensial keamanan sementara yang dikembalikan oleh `AssumeRole`, `AssumeRoleWithSAML`, dan `AssumeRoleWithWebIdentity`. Anda menentukan izin ini saat membuat atau memperbarui peran. 

Atau, Anda dapat meneruskan [kebijakan sesi](access_policies.md#policies_session) inline atau terkelola sebagai parameter Operasi API `AssumeRole`, `AssumeRoleWithSAML`, atau `AssumeRoleWithWebIdentity`. Kebijakan sesi membatasi izin untuk sesi kredensial sementara peran tersebut. Izin sesi yang dihasilkan adalah titik pertemuan antara kebijakan berbasis identitas peran dan kebijakan sesi. Anda dapat menggunakan kredensi sementara peran dalam panggilan AWS API berikutnya untuk mengakses sumber daya di akun yang memiliki peran tersebut. Anda tidak dapat menggunakan kebijakan sesi untuk memberikan lebih banyak izin daripada yang diizinkan oleh kebijakan berbasis identitas dari peran yang sedang diasumsikan. Untuk mempelajari lebih lanjut tentang bagaimana AWS menentukan izin yang efektif dari suatu peran, lihat [Logika evaluasi kebijakan](reference_policies_evaluation-logic.md).

![\[PermissionsWhenPassingRoles_Diagram\]](http://docs.aws.amazon.com/id_id/IAM/latest/UserGuide/images/role_passed_policy_permissions.png)


Kebijakan yang dilampirkan pada kredensil yang membuat panggilan asli tidak `AssumeRole` dievaluasi oleh AWS saat membuat keputusan otorisasi “izinkan” atau “tolak”. Pengguna untuk sementara menyerahkan izin asli yang mendukung izin yang ditetapkan oleh peran yang diasumsikan. Dalam kasus operasi `AssumeRoleWithSAML` dan `AssumeRoleWithWebIdentity` API, tidak ada kebijakan untuk dievaluasi karena pemanggil API bukan AWS identitas.

## Contoh: Menetapkan izin menggunakan AssumeRole
<a name="permissions-assume-role-example"></a>

Anda dapat menggunakan Operasi API `AssumeRole` dengan berbagai jenis kebijakan. Berikut adalah beberapa contoh.

### Kebijakan izin peran
<a name="permissions-assume-role-example-role-access-policy"></a>

Dalam contoh ini, Anda memanggil operasi API `AssumeRole` tanpa menetapkan kebijakan sesi pada opsional parameter `Policy`. Izin yang diberikan untuk kredensial sementara ditentukan oleh kebijakan izin dari peran yang diasumsikan. Contoh kebijakan izin berikut memberikan izin peran untuk mencantumkan semua objek yang terkandung dalam bucket S3 dengan nama `productionapp`. Hal ini juga memungkinkan peran untuk mendapatkan, menempatkan, dan menghapus objek dalam bucket itu.

**Example Contoh kebijakan izin peran**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}
```

### Kebijakan sesi diberikan sebagai parameter
<a name="permissions-assume-role-example-passed-policy"></a>

Bayangkan Anda ingin mengizinkan pengguna untuk mengambil peran yang sama seperti dalam contoh sebelumnya. Tetapi dalam hal ini Anda ingin sesi peran hanya memiliki izin untuk mendapatkan dan memasukkan objek ke dalam bucket S3 `productionapp`. Anda tidak ingin mengizinkan mereka untuk menghapus objek. Salah satu cara untuk mencapainya adalah dengan membuat peran baru dan menentukan izin yang diinginkan dalam kebijakan izin peran tersebut. Cara lain untuk mencapai ini adalah dengan memanggil API `AssumeRole` dan menyertakan kebijakan sesi dalam opsional parameter `Policy` sebagai bagian dari operasi API. Izin sesi yang dihasilkan adalah titik pertemuan antara kebijakan berbasis identitas peran dan kebijakan sesi. Kebijakan sesi tidak dapat digunakan untuk memberikan lebih banyak izin daripada yang diizinkan oleh kebijakan berbasis identitas dari peran yang sedang diasumsikan. Untuk informasi lebih lanjut tentang izin sesi peran, lihat [Kebijakan sesi](access_policies.md#policies_session). 

Setelah Anda menerima kredensial sementara sesi baru, Anda dapat memberikannya kepada pengguna yang Anda ingin untuk memiliki izin tersebut.

Misalnya, bayangkan kebijakan berikut ini diberikan sebagai parameter panggilan API. Orang yang menggunakan sesi memiliki izin untuk hanya melakukan tindakan berikut: 
+ Mencantumkan semua objek ke dalam bucket `productionapp`.
+ Mendapatkan dan memasukkan objek ke dalam bucket `productionapp`.

Dalam kebijakan sesi berikut, izin `s3:DeleteObject` difilter dan sesi yang diasumsikan tidak diberikan izin `s3:DeleteObject`. Kebijakan menetapkan izin maksimum untuk sesi peran sehingga menggantikan kebijakan izin yang ada pada peran tersebut.

**Example Contoh kebijakan sesi melewati Panggilan API `AssumeRole`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}
```

### Kebijakan berbasis sumber daya
<a name="permissions-assume-role-example-resource-based-policy"></a>

Beberapa AWS sumber daya mendukung kebijakan berbasis sumber daya, dan kebijakan ini menyediakan mekanisme lain untuk menentukan izin yang memengaruhi kredensi keamanan sementara. Hanya beberapa sumber daya, seperti bucket Amazon S3, topik Amazon SNS, dan antrean Amazon SQS mendukung kebijakan berbasis sumber daya. Contoh berikut memperluas contoh sebelumnya, menggunakan bucket S3 bernama `productionapp`. Kebijakan berikut ini terlampir di bucket. 

Ketika Anda melampirkan kebijakan berbasis sumber daya berikut ini ke bucket `productionapp`, *semua* pengguna tidak diberi izin untuk menghapus objek dari bucket. (Lihat elemen `Principal` dalam kebijakan.) Ini termasuk semua pengguna peran yang diasumsikan, meskipun kebijakan izin peran memberikan izin `DeleteObject`. Sebuah pernyataan `Deny` yang jelas selalu lebih diutamakan daripada pernyataan `Allow`.

**Example Contoh kebijakan bucket**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": {"AWS": "*"},
    "Effect": "Deny",
    "Action": "s3:DeleteObject",
    "Resource": "arn:aws:s3:::productionapp/*"
  }
}
```

Untuk informasi selengkapnya tentang bagaimana beberapa jenis kebijakan digabungkan dan dievaluasi oleh AWS, lihat[Logika evaluasi kebijakan](reference_policies_evaluation-logic.md).

# Memantau dan mengontrol tindakan yang diambil dengan peran yang diasumsikan
<a name="id_credentials_temp_control-access_monitor"></a>

[Peran IAM](id_roles.md) [adalah objek di IAM yang diberi izin.](access_policies.md) Saat Anda [mengambil peran tersebut](id_roles_manage-assume.md) menggunakan identitas IAM atau identitas dari luar AWS, Anda menerima sesi dengan izin yang ditetapkan ke peran tersebut. 

Saat Anda melakukan tindakan AWS, informasi tentang sesi Anda dapat dicatat AWS CloudTrail untuk dipantau oleh administrator akun Anda. Administrator dapat mengkonfigurasi peran untuk meminta identitas untuk melewati string kustom yang mengidentifikasi orang atau aplikasi yang melakukan tindakan di AWS. Informasi identitas ini disimpan sebagai *identitas sumber* di AWS CloudTrail. Saat administrator meninjau aktivitas CloudTrail, mereka dapat melihat informasi identitas sumber untuk menentukan siapa atau tindakan apa yang dilakukan dengan sesi peran yang diasumsikan.

Setelah identitas sumber ditetapkan, identitas tersebut hadir dalam permintaan untuk AWS tindakan apa pun yang diambil selama sesi peran. Nilai yang ditetapkan tetap ada ketika peran digunakan untuk mengambil peran lain melalui AWS CLI atau AWS API, yang dikenal sebagai [rantai peran](id_roles.md#iam-term-role-chaining). Nilai yang ditetapkan tidak dapat diubah selama sesi peran. Administrator dapat mengonfigurasi izin terperinci berdasarkan keberadaan atau nilai identitas sumber untuk mengontrol AWS tindakan lebih lanjut yang diambil dengan peran bersama. Anda dapat memutuskan apakah atribut identitas sumber dapat digunakan, apakah itu diperlukan, dan apakah nilai dapat digunakan.



Cara Anda menggunakan identitas sumber berbeda dari nama sesi peran dan tanda sesi dalam cara yang penting. Nilai identitas sumber tidak dapat diubah setelah ditetapkan, dan tetap ada untuk tindakan tambahan yang diambil dengan sesi peran. Berikut cara menggunakan tanda sesi dan nama sesi peran: 
+ **Tag sesi** — Anda dapat meneruskan tag sesi saat Anda mengambil peran atau menyatukan pengguna. Tanda sesi hadir ketika peran diasumsikan. Kemudian, Anda dapat menentukan kebijakan yang menggunakan kunci syarat tanda untuk memberikan izin kepada penanggung jawab Anda berdasarkan tanda mereka. Kemudian Anda dapat menggunakan CloudTrail untuk melihat permintaan yang dibuat untuk mengambil peran atau pengguna federasi. Untuk mempelajari lebih lanjut tentang tanda sesi, lihat [Lulus tag sesi di AWS STS](id_session-tags.md).
+ **Nama sesi peran** — Anda dapat menggunakan kunci `sts:RoleSessionName` kondisi dalam kebijakan kepercayaan peran untuk mengharuskan pengguna Anda memberikan nama sesi tertentu saat mereka mengambil peran. Nama sesi peran dapat digunakan untuk membedakan sesi peran ketika peran digunakan oleh penanggung jawab yang berbeda. Untuk mempelajari lebih lanjut tentang nama sesi peran, lihat [sts: RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Kami menyarankan Anda menggunakan identitas sumber ketika Anda ingin mengontrol identitas yang mengasumsikan peran. Identitas sumber juga berguna untuk penambangan CloudTrail log untuk menentukan siapa yang menggunakan peran untuk melakukan tindakan. 

**Topics**
+ [Menyiapkan untuk menggunakan identitas sumber](#id_credentials_temp_control-access_monitor-setup)
+ [Hal yang perlu diketahui tentang identitas sumber](#id_credentials_temp_control-access_monitor-know)
+ [Izin yang diperlukan untuk menetapkan identitas sumber](#id_credentials_temp_control-access_monitor-perms)
+ [Menentukan identitas sumber ketika mengasumsikan peran](#id_credentials_temp_control-access_monitor-specify-sourceid)
+ [Menggunakan identitas sumber dengan AssumeRole](#id_credentials_temp_control-access_monitor-assume-role)
+ [Menggunakan identitas sumber dengan AssumeRoleWith SAFL](#id_credentials_temp_control-access_monitor-assume-role-saml)
+ [Menggunakan identitas sumber dengan AssumeRoleWithWebIdentity](#id_credentials_temp_control-access_monitor-assume-role-web-id)
+ [Mengontrol akses menggunakan informasi identitas sumber](#id_credentials_temp_control-access_monitor-control-access)
+ [Melihat identitas sumber di CloudTrail](#id_credentials_temp_control-access_monitor-ct)

## Menyiapkan untuk menggunakan identitas sumber
<a name="id_credentials_temp_control-access_monitor-setup"></a>

Cara Anda mengatur untuk menggunakan identitas sumber tergantung metode yang digunakan ketika peran Anda diasumsikan. Misalnya, pengguna IAM Anda mungkin mengambil peran secara langsung menggunakan `AssumeRole` operasi. Jika Anda memiliki identitas perusahaan, juga dikenal sebagai identitas tenaga kerja, mereka dapat mengakses sumber daya Anda AWS menggunakan. `AssumeRoleWithSAML` Jika pengguna akhir mengakses aplikasi seluler atau web Anda, mereka mungkin melakukannya menggunakan `AssumeRoleWithWebIdentity`. Berikut ini adalah gambaran umum alur kerja tingkat tinggi untuk membantu Anda memahami bagaimana Anda dapat mengatur untuk memanfaatkan informasi identitas sumber di lingkungan yang ada.

1. **Konfigurasikan pengguna dan peran pengujian** — Menggunakan lingkungan praproduksi, konfigurasikan pengguna dan peran pengujian, serta konfigurasikan kebijakan mereka untuk memungkinkan pengaturan identitas sumber.

   Jika Anda menggunakan penyedia identitas (IdP) untuk identitas federasi Anda, konfigurasikan IdP Anda untuk melewati atribut pengguna pilihan Anda untuk identitas sumber dalam pernyataan atau token.

1. **Asumsikan peran** — Uji asumsi peran dan meneruskan identitas sumber dengan pengguna dan peran yang Anda siapkan untuk pengujian.

1. **Tinjauan CloudTrail** — Tinjau informasi identitas sumber untuk peran pengujian Anda di CloudTrail log Anda.

1. **Latih pengguna Anda** — Setelah Anda menguji di lingkungan praproduksi, pastikan pengguna mengetahui cara meneruskan informasi identitas sumber, jika perlu. Tetapkan tenggat waktu untuk kapan Anda akan meminta pengguna Anda untuk memberikan identitas sumber di lingkungan produksi Anda.

1. **Konfigurasikan kebijakan produksi** — Konfigurasikan kebijakan Anda untuk lingkungan produksi, lalu tambahkan ke pengguna dan peran produksi Anda.

1. **Pantau aktivitas** — Pantau aktivitas peran produksi Anda menggunakan CloudTrail log.

## Hal yang perlu diketahui tentang identitas sumber
<a name="id_credentials_temp_control-access_monitor-know"></a>

Ingatlah hal-hal berikut ini saat bekerja dengan identitas sumber.
+ Kebijakan kepercayaan untuk semua peran yang terhubung ke penyedia identitas (IdP) harus memiliki izin `sts:SetSourceIdentity`. Untuk peran yang tidak memiliki izin ini dalam kebijakan kepercayaan peran, operasi `AssumeRole*` akan gagal. Jika Anda tidak ingin memperbarui kebijakan kepercayaan peran untuk setiap peran, Anda dapat menggunakan instans IdP terpisah untuk meneruskan identitas sumber. Lalu tambahkan izin `sts:SetSourceIdentity` hanya untuk peran yang terhubung ke IdP yang terpisah.
+ Ketika identitas menetapkan identitas sumber, kunci `sts:SourceIdentity` terdapat dalam permintaan. Untuk tindakan selanjutnya yang diambil selama sesi peran, kunci `aws:SourceIdentity` terdapat dalam permintaan. AWS tidak mengontrol nilai identitas sumber di salah satu kunci `sts:SourceIdentity` atau `aws:SourceIdentity`. Jika Anda memilih untuk meminta identitas sumber, Anda harus memilih atribut yang Anda inginkan pengguna atau IdP untuk menyediakan. Untuk tujuan keamanan, Anda harus memastikan bahwa Anda dapat mengontrol bagaimana nilai-nilai tersebut disediakan.
+ Nilai identitas sumber harus antara 2 dan 64 karakter panjang, dapat berisi hanya karakter alfanumerik, garis bawah, dan karakter berikut:**., \$1 = @ -** (tanda hubung). Anda tidak dapat menggunakan nilai yang dimulai dengan teks **aws:**. Awalan ini dicadangkan untuk penggunaan AWS internal.
+ Informasi identitas sumber tidak ditangkap oleh CloudTrail ketika AWS layanan atau peran terkait layanan melakukan tindakan atas nama identitas federasi atau tenaga kerja. 

**penting**  
Anda tidak dapat beralih ke peran Konsol Manajemen AWS yang memerlukan identitas sumber untuk disetel saat peran diasumsikan. Untuk mengambil peran seperti itu, Anda dapat menggunakan AWS API AWS CLI atau untuk memanggil `AssumeRole` operasi dan menentukan parameter identitas sumber.

## Izin yang diperlukan untuk menetapkan identitas sumber
<a name="id_credentials_temp_control-access_monitor-perms"></a>

Selain tidakan yang sesuai dengan operasi API, Anda harus memiliki tindakan khusus izin berikut dalam kebijakan Anda: 

```
sts:SetSourceIdentity
```
+ Untuk menentukan identitas sumber, prinsipal (pengguna dan peran IAM) harus memiliki izin untuk. `sts:SetSourceIdentity` Sebagai administrator, Anda dapat mengonfigurasi ini dalam kebijakan kepercayaan peran dan kebijakan izin penanggung jawab.
+ Ketika Anda mengambil peran dengan peran lain, disebut [perangkaian peran](id_roles.md#iam-term-role-chaining), izin untuk `sts:SetSourceIdentity` diperlukan dalam kebijakan perizinan penanggung jawab yang mengasumsikan peran dan dalam kebijakan kepercayaan peran pada peran target. Jika tidak, peran operasi asumsi akan gagal.
+ Saat menggunakan identitas sumber, kebijakan kepercayaan peran untuk semua peran yang terhubung ke IdP harus memiliki izin `sts:SetSourceIdentity`. Operasi `AssumeRole*` akan gagal untuk peran apa pun yang terhubung ke IdP tanpa izin ini. Jika Anda tidak ingin memperbarui kebijakan kepercayaan peran untuk setiap peran, Anda dapat menggunakan instans IdP terpisah untuk meneruskan identitas sumber dan menambahkan izin `sts:SetSourceIdentity` hanya untuk peran yang terhubung ke IdP yang terpisah.
+ Untuk menetapkan identitas sumber di batas akun, Anda harus menyertakan izin `sts:SetSourceIdentity` di dua tempat. Harus berada dalam kebijakan izin penanggung jawab di akun asal dan kebijakan kepercayaan peran dalam akun target. Anda mungkin perlu melakukannya, misalnya, ketika peran digunakan untuk mengambil peran di akun lain dengan [perangkaian peran](id_roles.md#iam-term-role-chaining).

Sebagai administrator akun, bayangkan Anda ingin mengizinkan pengguna IAM `DevUser` di akun Anda untuk mengasumsikan akun yang sama. `Developer_Role` Tetapi Anda ingin mengizinkan tindakan ini hanya jika pengguna telah mengatur identitas sumber ke nama pengguna IAM mereka. Anda dapat melampirkan kebijakan berikut ke pengguna IAM.

**Example Contoh kebijakan berbasis identitas yang dilampirkan DevUser**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRole",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/Developer_Role"
    },
    {
      "Sid": "SetAwsUserNameAsSourceIdentity",
      "Effect": "Allow",
      "Action": "sts:SetSourceIdentity",
      "Resource": "arn:aws:iam::123456789012:role/Developer_Role",
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": "${aws:username}"
        }
      }
    }
  ]
}
```

Untuk memberlakukan nilai identitas sumber yang dapat diterima, Anda dapat mengonfigurasi kebijakan kepercayaan peran berikut. Kebijakan ini memberikan `DevUser` izin pengguna IAM untuk mengambil peran dan menetapkan identitas sumber. Kunci syarat `sts:SourceIdentity` mendefinisikan nilai identitas sumber yang dapat diterima.

**Example Contoh kebijakan kepercayaan peran untuk identitas sumber**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDevUserAssumeRole",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/DevUser"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringEquals": {
          "sts:SourceIdentity": "DevUser"
        }
      }
    }
  ]
}
```

------

Menggunakan kredensil untuk pengguna IAM`DevUser`, pengguna mencoba untuk mengasumsikan `DeveloperRole` menggunakan permintaan berikut. AWS CLI 

**Example Contoh AssumeRole permintaan CLI**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Developer_Role \
--role-session-name Dev-project \ 
--source-identity DevUser \
```

Saat AWS mengevaluasi permintaan, konteks permintaan berisi `sts:SourceIdentity` dari. `DevUser`

## Menentukan identitas sumber ketika mengasumsikan peran
<a name="id_credentials_temp_control-access_monitor-specify-sourceid"></a>

Anda dapat menentukan identitas sumber saat menggunakan salah satu operasi AWS STS `AssumeRole*` API untuk mendapatkan kredensil keamanan sementara untuk suatu peran. Operasi API yang Anda gunakan berbeda tergantung kasus penggunaan Anda. Misalnya, jika Anda menggunakan peran IAM untuk memberi pengguna IAM akses ke AWS sumber daya yang biasanya tidak dapat mereka akses, Anda dapat menggunakan operasi tersebut`AssumeRole`. Jika Anda menggunakan federasi identitas perusahaan untuk mengelola pengguna tenaga kerja Anda, Anda dapat menggunakan operasi `AssumeRoleWithSAML`. Jika Anda menggunakan federasi OIDC untuk mengizinkan pengguna akhir mengakses aplikasi seluler atau web Anda, Anda dapat menggunakan operasi tersebut`AssumeRoleWithWebIdentity`. Bagian berikut menjelaskan cara menggunakan identitas sumber dengan setiap operasi. Untuk mempelajari selengkapnya tentang skenario umum untuk kredensial sementara, lihat [Skenario umum untuk kredensial sementara](id_credentials_temp.md#sts-introduction).

## Menggunakan identitas sumber dengan AssumeRole
<a name="id_credentials_temp_control-access_monitor-assume-role"></a>

`AssumeRole`Operasi mengembalikan satu set kredensi sementara yang dapat Anda gunakan untuk mengakses AWS sumber daya. Anda dapat menggunakan kredensi pengguna atau peran IAM untuk menelepon. `AssumeRole` Untuk meneruskan identitas sumber saat mengambil peran, gunakan `-–source-identity` AWS CLI opsi atau parameter `SourceIdentity` AWS API. Contoh berikut menunjukkan cara menentukan identitas sumber menggunakan AWS CLI.

**Example Contoh AssumeRole permintaan CLI**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/developer \
--role-session-name Audit \ 
--source-identity Admin \
```

## Menggunakan identitas sumber dengan AssumeRoleWith SAFL
<a name="id_credentials_temp_control-access_monitor-assume-role-saml"></a>

Penanggung jawab yang memanggil operasi `AssumeRoleWithSAML` diautentikasi menggunakan federasi berbasis SAML. Operasi ini mengembalikan satu set kredensi sementara yang dapat Anda gunakan untuk mengakses AWS sumber daya. Untuk informasi selengkapnya tentang penggunaan federasi berbasis SAML untuk Konsol Manajemen AWS akses, lihat. [Mengaktifkan prinsip federasi SAMP 2.0 untuk mengakses Konsol Manajemen AWS](id_roles_providers_enable-console-saml.md) Untuk detail tentang AWS CLI atau akses AWS API, lihat[Federasi SAMP 2.0](id_roles_providers_saml.md). Untuk tutorial menyiapkan federasi SAFL untuk pengguna Active Directory Anda, lihat [AWS Otentikasi Federasi dengan Layanan Federasi Direktori Aktif (ADFS)](https://aws.amazon.com/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/) di Blog Keamanan. AWS 

Sebagai administrator, Anda dapat mengizinkan anggota direktori perusahaan Anda untuk bergabung AWS menggunakan AWS STS `AssumeRoleWithSAML` operasi. Untuk melakukannya, Anda harus menyelesaikan tugas berikut:

1. [Mengonfigurasi penyedia SAML di organisasi Anda](id_roles_providers_saml_3rd-party.md).

1. [Buat penyedia SAFL di IAM](id_roles_providers_create_saml.md).

1. [Konfigurasikan peran dan izinnya AWS untuk prinsipal federasi SALL Anda](id_roles_create_for-idp_saml.md).

1. [Selesaikan konfigurasi SAML IdP dan buat pernyataan untuk respons autentikasi SAML](id_roles_providers_create_saml_assertions.md)

Untuk mengatur atribut SAML untuk identitas sumber, termasuk elemen `Attribute` dengan atribut `Name` yang ditetapkan ke `https://aws.amazon.com/SAML/Attributes/SourceIdentity`. Gunakan elemen `AttributeValue` untuk menentukan nilai identitas sumber. Misalnya, anggap Anda ingin meneruskan atribut identitas berikut sebagai identitas sumber. 

`SourceIdentity:DiegoRamirez`

Untuk meneruskan atribut ini, sertakan elemen berikut dalam pernyataan SAML Anda.

**Example Contoh snippet pernyataan SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
<AttributeValue>DiegoRamirez</AttributeValue>
</Attribute>
```

## Menggunakan identitas sumber dengan AssumeRoleWithWebIdentity
<a name="id_credentials_temp_control-access_monitor-assume-role-web-id"></a>

Pemanggilan utama `AssumeRoleWithWebIdentity` operasi diautentikasi menggunakan federasi yang sesuai dengan OpenID Connect (OIDC). Operasi ini menghasilkan serangkaian kredensial sementara yang dapat Anda gunakan untuk mengakses sumber daya AWS . Untuk informasi selengkapnya tentang penggunaan federasi OIDC untuk Konsol Manajemen AWS akses, lihat. [Federasi OIDC](id_roles_providers_oidc.md)

Untuk meneruskan identitas sumber dari OpenID Connect (OIDC), Anda harus menyertakan identitas sumber dalam JSON Web Token (JWT). Sertakan identitas sumber dalam namespace `[https://aws.amazon.com/](https://aws.amazon.com/)source_identity` dalam token ketika Anda mengajukan permintaan `AssumeRoleWithWebIdentity`. Untuk mempelajari lebih lanjut tentang token dan klaim OIDC, lihat [Menggunakan Token dengan Kolam Pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) di *Panduan Developer Amazon Cognito *.

Misalnya, JWT yang diterjemahkan berikut adalah token yang digunakan untuk memanggil `AssumeRoleWithWebIdentity` dengan sumber identitas `Admin`.

**Example Contoh Token Web JSON yang diterjemahkan**  

```
{
    "sub": "john",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/source_identity":"Admin"
}
```

## Mengontrol akses menggunakan informasi identitas sumber
<a name="id_credentials_temp_control-access_monitor-control-access"></a>

Ketika identitas sumber awalnya ditetapkan, SourceIdentity kunci [sts:](reference_policies_iam-condition-keys.md#ck_sourceidentity) ada dalam permintaan. Setelah identitas sumber disetel, SourceIdentity kunci [aws:](reference_policies_condition-keys.md#condition-keys-sourceidentity) hadir di semua permintaan berikutnya yang dibuat selama sesi peran. Sebagai administrator, Anda dapat menulis kebijakan yang memberikan otorisasi bersyarat untuk melakukan AWS tindakan berdasarkan keberadaan atau nilai atribut identitas sumber.

Bayangkan Anda ingin meminta pengembang Anda untuk menetapkan identitas sumber untuk mengambil peran penting yang memiliki izin untuk menulis ke AWS sumber daya penting produksi. Juga bayangkan bahwa Anda memberikan AWS akses ke identitas tenaga kerja Anda menggunakan. `AssumeRoleWithSAML` Anda hanya ingin developer senior Saanvi dan Diego memiliki akses ke peran, sehingga Anda membuat kebijakan kepercayaan berikut untuk peran tersebut.

**Example Contoh kebijakan kepercayaan peran untuk identitas sumber (SALL)**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "SAMLProviderAssumeRoleWithSAML",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:saml-provider/name-of-identity-provider"
      },
      "Action": [
        "sts:AssumeRoleWithSAML"
      ],
      "Condition": {
        "StringEquals": {
          "SAML:aud": "https://signin.aws.amazon.com/saml"
        }
      }
    },
    {
      "Sid": "SetSourceIdentitySrEngs",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:saml-provider/name-of-identity-provider"
      },
      "Action": [
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": [
            "Saanvi",
            "Diego"
          ]
        }
      }
    }
  ]
}
```

------

Kebijakan kepercayaan berisi syarat untuk `sts:SourceIdentity` itu membutuhkan identitas sumber Saanvi atau Diego untuk mengambil peran penting.

Atau, jika Anda menggunakan penyedia OIDC untuk federasi dan pengguna diautentikasi`AssumeRoleWithWebIdentity`, kebijakan kepercayaan peran Anda mungkin terlihat sebagai berikut.

**Example Contoh kebijakan kepercayaan peran untuk identitas sumber (penyedia OIDC)**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:oidc-provider/server.example.com"
      },
      "Action": [
        "sts:AssumeRoleWithWebIdentity",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringEquals": {
          "server.example.com:aud": "oidc-audience-id"
        },
        "StringLike": {
          "sts:SourceIdentity": [
            "Saanvi",
            "Diego"
          ]
        }
      }
    }
  ]
}
```

------

### Peran perangkauan dan persyaratan lintas akun
<a name="id_credentials_temp_control-access_monitor-chain"></a>

Bayangkan Anda ingin mengizinkan pengguna yang mengasumsikan `CriticalRole` untuk mengambil `CriticalRole_2` di akun lain. Kredensial sesi peran yang diperoleh untuk mengasumsikan `CriticalRole` digunakan untuk [merangkai peran](id_roles.md#iam-term-role-chaining) untuk peran kedua, `CriticalRole_2`, di akun yang berbeda. Peran sedang diasumsikan di batas akun. Oleh karena itu, izin `sts:SetSourceIdentity` harus diberikan dalam kedua kebijakan izin pada `CriticalRole` dan dalam kebijakan kepercayaan peran di `CriticalRole_2`.

**Example Contoh kebijakan izin pada CriticalRole**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRoleAndSetSourceIdentity",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Resource": "arn:aws:iam::222222222222:role/CriticalRole_2"
    }
  ]
}
```

------

Untuk mengamankan pengaturan sumber identitas di batas akun, kebijakan kepercayaan peran berikut hanya mempercayai peran utama untuk `CriticalRole` guna mengatur identitas sumber.

**Example Contoh kebijakan kepercayaan peran pada CriticalRole \$12**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:role/CriticalRole"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": ["Saanvi","Diego"]
        }
      }
    }
  ]
}
```

------

Pengguna membuat panggilan berikut menggunakan kredensil sesi peran yang diperoleh dari asumsi. CriticalRole Identitas sumber ditetapkan selama asumsi CriticalRole, sehingga tidak perlu diatur lagi secara eksplisit. Jika pengguna mencoba untuk mengatur identitas sumber yang berbeda dari nilai yang ditetapkan ketika diasumsikan `CriticalRole`, permintaan peran asumsi akan ditolak.

**Example Contoh AssumeRole permintaan CLI**  

```
aws sts assume-role \ 
--role-arn arn:aws:iam::222222222222:role/CriticalRole_2 \
--role-session-name Audit \
```

Ketika penanggung jawab panggilan mengasumsikan peran, identitas sumber dalam permintaan tetap dari sesi peran diasumsikan pertama. Oleh karena itu, kedua kunci `aws:SourceIdentity` dan `sts:SourceIdentity` terdapat dalam konteks permintaan.

## Melihat identitas sumber di CloudTrail
<a name="id_credentials_temp_control-access_monitor-ct"></a>

Anda dapat menggunakan CloudTrail untuk melihat permintaan yang dibuat untuk mengambil peran atau pengguna federasi. Anda juga dapat melihat peran atau permintaan pengguna untuk mengambil tindakan dalam AWS. File CloudTrail log mencakup informasi tentang identitas sumber yang ditetapkan untuk peran yang diasumsikan atau sesi pengguna federasi. Untuk informasi selengkapnya, lihat [Mencatat panggilan IAM dan AWS STS API dengan AWS CloudTrail](cloudtrail-integration.md)

Misalnya, asumsikan bahwa pengguna membuat AWS STS `AssumeRole` permintaan, dan menetapkan identitas sumber. Anda dapat menemukan `sourceIdentity` informasi di `requestParameters` kunci di CloudTrail log Anda.

**Example Contoh bagian RequestParameters dalam log AWS CloudTrail**  

```
"eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSAccount",
        "principalId": "AIDAJ45Q7YFFAREXAMPLE",
        "accountId": "111122223333"
    },
    "eventTime": "2020-04-02T18:20:53Z",
    "eventSource": "sts.amazonaws.com",
    "eventName": "AssumeRole",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "203.0.113.64",
    "userAgent": "aws-cli/1.16.96 Python/3.6.0 Windows/10 botocore/1.12.86",
    "requestParameters": {
        "roleArn": "arn:aws:iam::123456789012:role/DevRole",
        "roleSessionName": "Dev1",
        "sourceIdentity": "source-identity-value-set"
    }
```

Jika pengguna menggunakan sesi peran yang diasumsikan untuk melakukan tindakan, informasi identitas sumber ada di `userIdentity` kunci di CloudTrail log.

**Example Contoh kunci UserIdentity dalam log AWS CloudTrail**  

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROAJ45Q7YFFAREXAMPLE:Dev1",
    "arn": "arn:aws:sts::123456789012:assumed-role/DevRole/Dev1",
    "accountId": "123456789012",
    "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAJ45Q7YFFAREXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/DevRole",
        "accountId": "123456789012",
        "userName": "DevRole"
      },
      "webIdFederationData": {},
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2021-02-21T23:46:28Z"
      },
      "sourceIdentity": "source-identity-value-present"
    }
  }
}
```

Untuk melihat contoh peristiwa AWS STS API di CloudTrail log, lihat[Contoh peristiwa API IAM di log CloudTrail](cloudtrail-integration.md#cloudtrail-integration_examples-iam-api). Untuk detail selengkapnya tentang informasi yang terkandung dalam file CloudTrail log, lihat [Referensi CloudTrail Acara](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/eventreference.html) di *Panduan AWS CloudTrail Pengguna*.

# Izin untuk GetFederationToken
<a name="id_credentials_temp_control-access_getfederationtoken"></a>

Operasi `GetFederationToken` dipanggil oleh pengguna IAM dan mengembalikan kredensial sementara untuk pengguna tersebut. Operasi ini *menggabungkan* pengguna. Izin yang ditetapkan untuk sesi pengguna AWS STS federasi didefinisikan di salah satu dari dua tempat: 
+ Kebijakan sesi lewat sebagai sebuah parameter dari Panggilan API `GetFederationToken`. (Ini paling umum.)
+ Kebijakan berbasis sumber daya yang secara eksplisit menamai sesi pengguna AWS STS federasi dalam elemen kebijakan. `Principal` (Ini lebih jarang terjadi.)

Kebijakan sesi adalah kebijakan lanjutan yang Anda jalankan sebagai parameter saat Anda secara terprogram membuat sebuah sesi sementara. Saat Anda membuat sesi pengguna AWS STS gabungan dan meneruskan kebijakan sesi, izin sesi yang dihasilkan adalah persimpangan kebijakan berbasis identitas pengguna dan kebijakan sesi. Anda tidak dapat menggunakan kebijakan sesi untuk memberikan lebih banyak izin daripada yang diizinkan oleh kebijakan berbasis identitas dari pengguna yang sedang digabung.

Dalam kebanyakan kasus jika Anda tidak memberikan kebijakan dengan panggilan API `GetFederationToken`, kredensial keamanan sementara yang dihasilkan tidak memiliki izin. Namun, kebijakan berbasis sumber daya dapat memberikan izin tambahan untuk sesi tersebut. Anda dapat mengakses sumber daya dengan sebuah kebijakan berbasis sumber daya yang menentukan sesi Anda sebagai prinsipal yang diizinkan. 

Gambar berikut ini menunjukkan gambaran visual tentang cara kebijakan berinteraksi untuk menentukan izin bagi kredensial keamanan sementara yang dikembalikan oleh panggilan ke `GetFederationToken`.

![\[Pengguna IAM Ilustrasi berikut menunjukkan tanda centang untuk menunjukkan bahwa izin sesi adalah persimpangan kebijakan berbasis identitas pengguna dan kebijakan sesi. Izin sesi juga dapat menjadi persimpangan kebijakan berbasis identitas pengguna dan kebijakan berbasis sumber daya.\]](http://docs.aws.amazon.com/id_id/IAM/latest/UserGuide/images/getfederationtoken-permissions.diagram.png)


## Contoh: Menetapkan izin menggunakan GetFederationToken
<a name="permissions-get-federation-token-example"></a>

Anda dapat menggunakan tindakan API `GetFederationToken` dengan berbagai jenis kebijakan. Berikut adalah beberapa contoh.

### Kebijakan yang terlampir pada pengguna IAM
<a name="permissions-get-federation-token-example-iam-user"></a>

Dalam contoh ini, Anda memiliki aplikasi klien berbasis browser yang mengandalkan dua layanan web backend. Satu layanan backend adalah server autentikasi Anda sendiri yang menggunakan identitas sistem Anda sendiri untuk mengautentikasi aplikasi klien. Layanan backend lainnya adalah layanan AWS yang menyediakan beberapa fungsionalitas aplikasi klien. Aplikasi klien diautentikasi oleh server Anda, dan server Anda membuat atau mengambil kebijakan izin yang sesuai. Server Anda kemudian memanggil API `GetFederationToken` untuk mendapatkan kredensial keamanan sementara, dan mengembalikan kredensial tersebut ke aplikasi klien. Aplikasi klien kemudian dapat membuat permintaan langsung ke AWS layanan dengan kredenal keamanan sementara. Arsitektur ini memungkinkan aplikasi klien untuk membuat AWS permintaan tanpa menyematkan AWS kredensi jangka panjang.

Server otentikasi Anda memanggil `GetFederationToken` API dengan kredensi keamanan jangka panjang dari pengguna IAM bernama. `token-app` Tetapi kredensi pengguna IAM jangka panjang tetap ada di server Anda dan tidak pernah didistribusikan ke klien. Contoh kebijakan berikut dilampirkan ke pengguna `token-app` IAM dan mendefinisikan kumpulan izin terluas yang diperlukan oleh pengguna AWS STS federasi (klien) Anda. Perhatikan bahwa `sts:GetFederationToken` izin diperlukan untuk layanan otentikasi Anda untuk mendapatkan kredenial keamanan sementara bagi pengguna federasi AWS STS .

**Example Contoh kebijakan terlampir ke pengguna IAM `token-app` yang memanggil `GetFederationToken`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:GetFederationToken",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "dynamodb:ListTables",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sqs:ReceiveMessage",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sns:ListSubscriptions",
      "Resource": "*"
    }
  ]
}
```

Kebijakan sebelumnya memberikan beberapa izin kepada pengguna IAM. Namun, kebijakan ini saja tidak memberikan izin apa pun kepada pengguna AWS STS federasi. Jika pengguna IAM ini memanggil `GetFederationToken` dan tidak meneruskan kebijakan sebagai parameter panggilan API, pengguna AWS STS federasi yang dihasilkan tidak memiliki izin yang efektif. 

### Kebijakan sesi diberikan sebagai parameter
<a name="permissions-get-federation-token-example-passed-policy"></a>

Cara paling umum untuk memastikan bahwa pengguna AWS STS federasi diberi izin yang sesuai adalah dengan meneruskan kebijakan sesi dalam panggilan `GetFederationToken` API. Memperluas contoh sebelumnya, bayangkan yang `GetFederationToken` dipanggil dengan kredensi pengguna IAM. `token-app` Bayangkan sesi kebijakan berikut ini diberikan sebagai parameter panggilan API. Pengguna AWS STS federasi yang dihasilkan memiliki izin untuk mencantumkan konten bucket Amazon S3 yang diberi nama. `productionapp` Pengguna tidak dapat melakukan Amazon S3 `GetObject``PutObject`, dan `DeleteObject` tindakan pada item di bucket. `productionapp`

Pengguna gabungan diberi izin ini karena izin tersebut merupakan pertemuan antara kebijakan pengguna IAM dan kebijakan sesi yang Anda lewati.

Pengguna AWS STS federasi tidak dapat melakukan tindakan di Amazon SNS, Amazon SQS, Amazon DynamoDB, atau di bucket S3 apa pun kecuali. `productionapp` Tindakan ini ditolak meskipun izin tersebut diberikan kepada pengguna IAM yang terkait dengan panggilan tersebut`GetFederationToken`.

**Example Contoh kebijakan sesi lewat sebagai sebuah parameter dari Panggilan API `GetFederationToken`.**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::productionapp"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::productionapp/*"]
    }
  ]
}
```

### Kebijakan berbasis sumber daya
<a name="permissions-get-federation-token-resource-based-policy"></a>

Beberapa AWS sumber daya mendukung kebijakan berbasis sumber daya, dan kebijakan ini menyediakan mekanisme lain untuk memberikan izin langsung kepada pengguna federasi. AWS STS Hanya beberapa AWS layanan yang mendukung kebijakan berbasis sumber daya. Misalnya, Amazon S3 memiliki bucket, Amazon SNS memiliki topik, dan Amazon SQS memiliki antrean yang dapat Anda lampirkan kebijakannya. Untuk daftar semua layanan yang mendukung kebijakan berbasis sumber daya, lihat [AWS layanan yang bekerja dengan IAM](reference_aws-services-that-work-with-iam.md) dan tinjau kolom “Kebijakan berbasis Sumber Daya” pada tabel. Anda dapat menggunakan kebijakan berbasis sumber daya untuk menetapkan izin langsung ke pengguna federasi. AWS STS Lakukan ini dengan menentukan Nama Sumber Daya Amazon (ARN) pengguna AWS STS federasi dalam `Principal` elemen kebijakan berbasis sumber daya. Contoh berikut menggambarkan hal ini dan memperluas contoh sebelumnya, menggunakan bucket S3 bernama `productionapp`. 

Kebijakan berbasis sumber daya berikut ini terlampir di bucket. Kebijakan bucket ini memungkinkan pengguna AWS STS federasi bernama Carol untuk mengakses bucket. Ketika kebijakan contoh yang dijelaskan sebelumnya dilampirkan ke pengguna `token-app` IAM, pengguna AWS STS federasi bernama Carol memiliki izin untuk melakukan`s3:GetObject`,`s3:PutObject`, dan `s3:DeleteObject` tindakan pada bucket bernama. `productionapp` Hal ini berlaku bahkan ketika kebijakan sesi tidak diberikan sebagai parameter panggilan API `GetFederationToken`. Itu karena dalam kasus ini pengguna AWS STS federasi bernama Carol telah secara eksplisit diberikan izin oleh kebijakan berbasis sumber daya berikut. 

***Ingat, pengguna AWS STS federasi diberikan izin hanya jika izin tersebut secara eksplisit diberikan kepada pengguna IAM dan pengguna federasi.*** AWS STS Mereka juga dapat diberikan (dalam akun) oleh kebijakan berbasis sumber daya yang secara eksplisit menyebutkan nama pengguna AWS STS federasi dalam `Principal` elemen kebijakan, seperti pada contoh berikut.

**Example Contoh kebijakan bucket yang mengijinkan akses ke pengguna gabungan**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Principal": {
            "AWS": "arn:aws:sts::111122223333:federated-user/Carol"
        },
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "arn:aws:s3:::productionapp/*"
        ]
    }
}
```

Untuk informasi selengkapnya tentang bagaimana kebijakan dievaluasi, lihat [Logika evaluasi kebijakan](reference_policies_evaluation-logic.md).

# Izin untuk GetSessionToken
<a name="id_credentials_temp_control-access_getsessiontoken"></a>

Alasan utama untuk menghubungi operasi API `GetSessionToken` atau Perintah CLI `get-session-token` adalah ketika pengguna harus diautentikasi dengan autentikasi Autentikasi Multi-Faktor (MFA). Hal tersebut memungkinkan untuk menulis kebijakan yang mengizinkan tindakan tertentu hanya jika tindakan tersebut diminta oleh pengguna yang telah diautentikasi dengan MFA. Agar berhasil melewati pemeriksaan otorisasi MFA, pengguna harus melakukan panggilan pertama `GetSessionToken` dan menyertakan opsional parameter `SerialNumber` dan `TokenCode`. Jika pengguna berhasil mengautentikasi dengan sebuah perangkat MFA, kredensial dikembalikan oleh operasi API `GetSessionToken` mencakup konteks MFA. Konteks ini menunjukkan bahwa pengguna diautentikasi dengan MFA dan diotorisasi untuk operasi API yang memerlukan autentikasi MFA.

## Izin diperlukan untuk GetSessionToken
<a name="getsessiontoken-permissions-required"></a>

Tidak ada izin yang diperlukan bagi pengguna untuk mendapatkan token sesi. Tujuan dari operasi `GetSessionToken` adalah mengautentikasi pengguna menggunakan MFA. Anda tidak dapat menggunakan kebijakan untuk mengontrol operasi autentikasi.

Untuk memberikan izin untuk melakukan sebagian besar AWS operasi, Anda menambahkan tindakan dengan nama yang sama ke kebijakan. Misalnya, untuk membuat pengguna, Anda harus menggunakan operasi API `CreateUser`, perintah CLI `create-user`, atau Konsol Manajemen AWS. Untuk melakukan operasi ini, Anda harus memiliki kebijakan yang mengijinkan Anda untuk mengakses tindakan `CreateUser`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateUser",
            "Resource": "*"
        }
    ]
}
```

------

Anda dapat memasukkan tindakan `GetSessionToken` dalam kebijakan Anda, tetapi tidak itu berpengaruh pada kemampuan pengguna untuk melakukan operasi `GetSessionToken`.

## Izin yang diberikan oleh GetSessionToken
<a name="getsessiontoken-permissions-granted"></a>

Jika `GetSessionToken` yang dipanggil dengan kredensial pengguna IAM, kredensial keamanan sementara memiliki izin yang sama dengan pengguna IAM. Demikian pula, jika `GetSessionToken` dipanggil dengan Pengguna root akun AWS kredenal, kredenal keamanan sementara memiliki izin pengguna root.

**catatan**  
Kami menyarankan agar Anda tidak memanggil `GetSessionToken` dengan kredensial pengguna root. Sebaliknya, ikuti [praktik terbaik](best-practices-use-cases.md) kami dan membuat pengguna IAM dengan izin yang mereka butuhkan. Kemudian gunakan pengguna IAM ini untuk interaksi sehari-hari dengan AWS.

Kredensial sementara yang Anda dapatkan ketika Anda memanggil `GetSessionToken` memiliki kemampuan dan batasan sebagai berikut:
+ Anda dapat menggunakan kredensi untuk mengakses Konsol Manajemen AWS dengan meneruskan kredensialnya ke titik akhir masuk tunggal federasi di. `https://signin.aws.amazon.com/federation` Untuk informasi selengkapnya, lihat [Aktifkan akses broker identitas khusus ke AWS konsol](id_roles_providers_enable-console-custom-url.md).
+ Anda **tidak dapat** menggunakan kredensialnya untuk memanggil operasi IAM atau AWS STS API. Anda **dapat** menggunakannya untuk memanggil operasi API untuk AWS layanan lain.

Bandingkan operasi API ini serta batasan dan kemampuannya dengan operasi API lain yang membuat kredensial keamanan sementara di [Bandingkan AWS STS kredensialnya](id_credentials_sts-comparison.md)

Untuk informasi selengkapnya tentang akses API yang dilindungi MFA menggunakan `GetSessionToken`, lihat [Akses API aman dengan MFA](id_credentials_mfa_configure-api-require.md).

# Menonaktifkan izin untuk kredensial keamanan sementara
<a name="id_credentials_temp_control-access_disable-perms"></a>

Kredensi keamanan sementara berlaku hingga kedaluwarsa. Kredensi ini berlaku untuk durasi yang ditentukan, dari 900 detik (15 menit) hingga maksimum 129.600 detik (36 jam). Durasi sesi default adalah 43.200 detik (12 jam). Anda dapat mencabut kredensil ini, tetapi Anda juga harus mengubah izin untuk pengguna IAM atau peran untuk menghentikan penggunaan kredensil yang disusupi untuk aktivitas akun berbahaya. Izin yang ditetapkan untuk kredensil keamanan sementara dievaluasi setiap kali digunakan untuk membuat permintaan. AWS Setelah Anda menghapus semua izin dari kredensi, AWS permintaan yang menggunakannya gagal.

Mungkin perlu beberapa menit agar pembaruan kebijakan diterapkan. Untuk sesi peran IAM, Anda dapat mencabut kredensil keamanan sementara peran tersebut untuk memaksa semua pengguna yang mengasumsikan peran tersebut untuk mengautentikasi ulang dan meminta kredensil baru. Untuk informasi selengkapnya, lihat [Mencabut kredenal keamanan sementara peran tersebut](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html).

Anda tidak dapat mengubah izin untuk file Pengguna root akun AWS. Demikian juga, Anda tidak dapat mengubah izin untuk kredensial keamanan sementara yang dibuat dengan memanggil `GetFederationToken` atau `GetSessionToken` saat masuk sebagai pengguna root. Karena alasan ini, kami menyarankan agar Anda tidak memanggil `GetFederationToken` atau `GetSessionToken` sebagai pengguna root.

Untuk prosedur tentang cara mengubah izin untuk pengguna IAM, lihat. [Mengubah izin untuk pengguna IAM](id_users_change-permissions.md)

Untuk prosedur tentang cara mengubah izin untuk peran IAM, lihat. [Memperbarui izin untuk peran](id_roles_update-role-permissions.md)

**penting**  
Anda tidak dapat mengedit peran di IAM yang dibuat dari kumpulan izin Pusat Identitas IAM. Anda harus mencabut sesi set izin aktif untuk pengguna di Pusat Identitas IAM. Untuk informasi selengkapnya, lihat [Mencabut sesi peran IAM aktif yang dibuat oleh set izin](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions) di Panduan Pengguna Pusat *Identitas IAM*.

**Topics**
+ [Tolak akses ke semua sesi peran IAM yang terkait dengan peran](#deny-access-to-all-sessions)
+ [Tolak akses ke sesi peran IAM tertentu](#deny-access-to-specific-session)
+ [Tolak akses ke sesi kredensi keamanan sementara dengan kunci konteks kondisi](#deny-access-to-specific-session-condition-key)
+ [Tolak akses ke prinsipal tertentu dengan kebijakan berbasis sumber daya](#deny-access-with-resource-based)

## Tolak akses ke semua sesi peran IAM yang terkait dengan peran
<a name="deny-access-to-all-sessions"></a>

Prosedur ini menolak izin untuk **semua** sesi peran IAM yang terkait dengan peran. Gunakan pendekatan ini ketika Anda khawatir tentang akses yang mencurigakan dengan:


+ Prinsipal dari akun lain menggunakan akses lintas akun
+ Identitas pengguna eksternal dengan izin untuk mengakses AWS sumber daya di akun Anda
+ Pengguna yang telah diautentikasi dalam aplikasi seluler atau web dengan penyedia OIDC

Untuk mengubah atau menghapus izin yang ditetapkan ke kredensil keamanan sementara yang diperoleh dengan memanggil`AssumeRole`,, atau,`AssumeRoleWithSAML`, atau `AssumeRoleWithWebIdentity``GetFederationToken`, atau`GetSessionToken`, Anda dapat mengedit atau menghapus kebijakan berbasis identitas yang menentukan izin untuk peran tersebut.

**penting**  
Jika ada kebijakan berbasis sumber daya yang memungkinkan akses utama, Anda juga harus menambahkan penolakan eksplisit untuk sumber daya tersebut. Lihat [Tolak akses ke prinsipal tertentu dengan kebijakan berbasis sumber daya](#deny-access-with-resource-based) untuk detail.

**Untuk menolak akses ke **semua** sesi peran IAM yang terkait dengan peran**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM.

1. Di panel navigasi, pilih **Peran..**

1. Pilih nama peran yang akan diedit. Anda dapat menggunakan kotak pencarian untuk memfilter daftar.

1. Pilih tab **Izin**.

1. Pilih kebijakan yang relevan untuk diedit. Sebelum Anda mengedit kebijakan terkelola pelanggan, tinjau tab **Entitas yang dilampirkan** untuk menghindari gangguan akses ke identitas lain yang mungkin memiliki kebijakan yang sama.

1. Pilih tab **JSON** dan perbarui kebijakan untuk menolak semua sumber daya dan tindakan.
**catatan**  
Izin ini sama dengan yang ada di kebijakan AWS terkelola [AWSDenySemua](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDenyAll.html). Anda dapat melampirkan kebijakan AWS terkelola ini ke setiap pengguna IAM atau peran yang ingin Anda tolak semua aksesnya.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DenyAll",
               "Effect": "Deny",
               "Action": [
                   "*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Di halaman **Tinjauan**, tinjau **Ringkasan** kebijakan lalu pilih **Simpan perubahan** untuk menyimpan pekerjaan Anda.

Saat memperbarui kebijakan, perubahan akan memengaruhi izin semua kredensil keamanan sementara yang terkait dengan peran tersebut, termasuk kredensil yang dikeluarkan sebelum Anda mengubah kebijakan izin peran. 

Setelah memperbarui kebijakan, Anda dapat [mencabut kredensil keamanan sementara peran tersebut untuk segera mencabut semua izin atas kredenal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html) yang dikeluarkan peran tersebut.

## Tolak akses ke sesi peran IAM tertentu
<a name="deny-access-to-specific-session"></a>

Saat Anda memperbarui peran IAM dengan kebijakan penolakan semua atau menghapus peran sepenuhnya, semua pengguna yang memiliki akses ke peran tersebut akan terganggu. Anda dapat menolak akses tanpa memengaruhi izin semua sesi lain yang terkait dengan peran tersebut.

Izin `Principal` dapat ditolak menggunakan [kunci konteks kondisi atau kebijakan berbasis](#deny-access-to-specific-session-condition-key) [sumber daya](#deny-access-with-resource-based).

**Tip**  
Anda dapat menemukan pengguna ARNs federasi menggunakan AWS CloudTrail log. Untuk informasi selengkapnya, lihat [Cara Mudah Mengidentifikasi Pengguna Federasi Anda dengan Menggunakan AWS CloudTrail](https://aws.amazon.com/blogs/security/how-to-easily-identify-your-federated-users-by-using-aws-cloudtrail/).

## Tolak akses ke sesi kredensi keamanan sementara dengan kunci konteks kondisi
<a name="deny-access-to-specific-session-condition-key"></a>

Anda dapat menggunakan kunci konteks kondisi dalam kebijakan berbasis identitas dalam situasi di mana Anda ingin menolak akses ke sesi kredensi keamanan sementara tertentu tanpa memengaruhi izin pengguna IAM atau peran yang membuat kredensialnya. Untuk peran IAM, setelah memperbarui kebijakan, Anda juga dapat [mencabut sesi kredensil keamanan sementara peran tersebut untuk segera mencabut semua kredensil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html) yang dikeluarkan.

Untuk informasi selengkapnya tentang kunci konteks kondisi, lihat[AWS kunci konteks kondisi global](reference_policies_condition-keys.md).

### aws: PrincipalArn
<a name="deny-access-condition-key-principalarn"></a>

Anda dapat menggunakan kunci konteks kondisi [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) dalam kebijakan berbasis identitas untuk menolak akses ke prinsipal tertentu dengan Nama Sumber Daya Amazon (ARN) mereka. Anda melakukannya dengan menentukan ARN pengguna IAM, peran, AWS STS atau sesi pengguna gabungan yang terkait dengan kredensil keamanan sementara dalam elemen Kondisi kebijakan.

**Untuk menolak akses ke kepala sekolah tertentu oleh ARN mereka**

1. **Di panel navigasi konsol IAM, pilih **Pengguna** atau Peran.**

1. Pilih nama pengguna IAM atau peran yang akan diedit. Anda dapat menggunakan kotak pencarian untuk memfilter daftar.

1. Pilih tab **Izin**.

1. Pilih kebijakan yang relevan untuk diedit. Sebelum Anda mengedit kebijakan terkelola pelanggan, tinjau tab **Entitas yang dilampirkan** untuk menghindari gangguan akses ke identitas lain yang mungkin memiliki kebijakan yang sama.

1. Pilih tab **JSON** dan tambahkan pernyataan penolakan untuk ARN utama seperti yang ditunjukkan pada contoh berikut.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "ArnEquals": {
             "aws:PrincipalArn": [
               "arn:aws:iam::222222222222:role/ROLENAME",
               "arn:aws:iam::222222222222:user/USERNAME",
               "arn:aws:iam::222222222222:federated-user/USERNAME" 
             ]
           }
         }
       }
     ]
   }
   ```

------

1. Di halaman **Tinjauan**, tinjau **Ringkasan** kebijakan lalu pilih **Simpan perubahan** untuk menyimpan pekerjaan Anda.

### aws: SourceIdentity
<a name="deny-access-condition-key-sourceidentity"></a>

Anda dapat menggunakan kunci konteks kondisi [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) dalam kebijakan berbasis identitas untuk menolak akses ke identitas sumber tertentu yang terkait dengan sesi peran IAM. Ini berlaku selama sesi peran dikeluarkan dengan menyetel parameter `SourceIdentity` permintaan saat prinsipal mengambil peran menggunakan AWS STS `assume-role` perintah\$1 CLI apa pun, atau AWS STS `AssumeRole` operasi\$1 API. Anda melakukannya dengan menentukan identitas sumber yang terkait dengan kredensi keamanan sementara dalam `Condition` elemen kebijakan. 

Tidak seperti kunci konteks [sts:RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname), setelah identitas sumber disetel, nilainya tidak dapat diubah. `aws:SourceIdentity`Kuncinya ada dalam konteks permintaan untuk semua tindakan yang diambil oleh peran. Identitas sumber tetap ada di sesi peran berikutnya saat Anda menggunakan kredenal sesi untuk mengambil peran lain. Mengasumsikan satu peran dari peran lain disebut [rantai peran](id_roles.md#iam-term-role-chaining).

Kebijakan berikut menunjukkan contoh bagaimana Anda dapat menolak akses ke sesi kredensi keamanan sementara menggunakan kunci `aws:SourceIdentity` konteks kondisi. Jika Anda menentukan identitas sumber yang terkait dengan sesi peran, itu akan menolak sesi peran dengan identitas sumber bernama tanpa memengaruhi izin peran yang membuat kredensil. Untuk contoh ini, identitas sumber yang ditetapkan oleh kepala sekolah saat sesi peran dikeluarkan adalah`nikki_wolf@example.com`. Setiap permintaan yang dibuat oleh sesi peran dengan identitas sumber `nikki_wolf@example.com` akan ditolak karena identitas sumber disertakan dalam kondisi kebijakan dan Efek kebijakan disetel ke`Deny`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": [
            "nikki_wolf@example.com",
            "<source identity value>"
          ]
        }
      }
    }
  ]
}
```

------

### aws:userid
<a name="deny-access-condition-key-userid"></a>

Anda dapat menggunakan kunci konteks kondisi [aws:userid](reference_policies_condition-keys.md#condition-keys-userid) dalam kebijakan berbasis identitas untuk menolak akses ke semua atau sesi kredensi keamanan sementara tertentu yang terkait dengan pengguna atau peran IAM. Anda melakukannya dengan menentukan pengenal unik (ID) pengguna IAM, peran, atau sesi pengguna AWS STS federasi yang terkait dengan kredensil keamanan sementara dalam elemen kebijakan. `Condition`

Kebijakan berikut menunjukkan contoh bagaimana Anda dapat menolak akses ke sesi kredensi keamanan sementara menggunakan kunci `aws:userid` konteks kondisi.
+ `AIDAXUSER1`mewakili ID unik untuk pengguna IAM. Menentukan ID unik pengguna IAM sebagai nilai untuk kunci konteks `aws:userid` akan menolak akses ke pengguna IAM. Ini termasuk sesi kredensi keamanan sementara yang dibuat dengan memanggil `GetSessionToken` API.
+ `AROAXROLE1:*`mewakili ID unik untuk semua sesi yang terkait dengan peran IAM. Menentukan ID unik peran IAM dan karakter wildcard (\$1) di bagian caller-specified-role-session -name sebagai nilai untuk kunci konteks `aws:userid` akan menolak semua sesi yang terkait dengan peran tersebut.
+ `AROAXROLE2:<caller-specified-role-session-name>`mewakili ID unik untuk sesi peran yang diasumsikan. Di bagian caller-specified-role-session -name dari ID unik peran yang diasumsikan, Anda dapat menentukan nama sesi peran atau karakter wildcard jika operator kondisi digunakan. StringLike Jika Anda menentukan nama sesi peran, itu akan menolak sesi peran bernama tanpa memengaruhi izin peran yang membuat kredensialnya. Jika Anda menentukan karakter wildcard untuk nama sesi peran, itu akan menolak semua sesi yang terkait dengan peran tersebut.
**catatan**  
Nama sesi peran yang ditentukan pemanggil, yang merupakan bagian dari pengenal unik untuk sesi peran yang diasumsikan, dapat berubah selama rantai peran. Role chaining terjadi ketika satu peran mengambil peran lain. Nama sesi peran disetel menggunakan parameter `RoleSessionName` permintaan saat prinsipal mengasumsikan peran menggunakan operasi AWS STS `AssumeRole` API.
+ `account-id:<federated-user-caller-specified-name>`mewakili ID unik untuk sesi pengguna AWS STS federasi. Pengguna IAM membuat sesi ini dengan memanggil `GetFederationToken` API. Menentukan ID unik untuk sesi pengguna AWS STS federasi menyangkal sesi federasi bernama tanpa memengaruhi izin pengguna IAM yang membuat kredensialnya.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:userId": [
            "AIDAXUSER1",
            "AROAXROLE1:*",
            "AROAXROLE2:<caller-specified-role-session-name>",
            "123456789012:<federated-user-caller-specified-name>"
          ]
        }
      }
    }
  ]
}
```

------

Untuk contoh spesifik dari nilai kunci utama, lihat[Nilai-nilai kunci utama](reference_policies_variables.md#principaltable). Untuk informasi tentang pengidentifikasi unik IAM dan cara mendapatkannya, lihat. [Pengidentifikasi unik](reference_identifiers.md#identifiers-unique-ids)

## Tolak akses ke prinsipal tertentu dengan kebijakan berbasis sumber daya
<a name="deny-access-with-resource-based"></a>

Untuk membatasi akses ke prinsipal tertentu dengan kebijakan berbasis sumber daya, Anda dapat menggunakan kunci [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) konteks kondisi atau dalam elemen. [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) `Condition` Kebijakan berbasis sumber daya adalah kebijakan izin yang dilampirkan pada sumber daya dan kontrol siapa yang dapat mengakses sumber daya dan tindakan apa yang dapat mereka lakukan terhadapnya. 

Bila Anda menggunakan kunci `aws:PrincipalARN` konteks, tentukan ARN pengguna IAM, peran, atau sesi pengguna AWS STS federasi yang terkait dengan kredensil keamanan sementara dalam elemen Kondisi kebijakan. Contoh kebijakan berikut menunjukkan cara menggunakan kunci `aws:PrincipalARN` konteks dalam kebijakan berbasis sumber daya:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {
      "ArnEquals": {
        "aws:PrincipalArn": [
          "arn:aws:iam::222222222222:role/ROLENAME",
          "arn:aws:iam::222222222222:user/USERNAME",
          "arn:aws:sts::222222222222:federated-user/USERNAME"
        ]
      }
    }
  }
}
```

------

Bila Anda menggunakan kunci `aws:SourceIdentity` konteks, tentukan nilai identitas sumber yang terkait dengan kredensil keamanan sementara peran dalam `Condition` elemen kebijakan. Ini berlaku selama sesi peran dikeluarkan dengan menyetel parameter `SourceIdentity` permintaan saat prinsipal mengambil peran menggunakan AWS STS `assume-role` perintah\$1 CLI apa pun, atau AWS STS `AssumeRole` operasi\$1 API. Contoh berikut menunjukkan cara menggunakan kunci `aws:SourceIdentity` konteks dalam kebijakan berbasis sumber daya:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {
      "StringLike": {
        "aws:SourceIdentity": [
          "nikki_wolf@example.com",
          "<source identity value>"
        ]
      }
    }
  }
}
```

------

Jika Anda hanya memperbarui kebijakan berbasis identitas untuk prinsipal, mereka masih dapat melakukan tindakan yang diizinkan dalam kebijakan berbasis sumber daya, kecuali jika tindakan tersebut secara eksplisit ditolak dalam kebijakan berbasis identitas.

**Untuk menolak akses ke prinsipal tertentu dalam kebijakan berbasis sumber daya**

1. Lihat [AWS layanan yang bekerja dengan IAM](reference_aws-services-that-work-with-iam.md) untuk melihat apakah layanan mendukung kebijakan berbasis sumber daya.

1. Masuk ke Konsol Manajemen AWS dan buka konsol untuk layanan ini. Setiap layanan memiliki lokasi yang berbeda di konsol untuk melampirkan kebijakan.

1. Edit kebijakan berbasis sumber daya. Tambahkan pernyataan kebijakan penolakan untuk menentukan informasi identifikasi kredensi:

   1. Dalam `Principal` elemen, masukkan wildcard (\$1). Kepala sekolah akan dibatasi dalam `Condition` elemen.

   1. Dalam `Effect` elemen, masukkan “Deny.”

   1. Masuk`Action`, masukkan namespace layanan dan nama tindakan yang akan ditolak. Untuk menolak semua tindakan, gunakan karakter wildcard (\$1). Sebagai contoh: `"s3:*"`.

   1. Dalam `Resource` elemen, masukkan ARN dari sumber daya target. Sebagai contoh: `"arn:aws:s3:::amzn-s3-demo-bucket"`.

   1. Dalam `Condition` elemen, tentukan kunci `aws:PrincipalARN` atau `aws:SourceIdentity` konteks.

      Jika Anda menggunakan tombol `aws:PrincipalARN` konteks, masukkan ARN kepala sekolah untuk menolak akses.

      Jika Anda menggunakan kunci `aws:SourceIdentity` konteks, masukkan nilai identitas sumber yang ditetapkan dalam sesi peran untuk menolak akses.

1. Simpan pekerjaan Anda.

# Memberikan izin untuk membuat kredensial keamanan sementara
<a name="id_credentials_temp_control-access_enable-create"></a>

Secara default, pengguna IAM tidak memiliki izin untuk membuat kredensil keamanan sementara untuk sesi dan peran pengguna AWS STS federasi. Anda harus menggunakan kebijakan untuk memberikan izin ini kepada pengguna Anda. Meskipun Anda dapat memberikan izin secara langsung kepada pengguna, kami sangat menyarankan agar Anda memberikan izin kepada grup. Ini menjadikan pengelolaan izin jauh lebih mudah. Saat seseorang tidak lagi perlu melakukan tugas yang terkait dengan izin, Anda cukup menghapusnya dari grup. Jika orang lain perlu melakukan tugas tersebut, tambahkan mereka ke grup untuk memberikan izin.

Untuk memberikan izin grup IAM untuk membuat kredensil keamanan sementara untuk sesi atau peran pengguna AWS STS gabungan, Anda melampirkan kebijakan yang memberikan salah satu atau kedua hak istimewa berikut:
+ Untuk kepala sekolah federasi OIDC dan SALL untuk mengakses peran IAM, berikan akses ke. AWS STS `AssumeRole`
+ <a name="para_gsy_hxg_1t"></a>Untuk pengguna AWS STS federasi yang tidak memerlukan peran, berikan akses ke AWS STS `GetFederationToken`.

 Untuk informasi selengkapnya tentang perbedaan antara operasi API `AssumeRole` dan `GetFederationToken`, lihat [Minta kredensil keamanan sementara](id_credentials_temp_request.md).

Pengguna IAM juga dapat memanggil [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) untuk membuat kredensial keamanan sementara. Tidak ada izin yang diperlukan bagi pengguna untuk memanggil `GetSessionToken`. Tujuan dari operasi ini adalah mengautentikasi pengguna menggunakan MFA. Anda tidak dapat menggunakan kebijakan untuk mengontrol autentikasi. Ini artinya Anda tidak dapat mencegah pengguna IAM melakukan panggilan `GetSessionToken` untuk membuat kredensial sementara.

**Example Contoh kebijakan yang memberikan izin untuk mengambil peran**  
Contoh kebijakan berikut memberikan izin `AssumeRole` untuk memanggil `UpdateApp` peran dalam Akun AWS `123123123123`. Saat `AssumeRole` digunakan, pengguna (atau aplikasi) yang membuat kredensial keamanan atas nama pengguna gabungan tidak dapat mengurangi izin apapun yang belum ditentukan dalam kebijakan izin peran.     
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::123123123123:role/UpdateAPP"
  }]
}
```

**Example Contoh kebijakan yang memberikan izin untuk membuat kredensial keamanan sementara bagi pengguna gabungan.**  
Contoh kebijakan berikut memberikan izin untuk mengakses `GetFederationToken`.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:GetFederationToken",
    "Resource": "*"
  }]
}
```

**penting**  
Saat Anda memberi izin kepada pengguna IAM untuk membuat kredensil keamanan sementara untuk pengguna AWS STS federasi`GetFederationToken`, ketahuilah bahwa ini memungkinkan pengguna tersebut untuk mendelegasikan izin mereka sendiri. Untuk informasi selengkapnya tentang mendelegasikan izin di seluruh pengguna IAM dan Akun AWS, lihat. [Contoh kebijakan untuk mendelegasikan akses](id_roles_create_policy-examples.md) Untuk informasi selengkapnya tentang mengatur izin pada kredensial keamanan sementara, lihat [Izin untuk kredensial keamanan sementara](id_credentials_temp_control-access.md). 

**Example Contoh kebijakan yang memberikan izin terbatas kepada pengguna untuk membuat kredensial keamanan sementara bagi pengguna gabungan.**  
Saat Anda mengizinkan pengguna IAM memanggil `GetFederationToken`, ini adalah penerapan terbaik untuk membatasi izin yang dapat dikeluarkan oleh pengguna IAM. *Misalnya, kebijakan berikut menunjukkan cara mengizinkan pengguna IAM membuat kredensil keamanan sementara hanya untuk pengguna AWS STS federasi yang namanya dimulai dengan Manajer.*    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:GetFederationToken",
    "Resource": ["arn:aws:sts::123456789012:federated-user/Manager*"]
  }]
}
```

# Memberikan izin untuk menggunakan sesi konsol yang disempurnakan identitas
<a name="id_credentials_temp_control-access_sts-setcontext"></a>

Sesi konsol yang disempurnakan identitas memungkinkan AWS IAM Identity Center pengguna dan sesi IDs untuk disertakan dalam sesi AWS konsol pengguna saat mereka masuk. Misalnya, Amazon Q Developer Pro menggunakan sesi konsol yang disempurnakan identitas untuk mempersonalisasi pengalaman layanan. *Untuk informasi selengkapnya tentang sesi konsol yang disempurnakan identitas, lihat [Mengaktifkan sesi konsol yang disempurnakan identitas](https://docs.aws.amazon.com/singlesignon/latest/userguide/identity-enhanced-sessions.html) di Panduan Pengguna.AWS IAM Identity Center * Untuk informasi tentang penyiapan Pengembang Amazon Q, lihat [Menyiapkan Pengembang Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/setting-up.html) di *Panduan Pengguna Pengembang Amazon Q*.

Agar sesi konsol yang disempurnakan identitas tersedia bagi pengguna, Anda harus menggunakan kebijakan berbasis identitas untuk memberikan `sts:SetContext` izin kepada prinsipal IAM untuk sumber daya yang mewakili sesi konsol mereka sendiri. 

**penting**  
Secara default, pengguna tidak memiliki izin untuk menyetel konteks untuk sesi konsol yang disempurnakan identitas mereka. Untuk mengizinkan hal ini, Anda harus memberikan `sts:SetContext` izin kepada kepala IAM dalam kebijakan berbasis identitas seperti yang ditunjukkan pada contoh kebijakan di bawah ini.

Contoh kebijakan berbasis identitas berikut memberikan `sts:SetContext` izin kepada prinsipal IAM, memungkinkan prinsipal untuk mengatur konteks sesi konsol yang ditingkatkan identitas untuk sesi konsol mereka sendiri. AWS Sumber daya kebijakan,`arn:aws:sts::account-id:self`, mewakili AWS sesi pemanggil. Segmen `account-id` ARN dapat diganti dengan karakter `*` wildcard jika kebijakan izin yang sama diterapkan di beberapa akun, seperti saat kebijakan ini diterapkan menggunakan set izin Pusat Identitas IAM.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:SetContext",
            "Resource": "arn:aws:sts::111122223333:self"
        }
    ]
}
```

------

# Kelola AWS STS dalam sebuah Wilayah AWS
<a name="id_credentials_temp_enable-regions"></a>

Endpoint Regional adalah URL titik masuk dalam wilayah tertentu untuk layanan AWS web. AWS merekomendasikan penggunaan titik akhir Regional AWS Security Token Service (AWS STS) alih-alih titik akhir global untuk mengurangi latensi, membangun redundansi, dan meningkatkan validitas token sesi. Meskipun AWS STS titik akhir `https://sts.amazonaws.com` global (lama) sangat tersedia, itu di-host di satu AWS Wilayah, AS Timur (Virginia N.), dan seperti titik akhir lainnya, itu tidak menyediakan failover otomatis ke titik akhir di Wilayah lain.
+ **Mengurangi latensi** — Dengan melakukan AWS STS panggilan ke titik akhir yang secara geografis lebih dekat dengan layanan dan aplikasi Anda, Anda dapat mengakses AWS STS layanan dengan latensi yang lebih rendah dan waktu respons yang lebih baik.
+ **Membangun redundansi** — Anda dapat membatasi efek kegagalan dalam beban kerja ke sejumlah komponen terbatas dengan cakupan penahanan dampak yang dapat diprediksi. Menggunakan AWS STS endpoint regional memungkinkan Anda menyelaraskan cakupan komponen Anda dengan cakupan token sesi Anda. Untuk informasi selengkapnya tentang pilar keandalan ini, lihat [Menggunakan isolasi kesalahan untuk melindungi beban kerja Anda](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/use-fault-isolation-to-protect-your-workload.html) di *AWS Well-Architected* Framework.
+ **Tingkatkan validitas token sesi** — Token sesi dari AWS STS titik akhir Regional valid di semua. Wilayah AWS Token sesi dari titik akhir STS global hanya valid Wilayah AWS yang diaktifkan secara default. Jika Anda bermaksud mengaktifkan Wilayah baru untuk akun Anda, Anda dapat menggunakan token sesi dari AWS STS titik akhir Regional. Jika Anda memilih untuk menggunakan titik akhir global, Anda harus mengubah kompatibilitas Wilayah token AWS STS sesi untuk titik akhir global. Melakukannya memastikan bahwa token valid di semua Wilayah AWS.

Untuk daftar AWS STS Wilayah dan titik akhirnya, lihat[AWS STS Wilayah dan titik akhir](id_credentials_temp_region-endpoints.md).

**catatan**  
AWS telah membuat perubahan pada AWS Security Token Service (AWS STS) titik akhir global (`https://sts.amazonaws.com`) di Wilayah yang [diaktifkan secara default](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) untuk meningkatkan ketahanan dan kinerjanya. AWS STS permintaan ke titik akhir global secara otomatis disajikan Wilayah AWS sama dengan beban kerja Anda. Perubahan ini tidak akan diterapkan ke Wilayah keikutsertaan. Kami menyarankan Anda menggunakan titik akhir AWS STS regional yang sesuai. Untuk informasi selengkapnya, lihat [AWS STS perubahan titik akhir global](id_credentials_temp_region-endpoints.md#reference_sts_global_endpoint_changes).

**Topics**
+ [Mengaktifkan dan menonaktifkan AWS STS dalam Wilayah AWS](#sts-regions-activate-deactivate)
+ [Menulis kode untuk menggunakan AWS STS Wilayah](#id_credentials_temp_enable-regions_writing_code)
+ [Mengelola token sesi titik akhir global](#sts-regions-manage-tokens)

## Mengaktifkan dan menonaktifkan AWS STS dalam Wilayah AWS
<a name="sts-regions-activate-deactivate"></a>

Ketika Anda mengaktifkan AWS STS titik akhir untuk Wilayah, AWS STS dapat mengeluarkan kredensi sementara untuk pengguna dan peran di akun Anda yang membuat permintaan. AWS STS Kredensial tersebut kemudian dapat digunakan di setiap Wilayah yang diaktifkan secara default atau diaktifkan secara manual. Untuk Wilayah yang diaktifkan secara default, Anda harus mengaktifkan AWS STS titik akhir Regional di akun tempat kredenal sementara dibuat. Tidak masalah apakah pengguna masuk ke akun yang sama atau akun yang berbeda saat mereka mengajukan permintaan. Saat meminta kredensi sementara untuk peran lain Akun AWS menggunakan Wilayah yang diaktifkan secara manual, akun target (akun yang berisi peran) harus mengaktifkan Wilayah tersebut untuk operasi. AWS STS Ini memastikan bahwa kredenal keamanan sementara dapat dihasilkan dengan benar.

Misalnya, bayangkan pengguna di akun A ingin mengirim permintaan `sts:AssumeRole` API ke [titik akhir AWS STS`https://sts.ap-southeast-3.amazonaws.com` Regional](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html). Permintaan adalah kredensi sementara untuk peran yang disebutkan `Developer` di akun B. Karena permintaannya adalah untuk membuat kredensil untuk entitas di akun B, akun B harus mengaktifkan Region. `ap-southeast-3` Pengguna dari akun A (atau akun lain) dapat memanggil titik akhir `ap-southeast-3` AWS STS untuk meminta kredensial bagi akun B apakah Wilayah diaktifkan di akun mereka atau tidak. Untuk mempelajari lebih lanjut, lihat [Mengaktifkan atau menonaktifkan Wilayah AWS di akun Anda](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html).

**catatan**  
Wilayah Aktif tersedia bagi semua orang yang menggunakan kredensial sementara dalam akun tersebut. Untuk mengontrol pengguna atau peran IAM mana yang dapat mengakses Wilayah, gunakan kunci ketentuan `aws:RequestedRegion` dalam kebijakan izin Anda.

**Untuk mengaktifkan atau menonaktifkan AWS STS di Wilayah yang diaktifkan secara default (konsol)**

1. Masuk sebagai pengguna root atau pengguna dengan izin untuk melakukan tugas administrasi IAM.

1. Membuka [Konsol IAM](https://console.aws.amazon.com/iam/home?#home) dan di panel navigasi pilih [https://console.aws.amazon.com/iam/home?#account_settings](https://console.aws.amazon.com/iam/home?#account_settings).

1. Di bagian **Security Token Service (STS)** **Endpoints**, cari Region yang ingin Anda konfigurasikan, lalu pilih **Active** or **Inactive** di kolom **status STS**.

1. Di kotak dialog yang terbuka, pilih **Aktifkan** atau **Nonaktifkan**.

Untuk Wilayah yang harus diaktifkan, kami mengaktifkan AWS STS secara otomatis saat Anda mengaktifkan Wilayah. Setelah Anda mengaktifkan Wilayah, AWS STS selalu aktif untuk Wilayah dan Anda tidak dapat menonaktifkannya. Untuk mempelajari cara mengaktifkan Wilayah yang dinonaktifkan secara default, lihat [Menentukan Wilayah AWS akun mana yang dapat digunakan](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) dalam Panduan *AWS Account Management Referensi*.

## Menulis kode untuk menggunakan AWS STS Wilayah
<a name="id_credentials_temp_enable-regions_writing_code"></a>

Setelah mengaktifkan Region, Anda dapat mengarahkan panggilan AWS STS API ke Region tersebut. Cuplikan kode Java berikut menunjukkan cara mengkonfigurasi `AWSSecurityTokenService` objek untuk membuat permintaan ke Wilayah Eropa (Milan) (eu-south-1).

```
EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-south-1.amazonaws.com", "eu-south-1");
AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(credentials)
.withEndpointConfiguration(regionEndpointConfig)
.build();
```

AWS STS merekomendasikan agar Anda melakukan panggilan ke titik akhir Regional. Untuk mempelajari cara mengaktifkan Wilayah secara manual, lihat [Menentukan Wilayah AWS akun yang dapat digunakan](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) dalam *Panduan AWS Account Management Referensi*.

Dalam contoh, baris pertama membuat instance `EndpointConfiguration` objek yang dipanggil`regionEndpointConfig`, melewati URL titik akhir dan Wilayah AWS sebagai parameter.

Untuk mempelajari cara menyetel titik akhir AWS STS regional menggunakan variabel lingkungan AWS SDKs, lihat [Titik akhir AWS STS regional](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html) di Panduan Referensi Alat *AWS SDKs dan*.

Untuk semua kombinasi bahasa dan lingkungan pemrograman lainnya, mengacu pada [dokumentasi untuk SDK terkait](https://aws.amazon.com/tools/).

## Mengelola token sesi titik akhir global
<a name="sts-regions-manage-tokens"></a>

Sebagian Wilayah AWS besar diaktifkan untuk operasi di semua secara Layanan AWS default. Wilayah tersebut secara otomatis diaktifkan untuk digunakan dengan AWS STS. Beberapa Wilayah, seperti Asia Pacific (Hong Kong) harus diaktifkan secara manual. *Untuk mempelajari lebih lanjut tentang mengaktifkan dan menonaktifkan Wilayah AWS, lihat [Menentukan Wilayah AWS akun yang dapat digunakan](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) dalam Panduan Referensi AWS Account Management .* Ketika Anda mengaktifkan AWS Wilayah ini, mereka secara otomatis diaktifkan untuk digunakan dengan AWS STS. Anda tidak dapat mengaktifkan AWS STS titik akhir untuk Wilayah yang dinonaktifkan. Token sesi yang valid di semua Wilayah AWS menyertakan lebih banyak karakter daripada token yang valid di Wilayah yang diaktifkan secara default. Mengubah pengaturan ini mungkin memengaruhi sistem yang sudah ada di mana Anda menyimpan token untuk sementara waktu.

Anda dapat mengubah pengaturan ini menggunakan Konsol Manajemen AWS, AWS CLI, atau AWS API.

**Untuk mengubah kesesuaian Wilayah token sesi untuk titik akhir global (konsole)**

1. Masuk sebagai pengguna root atau pengguna dengan izin untuk melakukan tugas administrasi IAM. Untuk mengubah kesesuaian token sesi, Anda harus memiliki kebijakan yang memungkinkan tindakan `iam:SetSecurityTokenServicePreferences`.

1. Buka [konsol IAM](https://console.aws.amazon.com/iam/home?#home). Di panel navigasi, pilih **Pengaturan akun**.

1. Di bawah **Security Token Service (STS)** bagian **Token Sesi dari titik akhir STS**. **Titik akhir Global** menunjukkan`Valid only in Wilayah AWS enabled by default`. Pilih **Ubah**.

1. Dalam kotak dialog **Ubah kompatibilitas wilayah**, pilih **Semua Wilayah AWS**. Lalu pilih **Simpan Perubahan**.
**catatan**  
Token sesi yang valid di semua Wilayah AWS menyertakan lebih banyak karakter daripada token yang valid di Wilayah yang diaktifkan secara default. Mengubah pengaturan ini mungkin memengaruhi sistem yang sudah ada di mana Anda menyimpan token untuk sementara waktu.

**Untuk mengubah kesesuaian Wilayah token sesi untuk titik akhir global (AWS CLI)**  
Atur versi token sesi. Token versi 1 hanya valid dalam Wilayah AWS yang tersedia secara default. Token ini tidak bekerja di Wilayah yang diaktifkan secara manual, seperti Asia Pasifik (Hong Kong). Token Versi 2 valid di semua Wilayah. Namun, token versi 2 memuat lebih banyak karakter dan mungkin memengaruhi sistem tempat Anda menyimpan token untuk sementara waktu.
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html](https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html)

**Untuk mengubah kompatibilitas Wilayah token sesi untuk titik akhir global (AWS API)**  
Atur versi token sesi. Token versi 1 hanya valid dalam Wilayah AWS yang tersedia secara default. Token ini tidak bekerja di Wilayah yang diaktifkan secara manual, seperti Asia Pasifik (Hong Kong). Token Versi 2 valid di semua Wilayah. Namun, token versi 2 memuat lebih banyak karakter dan mungkin memengaruhi sistem tempat Anda menyimpan token untuk sementara waktu.
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html) 

# AWS STS Wilayah dan titik akhir
<a name="id_credentials_temp_region-endpoints"></a>

**catatan**  
AWS telah membuat perubahan pada AWS Security Token Service (AWS STS) titik akhir global (`https://sts.amazonaws.com`) di Wilayah yang [diaktifkan secara default](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) untuk meningkatkan ketahanan dan kinerjanya. AWS STS permintaan ke titik akhir global secara otomatis disajikan Wilayah AWS sama dengan beban kerja Anda. Perubahan ini tidak akan diterapkan ke Wilayah keikutsertaan. Kami menyarankan Anda menggunakan titik akhir AWS STS regional yang sesuai. Untuk informasi selengkapnya, lihat [AWS STS perubahan titik akhir global](#reference_sts_global_endpoint_changes).

Tabel berikut mencantumkan Wilayah dan titik akhirnya. Ini menunjukkan mana yang diaktifkan secara default dan mana yang dapat Anda aktifkan atau nonaktifkan.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html)

¹Anda harus [mengaktifkan Wilayah](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) untuk menggunakannya. Ini secara otomatis mengaktifkan. AWS STS Anda tidak dapat mengaktifkan atau menonaktifkan secara manual AWS STS di Wilayah ini.

²Untuk digunakan AWS di Tiongkok, Anda memerlukan akun dan kredensyal khusus di Tiongkok. AWS 

## AWS STS perubahan titik akhir global
<a name="reference_sts_global_endpoint_changes"></a>

AWS telah membuat perubahan pada AWS Security Token Service (AWS STS) titik akhir global (`https://sts.amazonaws.com`) di Wilayah yang [diaktifkan secara default](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) untuk meningkatkan ketahanan dan kinerjanya. Sebelumnya, semua permintaan ke titik akhir AWS STS global dilayani oleh satu Wilayah AWS, US East (Virginia N.). Sekarang di Wilayah [diaktifkan secara default](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html), permintaan ke titik akhir AWS STS global secara otomatis disajikan di Wilayah yang sama tempat permintaan berasal, bukan Wilayah AS Timur (Virginia Utara). Perubahan ini tidak akan diterapkan ke Wilayah keikutsertaan.

Dengan perubahan ini, AWS STS akan memproses permintaan Anda berdasarkan Region asal dan DNS resolver yang digunakan. Permintaan ke titik akhir AWS STS global disajikan di Wilayah yang sama dengan beban kerja AWS yang Anda gunakan jika permintaan DNS untuk titik akhir AWS STS global ditangani oleh server DNS Amazon di Wilayah yang diaktifkan secara default. Permintaan ke titik akhir AWS STS global akan terus dilayani di Wilayah AS Timur (Virginia Utara) jika permintaan Anda berasal dari Wilayah keikutsertaan atau jika permintaan Anda diselesaikan menggunakan penyelesai DNS selain server DNS Amazon. Untuk informasi selengkapnya tentang Amazon DNS, lihat [Server DNS Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html#AmazonDNS) di *Panduan Pengguna Amazon Virtual Private Cloud*.

Tabel berikut menunjukkan bagaimana permintaan ke titik akhir AWS STS global dirutekan berdasarkan penyedia DNS Anda.


| DNS Resolver | Permintaan ke titik akhir AWS STS global diarahkan ke lokal? Wilayah AWS | 
| --- | --- | 
|  Amazon DNS resolver di Amazon VPC di Wilayah diaktifkan secara default  |  Ya  | 
|  Penyelesai DNS Amazon di VPC Amazon di Wilayah keikutsertaan  |  Tidak, permintaan akan dialihkan ke Wilayah AS Timur (Virginia N.)  | 
|  DNS resolver yang disediakan oleh ISP Anda, penyedia DNS publik, atau penyedia DNS lainnya  |  Tidak, permintaan akan dialihkan ke Wilayah AS Timur (Virginia N.)  | 

Untuk memastikan gangguan minimal terhadap proses yang ada, AWS telah menerapkan langkah-langkah berikut:
+ AWS CloudTrail log untuk permintaan yang dibuat ke titik akhir AWS STS global dikirim ke Wilayah AS Timur (Virginia N.). CloudTrail log untuk permintaan yang dilayani oleh titik akhir AWS STS Regional akan terus dicatat ke Wilayah masing-masing di CloudTrail.
+ CloudTrail log untuk operasi yang dilakukan oleh titik akhir AWS STS global dan titik akhir Regional memiliki bidang tambahan `endpointType` dan `awsServingRegion` untuk menunjukkan titik akhir dan Wilayah mana yang melayani permintaan. Untuk contoh CloudTrail log, lihat[Contoh peristiwa AWS STS API menggunakan titik akhir global dalam file CloudTrail log](cloudtrail-integration.md#stscloudtrailexample-assumerole-sts-global-endpoint).
+ Permintaan yang dibuat ke titik akhir AWS STS global memiliki nilai `us-east-1` untuk kunci `aws:RequestedRegion` kondisi, terlepas dari Wilayah mana yang melayani permintaan tersebut.
+ Permintaan yang ditangani oleh titik akhir AWS STS global tidak membagikan kuota permintaan per detik dengan titik akhir Regional. AWS STS 

Jika Anda memiliki beban kerja di Wilayah keikutsertaan dan masih menggunakan titik akhir AWS STS global, kami sarankan untuk bermigrasi ke titik akhir AWS STS regional untuk meningkatkan ketahanan dan kinerja. Untuk informasi selengkapnya tentang mengonfigurasi AWS STS titik akhir regional, lihat [Titik akhir AWS STS Regional](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html) di Panduan Referensi *Alat AWS SDKs dan Alat*.

## AWS CloudTrail dan titik akhir Regional
<a name="sts-regions-cloudtrail"></a>

Panggilan ke titik akhir regional dan global dicatat di `tlsDetails` bidang di AWS CloudTrail. Panggilan ke titik akhir regional, seperti`us-east-2.amazonaws.com`, masuk CloudTrail ke wilayah yang sesuai. Memanggil ke titik akhir global, `sts.amazonaws.com`, dicatat sebagai panggilan ke layanan global. Peristiwa untuk AWS STS titik akhir global dicatat ke us-east-1.

**catatan**  
 `tlsDetails`hanya dapat dilihat untuk layanan yang mendukung bidang ini. Lihat [Layanan yang mendukung detail TLS CloudTrail di AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-supported-tls-details.html) *Panduan Pengguna*  
Lihat informasi yang lebih lengkap di [Mencatat panggilan IAM dan AWS STS API dengan AWS CloudTrail](cloudtrail-integration.md).

# Aktifkan akses broker identitas khusus ke AWS konsol
<a name="id_roles_providers_enable-console-custom-url"></a>

Anda dapat menulis dan menjalankan kode untuk membuat URL yang memungkinkan pengguna yang masuk ke jaringan organisasi Anda mengakses Konsol Manajemen AWS. URL menyertakan token masuk yang Anda dapatkan AWS dan yang mengautentikasi pengguna. AWS Sesi konsol yang dihasilkan mungkin termasuk yang berbeda `AccessKeyId` karena federasi. Untuk melacak penggunaan kunci akses untuk login federasi melalui CloudTrail acara terkait, lihat [Mencatat panggilan IAM dan AWS STS API dengan AWS CloudTrail](cloudtrail-integration.md) dan acara [Konsol Manajemen AWS login](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-aws-console-sign-in-events.html). 

**catatan**  
Jika organisasi Anda menggunakan penyedia identitas (IdP) yang kompatibel dengan SAML, Anda dapat menyiapkan akses ke konsol tanpa menulis kode. Ini berfungsi dengan penyedia seperti Layanan Federasi Direktori Aktif Microsoft atau Shibboleth sumber terbuka. Untuk detailnya, lihat [Mengaktifkan prinsip federasi SAMP 2.0 untuk mengakses Konsol Manajemen AWS](id_roles_providers_enable-console-saml.md). 

Untuk memungkinkan pengguna organisasi Anda mengakses Konsol Manajemen AWS, Anda dapat membuat *pialang identitas* khusus yang melakukan langkah-langkah berikut:

1. Pastikan bahwa pengguna diautentikasi oleh sistem identitas lokal Anda.

1. Panggil operasi AWS Security Token Service (AWS STS) [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)(disarankan) atau [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)API untuk mendapatkan kredenal keamanan sementara bagi pengguna. Untuk mempelajari tentang berbagai metode yang dapat Anda gunakan untuk menjalankan peran, lihat [Metode untuk mengambil peran](id_roles_manage-assume.md). Untuk mempelajari cara mengirimkan tag sesi opsional saat Anda mendapatkan kredensial keamanan Anda, lihat [Lulus tag sesi di AWS STS](id_session-tags.md).
   + Jika Anda menggunakan salah satu dari Operasi API `AssumeRole*` untuk mendapatkan kredensial keamanan sementara untuk sebuah peran, Anda dapat menyertakan parameter `DurationSeconds` dalam panggilan Anda. Parameter ini menentukan durasi sesi peran Anda, dari 900 detik (15 menit) hingga setelan durasi sesi maksimum untuk peran tersebut. Ketika Anda menggunakan `DurationSeconds` dalam `AssumeRole*` operasi, Anda harus menyebutnya sebagai pengguna IAM dengan kredensi jangka panjang. Jika tidak, panggilan ke titik akhir federasi pada langkah 3 gagal. Untuk mempelajari cara melihat atau mengubah nilai maksimum untuk peran, lihat [Memperbarui durasi sesi maksimum untuk peran](id_roles_update-role-settings.md#id_roles_update-session-duration).
   + Jika Anda menggunakan operasi API `GetFederationToken` untuk mendapatkan kredensial, Anda bisa menyertakan parameter `DurationSeconds` dalam panggilan Anda. Parameter ini menentukan durasi sesi peran Anda. Nilai dapat berkisar dari 900 detik (15 menit) hingga 129.600 detik (36 jam). Anda dapat melakukan panggilan API ini hanya dengan menggunakan kredenal AWS keamanan jangka panjang dari pengguna IAM. Anda juga dapat melakukan panggilan ini menggunakan Pengguna root akun AWS kredensional, tetapi kami tidak merekomendasikannya. Jika Anda membuat panggilan ini sebagai pengguna akar, sesi default berlangsung selama satu jam. Atau Anda dapat menentukan sesi dari 900 detik (15 menit) hingga 3.600 detik (satu jam). 

1. Hubungi titik akhir AWS federasi dan berikan kredensi keamanan sementara untuk meminta token masuk.

1. Buat URL untuk konsol yang mencakup token:
   + Jika Anda menggunakan salah satu dari operasi API `AssumeRole*` di URL Anda, Anda dapat menyertakan Parameter HTTP `SessionDuration`. Parameter ini menentukan durasi sesi konsol, dari 900 detik (15 menit) hingga 43200 detik (12 jam).
   + Jika Anda menggunakan operasi API `GetFederationToken` di URL Anda, Anda dapat menyertakan Parameter `DurationSeconds`. Parameter ini menentukan durasi sesi konsol federasi. Nilai dapat berkisar dari 900 detik (15 menit) hingga 129.600 detik (36 jam). 
**catatan**  
Anda `SessionDuration` tidak boleh lebih besar dari atau sama dengan pengaturan durasi sesi maksimum untuk peran yang Anda asumsikan. Misalnya, Anda menetapkan durasi sesi maksimum untuk peran yang ingin Anda asumsikan menjadi 5 jam. `SessionDuration`Parameter Anda bisa 16524 detik atau 4 jam 59 detik.
Jangan gunakan parameter `SessionDuration` HTTP ketika Anda mendapatkan kredensi sementara dengan. `GetFederationToken` Operasi akan gagal.
Menggunakan kredensi untuk satu peran untuk mengambil peran yang berbeda disebut rantai [*peran*](id_roles.md#iam-term-role-chaining). Saat Anda menggunakan rantai peran, kredensial baru Anda dibatasi hingga durasi maksimum satu jam. Saat Anda menggunakan peran untuk [memberikan izin ke aplikasi yang berjalan pada instans EC2](id_roles_use_switch-role-ec2.md), aplikasi tersebut tidak terkena batasan ini.
Jangan gunakan parameter `SessionDuration` HTTP saat Anda mendapatkan kredensi sementara melalui rantai peran. Operasi akan gagal.

1. Berikan URL ke pengguna atau panggil URL atas nama pengguna.

URL yang disediakan oleh titik akhir federasi berlaku selama 15 menit setelah dibuat. Ini berbeda dari durasi (dalam detik) sesi kredensial keamanan sementara yang dikaitkan dengan URL. Kredensial tersebut berlaku selama durasi yang Anda tentukan saat membuatnya, dimulai sejak saat informasi tersebut dibuat.

**penting**  
URL memberikan akses ke AWS sumber daya Anda melalui Konsol Manajemen AWS jika Anda telah mengaktifkan izin di kredenial keamanan sementara terkait. Karena alasan ini, Anda harus memperlakukan URL sebagai rahasia. Kami menyarankan mengembalikan URL melalui pengalihan aman, misalnya, dengan menggunakan kode status respons HTTP 302 melalui koneksi SSL. Untuk informasi lebih lanjut tentang kode status respons HTTP 302, kunjungi [RFC 2616, bagian 10.3.3](https://datatracker.ietf.org/doc/html/rfc2616#section-10.3.3).

Untuk menyelesaikan tugas-tugas ini, Anda dapat menggunakan [HTTPS Query API for AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/APIReference/) dan [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/). Atau, Anda dapat menggunakan bahasa pemrograman, seperti Java, Ruby, atau C\$1, bersama dengan [SDK AWS](https://aws.amazon.com/tools/) yang sesuai. Masing-masing metode ini dijelaskan dalam topik-topik berikut.

**Topics**
+ [Contoh kode menggunakan operasi API kueri IAM](#STSConsoleLink_manual)
+ [Contoh kode menggunakan Python](#STSConsoleLink_programPython)
+ [Contoh kode menggunakan Java](#STSConsoleLink_programJava)
+ [Contoh menunjukkan cara membangun URL (Ruby)](#STSConsoleLink_programRuby)

## Contoh kode menggunakan operasi API kueri IAM
<a name="STSConsoleLink_manual"></a>

Anda dapat membuat URL yang memberikan peran dan kepala sekolah federasi akses langsung ke file. Konsol Manajemen AWS Tugas ini menggunakan IAM dan AWS STS HTTPS Query API. Untuk informasi selengkapnya tentang membuat permintaan pertanyaan, lihat [Membuat Permintaan Kueri](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html).

**catatan**  
Prosedur berikut berisi contoh string teks. Untuk meningkatkan keterbacaan, jeda baris telah ditambahkan ke beberapa contoh yang lebih panjang. Saat Anda membuat string ini untuk Anda gunakan sendiri, Anda harus mengurangi setiap pecahan baris.

**Untuk memberikan peran dan kepala sekolah federasi akses ke sumber daya Anda dari Konsol Manajemen AWS**

1. Autentikasi pengguna di sistem identitas dan otorisasi Anda.

1. Dapatkan kredensial keamanan sementara untuk pengguna. Kredensi sementara terdiri dari ID kunci akses, kunci akses rahasia, dan token sesi. Untuk informasi lebih lanjut tentang membuat kredensial sementara, lihat [Kredensial keamanan sementara di IAM](id_credentials_temp.md).

   Untuk mendapatkan kredensi sementara, Anda memanggil AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API (disarankan) atau API. [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) Untuk informasi selengkapnya tentang perbedaan antara operasi API ini, lihat [Memahami Opsi API untuk Mendelegasikan Akses ke AWS Akun Anda dengan](https://aws.amazon.com/blogs/security/understanding-the-api-options-for-securely-delegating-access-to-your-aws-account) Aman di Blog AWS Keamanan.
**penting**  
Saat Anda menggunakan API [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) untuk membuat kredensial keamanan sementara, Anda harus menentukan izin yang diberikan kredensial tersebut kepada pengguna yang memegang peran tersebut. Untuk setiap operasi API yang dimulai dengan `AssumeRole*`, Anda menggunakan peran IAM untuk menetapkan izin. Untuk operasi API lainnya, mekanisme bervariasi dengan API. Untuk lebih detailnya, lihat [Izin untuk kredensial keamanan sementara](id_credentials_temp_control-access.md). Sebagai tambahan, jika Anda menggunakan operasi API `AssumeRole*`, Anda harus menyebutnya sebagai pengguna IAM dengan kredensial jangka panjang. Jika tidak, panggilan ke titik akhir federasi pada langkah 3 gagal.  


1. Setelah Anda mendapatkan kredensial keamanan sementara, masukkan ke dalam rangkaian sesi JSON untuk menukarnya dengan token masuk. Contoh berikut menunjukkan cara mengkode kredensial. Anda mengganti teks placeholder dengan nilai yang sesuai dari kredensial yang Anda terima di langkah sebelumnya.

   ```
   {"sessionId":"*** temporary access key ID ***",
   "sessionKey":"*** temporary secret access key ***",
   "sessionToken":"*** session token ***"}
   ```

1. [URL dikode](https://en.wikipedia.org/wiki/Percent-encoding) string sesi dari langkah sebelumnya. Karena informasi yang Anda encoding itu sensitif, kami menganjurkan agar Anda menghindari penggunaan layanan web untuk encoding ini. Alih-alih, gunakan fungsi atau fitur yang dipasang secara lokal di perangkat pengembangan Anda untuk mengenkode informasi ini dengan aman. Anda dapat menggunakan fungsi `urllib.quote_plus` di Python, fungsi `URLEncoder.encode` di Java, atau fungsi `CGI.escape` di Ruby. Lihat contoh-contoh ini nanti dalam topik ini.

1. <a name="STSConsoleLink_manual_step5"></a>
**catatan**  
AWS mendukung permintaan POST di sini.

   Kirim permintaan Anda ke titik akhir AWS federasi:

   `https://region-code.signin.aws.amazon.com/federation` 

   Untuk daftar *region-code* nilai yang mungkin, lihat kolom **Wilayah** di titik [akhir AWS Masuk](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Anda dapat secara opsional menggunakan titik akhir federasi AWS Masuk default:

   `https://signin.aws.amazon.com/federation` 

   Permintaan tersebut harus menyertakan parameter `Action` dan `Session`, dan (secara opsional) jika Anda menggunakan operasi API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), sebuah parameter HTTP `SessionDuration` seperti ditunjukkan dalam contoh berikut.

   ```
   Action = getSigninToken
   SessionDuration = time in seconds
   Session = *** the URL encoded JSON string created in steps 3 & 4 ***
   ```
**catatan**  
Petunjuk berikut dalam langkah ini hanya berfungsi menggunakan permintaan GET.

   Parameter HTTP `SessionDuration` ini menentukan durasi sesi konsol federasi. Ini terpisah dari durasi kredensial sementara yang Anda tentukan menggunakan parameter `DurationSeconds`. Anda dapat menentukan nilai maksimal `SessionDuration` adalah 43.200 (12 jam). Jika `SessionDuration` parameter tidak ada, maka sesi default ke durasi kredensional yang Anda ambil dari AWS STS langkah 2 (yang defaultnya satu jam). Lihat dokumentasi [ untuk `AssumeRole` API](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) untuk detail tentang cara menentukan durasi menggunakan parameter `DurationSeconds`. Kemampuan untuk membuat sesi konsol yang lebih lama dari satu jam bersifat intrinsik bagi `getSigninToken` operasi titik akhir federasi.
**catatan**  
Anda `SessionDuration` tidak boleh lebih besar dari atau sama dengan pengaturan durasi sesi maksimum untuk peran yang Anda asumsikan. Misalnya, Anda menetapkan durasi sesi maksimum untuk peran yang ingin Anda asumsikan menjadi 5 jam. `SessionDuration`Parameter Anda bisa 16524 detik atau 4 jam 59 detik.
Jangan gunakan parameter `SessionDuration` HTTP ketika Anda mendapatkan kredensi sementara dengan. `GetFederationToken` Operasi akan gagal.
Menggunakan kredensi untuk satu peran untuk mengambil peran yang berbeda disebut rantai [*peran*](id_roles.md#iam-term-role-chaining). Saat Anda menggunakan rantai peran, kredensial baru Anda dibatasi hingga durasi maksimum satu jam. Saat Anda menggunakan peran untuk [memberikan izin ke aplikasi yang berjalan pada instans EC2](id_roles_use_switch-role-ec2.md), aplikasi tersebut tidak terkena batasan ini.
Jangan gunakan parameter `SessionDuration` HTTP saat Anda mendapatkan kredensi sementara melalui rantai peran. Operasi akan gagal.

   Saat Anda mengaktifkan sesi konsol dengan durasi yang diperpanjang, Anda meningkatkan risiko eksposur kredensial. Untuk membantu Anda mengurangi risiko ini, Anda dapat segera menonaktifkan sesi konsol aktif untuk peran apa pun dengan memilih **Mencabut Sesi** pada **Ringkasan Peran** IAM halaman konsol. Untuk informasi selengkapnya, lihat [Mencabut kredensi keamanan sementara peran IAM](id_roles_use_revoke-sessions.md). 

    Berikut ini adalah contoh seperti apa permintaan Anda. Garis dibungkus di sini agar mudah dibaca, tetapi Anda harus mengirimkannya sebagai string satu baris.

   ```
   https://signin.aws.amazon.com/federation
   ?Action=getSigninToken
   &SessionDuration=1800
   &Session=%7B%22sessionId%22%3A+%22ASIAJUMHIZPTOKTBMK5A%22%2C+%22sessionKey%22
   %3A+%22LSD7LWI%2FL%2FN%2BgYpan5QFz0XUpc8s7HYjRsgcsrsm%22%2C+%22sessionToken%2
   2%3A+%22FQoDYXdzEBQaDLbj3VWv2u50NN%2F3yyLSASwYtWhPnGPMNmzZFfZsL0Qd3vtYHw5A5dW
   AjOsrkdPkghomIe3mJip5%2F0djDBbo7SmO%2FENDEiCdpsQKodTpleKA8xQq0CwFg6a69xdEBQT8
   FipATnLbKoyS4b%2FebhnsTUjZZQWp0wXXqFF7gSm%2FMe2tXe0jzsdP0O12obez9lijPSdF1k2b5
   PfGhiuyAR9aD5%2BubM0pY86fKex1qsytjvyTbZ9nXe6DvxVDcnCOhOGETJ7XFkSFdH0v%2FYR25C
   UAhJ3nXIkIbG7Ucv9cOEpCf%2Fg23ijRgILIBQ%3D%3D%22%7D
   ```

   Respons dari titik akhir federasi adalah dokumen JSON dengan nilai `SigninToken`. Ini akan terlihat serupa dengan contoh berikut.

   ```
   {"SigninToken":"*** the SigninToken string ***"}
   ```

1. 
**catatan**  
AWS mendukung permintaan POST di sini.

   Terakhir, buat URL yang dapat digunakan pengguna Anda untuk mengakses file Konsol Manajemen AWS. URL adalah titik akhir URL federasi yang sama yang Anda gunakan di [Step 5](#STSConsoleLink_manual_step5), ditambah parameter berikut:

   ```
   ?Action = login
   &Issuer = *** the form-urlencoded URL for your internal sign-in page ***
   &Destination = *** the form-urlencoded URL to the desired AWS console page ***
   &SigninToken = *** the value of SigninToken received in the previous step ***
   ```
**catatan**  
Petunjuk berikut dalam langkah ini hanya berfungsi menggunakan GET API.

   Contoh berikut menunjukkan seperti apa URL akhir itu. URL valid selama 15 menit sejak dibuat. Kredensial keamanan sementara dan sesi konsol yang disematkan dalam URL valid selama durasi yang Anda tentukan di parameter HTTP `SessionDuration` saat Anda memintanya untuk pertama kali. 

   ```
   https://signin.aws.amazon.com/federation
   ?Action=login
   &Issuer=https%3A%2F%2Fexample.com
   &Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F
   &SigninToken=VCQgs5qZZt3Q6fn8Tr5EXAMPLEmLnwB7JjUc-SHwnUUWabcRdnWsi4DBn-dvC
   CZ85wrD0nmldUcZEXAMPLE-vXYH4Q__mleuF_W2BE5HYexbe9y4Of-kje53SsjNNecATfjIzpW1
   WibbnH6YcYRiBoffZBGExbEXAMPLE5aiKX4THWjQKC6gg6alHu6JFrnOJoK3dtP6I9a6hi6yPgm
   iOkPZMmNGmhsvVxetKzr8mx3pxhHbMEXAMPLETv1pij0rok3IyCR2YVcIjqwfWv32HU2Xlj471u
   3fU6uOfUComeKiqTGX974xzJOZbdmX_t_lLrhEXAMPLEDDIisSnyHGw2xaZZqudm4mo2uTDk9Pv
   9l5K0ZCqIgEXAMPLEcA6tgLPykEWGUyH6BdSC6166n4M4JkXIQgac7_7821YqixsNxZ6rsrpzwf
   nQoS14O7R0eJCCJ684EXAMPLEZRdBNnuLbUYpz2Iw3vIN0tQgOujwnwydPscM9F7foaEK3jwMkg
   Apeb1-6L_OB12MZhuFxx55555EXAMPLEhyETEd4ZulKPdXHkgl6T9ZkIlHz2Uy1RUTUhhUxNtSQ
   nWc5xkbBoEcXqpoSIeK7yhje9Vzhd61AEXAMPLElbWeouACEMG6-Vd3dAgFYd6i5FYoyFrZLWvm
   0LSG7RyYKeYN5VIzUk3YWQpyjP0RiT5KUrsUi-NEXAMPLExMOMdoODBEgKQsk-iu2ozh6r8bxwC
   RNhujg
   ```

## Contoh kode menggunakan Python
<a name="STSConsoleLink_programPython"></a>

Contoh berikut menunjukkan bagaimana menggunakan Python untuk secara terprogram membangun URL yang memberikan pengguna akses langsung ke URL. Konsol Manajemen AWS Berikut ini adalah dua contoh:
+ Federasi melalui GET permintaan ke AWS
+ Federasi melalui permintaan POST untuk AWS

Kedua contoh menggunakan [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API [AWS SDK untuk Python (Boto3)](https://aws.amazon.com/tools/)dan untuk mendapatkan kredenal keamanan sementara.

Jangan sertakan `SessionDuration` jika `AssumeRoleSession` kredensional Anda berasal dari rantai peran. Jika Anda memasukkan`SessionDuration`, operasi akan gagal.

### Gunakan Permintaan GET
<a name="post-api-py-example"></a>

```
import urllib, json, sys
import requests # 'pip install requests'
import boto3 # AWS SDK for Python (Boto3) 'pip install boto3'

# Step 1: Authenticate user in your own identity system.

# Step 2: Using the access keys for an IAM user in your Akun AWS,
# call "AssumeRole" to get temporary access keys for the role or federated principal

# Note: Calls to AWS STS AssumeRole must be signed using the access key ID 
# and secret access key of an IAM user or using existing temporary credentials.
# The credentials can be in Amazon EC2 instance metadata, in environment variables, 
# or in a configuration file, and will be discovered automatically by the 
# client('sts') function. For more information, see the Python SDK docs:
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role
sts_connection = boto3.client('sts')

assumed_role_object = sts_connection.assume_role(
    RoleArn="arn:aws:iam::account-id:role/ROLE-NAME",
    RoleSessionName="AssumeRoleSession",
)

# Step 3: Format resulting temporary credentials into JSON
url_credentials = {}
url_credentials['sessionId'] = assumed_role_object.get('Credentials').get('AccessKeyId')
url_credentials['sessionKey'] = assumed_role_object.get('Credentials').get('SecretAccessKey')
url_credentials['sessionToken'] = assumed_role_object.get('Credentials').get('SessionToken')
json_string_with_temp_credentials = json.dumps(url_credentials)

# Step 4. Make request to AWS federation endpoint to get sign-in token. Construct the parameter string with
# the sign-in action request, a 12-hour session duration, and the JSON document with temporary credentials 
# as parameters.
request_parameters = "?Action=getSigninToken"
request_parameters += "&SessionDuration=43200"
if sys.version_info[0] < 3:
    def quote_plus_function(s):
        return urllib.quote_plus(s)
else:
    def quote_plus_function(s):
        return urllib.parse.quote_plus(s)
request_parameters += "&Session=" + quote_plus_function(json_string_with_temp_credentials)
request_url = "https://signin.aws.amazon.com/federation" + request_parameters
r = requests.get(request_url)
# Returns a JSON document with a single element named SigninToken.
signin_token = json.loads(r.text)

# Step 5: Create URL where users can use the sign-in token to sign in to 
# the console. This URL must be used within 15 minutes after the
# sign-in token was issued.
request_parameters = "?Action=login" 
request_parameters += "&Issuer=Example.org" 
request_parameters += "&Destination=" + quote_plus_function("https://console.aws.amazon.com/")
request_parameters += "&SigninToken=" + signin_token["SigninToken"]
request_url = "https://signin.aws.amazon.com/federation" + request_parameters

# Send final URL to stdout
print (request_url)
```

### Gunakan Permintaan POST
<a name="get-api-py-example-1"></a>

```
import urllib, json, sys
import requests # 'pip install requests'
import boto3 # AWS SDK for Python (Boto3) 'pip install boto3'
import os
from selenium import webdriver # 'pip install selenium', 'brew install chromedriver'

# Step 1: Authenticate user in your own identity system.

# Step 2: Using the access keys for an IAM user in your A Akun AWS,
# call "AssumeRole" to get temporary access keys for the role or federated principal

# Note: Calls to AWS STS AssumeRole must be signed using the access key ID 
# and secret access key of an IAM user or using existing temporary credentials.
# The credentials can be in Amazon EC2 instance metadata, in environment variables, 

# or in a configuration file, and will be discovered automatically by the 
# client('sts') function. For more information, see the Python SDK docs:
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role
if sys.version_info[0] < 3:
    def quote_plus_function(s):
        return urllib.quote_plus(s)
else:
    def quote_plus_function(s):
        return urllib.parse.quote_plus(s)

sts_connection = boto3.client('sts')

assumed_role_object = sts_connection.assume_role(
    RoleArn="arn:aws:iam::account-id:role/ROLE-NAME",
    RoleSessionName="AssumeRoleDemoSession",
)

# Step 3: Format resulting temporary credentials into JSON
url_credentials = {}
url_credentials['sessionId'] = assumed_role_object.get('Credentials').get('AccessKeyId')
url_credentials['sessionKey'] = assumed_role_object.get('Credentials').get('SecretAccessKey')
url_credentials['sessionToken'] = assumed_role_object.get('Credentials').get('SessionToken')
json_string_with_temp_credentials = json.dumps(url_credentials)

# Step 4. Make request to AWS federation endpoint to get sign-in token. Construct the parameter string with
# the sign-in action request, a 12-hour session duration, and the JSON document with temporary credentials 
# as parameters.
request_parameters = {}
request_parameters['Action'] = 'getSigninToken'
request_parameters['SessionDuration'] = '43200'
request_parameters['Session'] = json_string_with_temp_credentials

request_url = "https://signin.aws.amazon.com/federation"
r = requests.post( request_url, data=request_parameters)

# Returns a JSON document with a single element named SigninToken.
signin_token = json.loads(r.text)

# Step 5: Create a POST request where users can use the sign-in token to sign in to 
# the console. The POST request must be made within 15 minutes after the
# sign-in token was issued.
request_parameters = {}
request_parameters['Action'] = 'login'
request_parameters['Issuer']='Example.org'
request_parameters['Destination'] = 'https://console.aws.amazon.com/'
request_parameters['SigninToken'] =signin_token['SigninToken']

jsrequest = '''
var form = document.createElement('form');
form.method = 'POST';
form.action = '{request_url}';
request_parameters = {request_parameters}
for (var param in request_parameters) {{
    if (request_parameters.hasOwnProperty(param)) {{
        const hiddenField = document.createElement('input');
        hiddenField.type = 'hidden';
        hiddenField.name = param;
        hiddenField.value = request_parameters[param];
        form.appendChild(hiddenField);
    }}
}}
document.body.appendChild(form);
form.submit();
'''.format(request_url=request_url, request_parameters=request_parameters)

driver = webdriver.Chrome()
driver.execute_script(jsrequest)
input("Press Enter to close the browser window...")
```

## Contoh kode menggunakan Java
<a name="STSConsoleLink_programJava"></a>

Contoh berikut menunjukkan bagaimana menggunakan Java untuk secara terprogram membangun URL yang memberikan pengguna akses langsung ke. Konsol Manajemen AWS Ptongan kode berikut menggunakan [SDK for Java AWS](https://aws.amazon.com/documentation/sdkforjava/).

```
import java.net.URLEncoder;
import java.net.URL;
import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
// Available at http://www.json.org/java/index.html
import org.json.JSONObject;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient;
import com.amazonaws.services.securitytoken.model.Credentials;
import com.amazonaws.services.securitytoken.model.GetFederationTokenRequest;
import com.amazonaws.services.securitytoken.model.GetFederationTokenResult;


/* Calls to AWS STS API operations must be signed using the access key ID 
   and secret access key of an IAM user or using existing temporary 
   credentials. The credentials should not be embedded in code. For 
   this example, the code looks for the credentials in a 
   standard configuration file.
*/
AWSCredentials credentials = 
  new PropertiesCredentials(
         AwsConsoleApp.class.getResourceAsStream("AwsCredentials.properties"));

AWSSecurityTokenServiceClient stsClient = 
  new AWSSecurityTokenServiceClient(credentials);

GetFederationTokenRequest getFederationTokenRequest = 
  new GetFederationTokenRequest();
getFederationTokenRequest.setDurationSeconds(1800);
getFederationTokenRequest.setName("UserName");

// A sample policy for accessing Amazon Simple Notification Service (Amazon SNS) in the console.

String policy = "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Action\":\"sns:*\"," +
  "\"Effect\":\"Allow\",\"Resource\":\"*\"}]}";

getFederationTokenRequest.setPolicy(policy);

GetFederationTokenResult federationTokenResult = 
  stsClient.getFederationToken(getFederationTokenRequest);

Credentials federatedCredentials = federationTokenResult.getCredentials();

// The issuer parameter specifies your internal sign-in
// page, for example https://mysignin.internal.mycompany.com/.
// The console parameter specifies the URL to the destination console of the
// AWS Management Console. This example goes to Amazon SNS. 
// The signin parameter is the URL to send the request to.

String issuerURL = "https://mysignin.internal.mycompany.com/";
String consoleURL = "https://console.aws.amazon.com/sns";
String signInURL = "https://signin.aws.amazon.com/federation";
  
// Create the sign-in token using temporary credentials,
// including the access key ID,  secret access key, and session token.
String sessionJson = String.format(
  "{\"%1$s\":\"%2$s\",\"%3$s\":\"%4$s\",\"%5$s\":\"%6$s\"}",
  "sessionId", federatedCredentials.getAccessKeyId(),
  "sessionKey", federatedCredentials.getSecretAccessKey(),
  "sessionToken", federatedCredentials.getSessionToken());
              
// Construct the sign-in request with the request sign-in token action, a
// 12-hour console session duration, and the JSON document with temporary 
// credentials as parameters.

String getSigninTokenURL = signInURL + 
                           "?Action=getSigninToken" +
                           "&DurationSeconds=43200" + 
                           "&SessionType=json&Session=" + 
                           URLEncoder.encode(sessionJson,"UTF-8");

URL url = new URL(getSigninTokenURL);

// Send the request to the AWS federation endpoint to get the sign-in token
URLConnection conn = url.openConnection ();

BufferedReader bufferReader = new BufferedReader(new 
  InputStreamReader(conn.getInputStream()));  
String returnContent = bufferReader.readLine();

String signinToken = new JSONObject(returnContent).getString("SigninToken");

String signinTokenParameter = "&SigninToken=" + URLEncoder.encode(signinToken,"UTF-8");

// The issuer parameter is optional, but recommended. Use it to direct users
// to your sign-in page when their session expires.

String issuerParameter = "&Issuer=" + URLEncoder.encode(issuerURL, "UTF-8");

// Finally, present the completed URL for the AWS console session to the user

String destinationParameter = "&Destination=" + URLEncoder.encode(consoleURL,"UTF-8");
String loginURL = signInURL + "?Action=login" +
                     signinTokenParameter + issuerParameter + destinationParameter;
```

## Contoh menunjukkan cara membangun URL (Ruby)
<a name="STSConsoleLink_programRuby"></a>

Contoh berikut menunjukkan bagaimana menggunakan Ruby untuk secara terprogram membangun URL yang memberikan pengguna akses langsung ke. Konsol Manajemen AWS Potongan kode ini menggunakan [SDK for Ruby AWS](https://aws.amazon.com/documentation/sdkforruby/). 

```
require 'rubygems'
require 'json'
require 'open-uri'
require 'cgi'
require 'aws-sdk'

# Create a new STS instance
# 
# Note: Calls to AWS STS API operations must be signed using an access key ID 
# and secret access key. The credentials can be in EC2 instance metadata 
# or in environment variables and will be automatically discovered by
# the default credentials provider in the AWS Ruby SDK. 
sts = Aws::STS::Client.new()

# The following call creates a temporary session that returns 
# temporary security credentials and a session token.
# The policy grants permissions to work
# in the AWS SNS console.

session = sts.get_federation_token({
  duration_seconds: 1800,
  name: "UserName",
  policy: "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":{\"Effect\":\"Allow\",\"Action\":\"sns:*\",\"Resource\":\"*\"}}",
})

# The issuer value is the URL where users are directed (such as
# to your internal sign-in page) when their session expires.
#
# The console value specifies the URL to the destination console.
# This example goes to the Amazon SNS console.
#
# The sign-in value is the URL of the AWS STS federation endpoint.
issuer_url = "https://mysignin.internal.mycompany.com/"
console_url = "https://console.aws.amazon.com/sns"
signin_url = "https://signin.aws.amazon.com/federation"

# Create a block of JSON that contains the temporary credentials
# (including the access key ID, secret access key, and session token).
session_json = {
  :sessionId => session.credentials[:access_key_id],
  :sessionKey => session.credentials[:secret_access_key],
  :sessionToken => session.credentials[:session_token]
}.to_json

# Call the federation endpoint, passing the parameters
# created earlier and the session information as a JSON block. 
# The request returns a sign-in token that's valid for 15 minutes.
# Signing in to the console with the token creates a session 
# that is valid for 12 hours.
get_signin_token_url = signin_url + 
                       "?Action=getSigninToken" + 
                       "&SessionType=json&Session=" + 
                       CGI.escape(session_json)

returned_content = URI.parse(get_signin_token_url).read

# Extract the sign-in token from the information returned
# by the federation endpoint.
signin_token = JSON.parse(returned_content)['SigninToken']
signin_token_param = "&SigninToken=" + CGI.escape(signin_token)

# Create the URL to give to the user, which includes the
# sign-in token and the URL of the console to open.
# The "issuer" parameter is optional but recommended.
issuer_param = "&Issuer=" + CGI.escape(issuer_url)
destination_param = "&Destination=" + CGI.escape(console_url)
login_url = signin_url + "?Action=login" + signin_token_param + 
  issuer_param + destination_param
```