Beralih ke IAM peran (AWS CLI) - AWS Identity and Access Management

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

Beralih ke IAM peran (AWS CLI)

Peran menentukan sekumpulan izin yang dapat Anda gunakan untuk mengakses AWS sumber daya yang Anda butuhkan. Dalam hal ini, ini mirip dengan pengguna di AWS Identity and Access Management(IAM). Saat Anda masuk sebagai pengguna, Anda mendapatkan serangkaian izin tertentu. Namun, Anda tidak masuk ke sebuah peran, tetapi setelah masuk sebagai pengguna, Anda dapat beralih ke sebuah peran. Sementara waktu ini mengesampingkan izin pengguna awal Anda dan justru memberikan izin yang ditetapkan untuk peran. Peran dapat di akun Anda sendiri atau lainnya Akun AWS. Untuk informasi selengkapnya tentang peran, manfaatnya, dan cara membuat dan mengonfigurasinya, lihatIAMperan, danPembuatan peran IAM. Untuk mempelajari tentang berbagai metode yang dapat Anda gunakan untuk mengasumsikan peran, lihat Metode untuk mengambil peran.

penting

Izin IAM pengguna Anda dan peran apa pun yang Anda asumsikan tidak kumulatif. Hanya satu rangkaian izin yang aktif pada satu waktu. Saat Anda mengasumsikan suatu peran, sementara waktu Anda meninggalkan izin pengguna dan bekerja dengan izin yang ditetapkan ke peran tersebut. Saat Anda keluar dari peran, izin pengguna asli Anda dipulihkan secara otomatis.

Anda dapat menggunakan peran untuk menjalankan AWS CLI perintah saat Anda masuk sebagai IAM pengguna. Anda juga dapat menggunakan peran untuk menjalankan AWS CLI perintah saat Anda masuk sebagai pengguna yang diautentikasi secara eksternal (SAMLatau OIDC) yang sudah menggunakan peran. Selain itu, Anda dapat menggunakan peran untuk menjalankan AWS CLI perintah dari dalam EC2 instance Amazon yang dilampirkan ke peran melalui profil instance-nya. Anda tidak dapat mengambil peran ketika Anda masuk sebagai Pengguna root akun AWS.

Rantai peran — Anda juga dapat menggunakan rantai peran, yang menggunakan izin dari peran untuk mengakses peran kedua.

Secara default, sesi peran Anda berlangsung selama satu jam. Ketika Anda mengambil peran ini menggunakan assume-role* CLI operasi, Anda dapat menentukan nilai untuk duration-seconds parameter. Nilai ini dapat berkisar dari 900 detik (15 menit) hingga pengaturan durasi sesi maksimum untuk peran tersebut. Jika Anda beralih peran di konsol, durasi sesi Anda dibatasi hingga maksimal satu jam. Untuk mempelajari cara melihat nilai maksimum untuk peran Anda, lihat Memperbarui durasi sesi maksimum untuk peran.

Saat Anda menggunakan rantai peran, kredensial baru Anda dibatasi hingga durasi maksimum satu jam. Jika Anda kemudian menggunakan parameter duration-seconds untuk memberikan nilai lebih dari satu jam, operasi gagal.

Skenario contoh: Beralih ke peran produksi

Bayangkan Anda adalah IAM pengguna untuk bekerja di lingkungan pengembangan. Dalam skenario ini, Anda kadang-kadang perlu bekerja dengan lingkungan produksi di baris perintah dengan AWS CLI. Anda sudah memiliki set kredensi kunci akses yang tersedia untuk Anda. Ini bisa menjadi access key pair yang ditetapkan untuk IAM pengguna standar Anda. Atau, jika Anda masuk sebagai pengguna gabungan, itu dapat menjadi pasangan access key untuk peran yang awalnya ditetapkan kepada Anda. Jika izin Anda saat ini memberi Anda kemampuan untuk mengambil IAM peran tertentu, maka Anda dapat mengidentifikasi peran tersebut dalam “profil” di AWS CLI file konfigurasi. Perintah itu kemudian dijalankan dengan izin dari IAM peran yang ditentukan, bukan identitas asli. Perhatikan bahwa ketika Anda menentukan profil itu di AWS CLI perintah, Anda menggunakan peran baru. Dalam situasi ini, Anda tidak dapat menggunakan izin awal dalam akun pengembangan pada saat bersamaan. Alasannya adalah bahwa hanya satu rangkaian izin yang dapat berlaku pada satu waktu.

catatan

Untuk tujuan keamanan, administrator dapat meninjau AWS CloudTrail log untuk mempelajari siapa yang melakukan tindakan di AWS. Administrator Anda mungkin mengharuskan Anda menentukan identitas sumber atau nama sesi peran saat Anda mengambil peran tersebut. Untuk informasi selengkapnya, silakan lihat sts:SourceIdentity dan sts:RoleSessionName.

Untuk beralih ke peran produksi (AWS CLI)
  1. Jika Anda belum pernah menggunakan AWS CLI, maka Anda harus terlebih dahulu mengkonfigurasi CLI profil default Anda. Buka prompt perintah dan atur AWS CLI instalasi untuk menggunakan kunci akses dari IAM pengguna Anda atau dari peran federasi Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi AWS Command Line Interfacedi AWS Command Line Interface Panduan Pengguna.

    Jalankan perintah aws configure sebagai berikut:

    aws configure

    Saat diminta, berikan informasi berikut:

    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-2 Default output format [None]: json
  2. Buat profil baru untuk peran dalam .aws/config file dalam Unix atau Linux, atau C:\Users\USERNAME\.aws\config file dalam Windows. Contoh berikut membuat sebuah profil bernama prodaccess yang beralih ke peran ProductionAccessRole dalam akun 123456789012. Anda mendapatkan peran ARN dari administrator akun yang membuat peran tersebut. Ketika profil ini dipanggil, AWS CLI menggunakan kredensi source_profile untuk meminta kredensional untuk peran tersebut. Oleh karena itu, identitas direferensikan karena source_profile harus memiliki izin sts:AssumeRole untuk peran yang ditentukan dalam role_arn.

    [profile prodaccess] role_arn = arn:aws:iam::123456789012:role/ProductionAccessRole source_profile = default
  3. Setelah Anda membuat profil baru, apa saja AWS CLI perintah yang menentukan parameter --profile prodaccess berjalan di bawah izin yang dilampirkan ke IAM peran ProductionAccessRole bukan pengguna default.

    aws iam list-users --profile prodaccess

    Perintah ini berfungsi jika izin yang ditetapkan untuk ProductionAccessRole mengaktifkan daftar pengguna di saat ini AWS akun.

  4. Untuk kembali ke izin yang diberikan oleh kredensial asli Anda, jalankan perintah tanpa parameter --profile. Bagian AWS CLI kembali menggunakan kredensi di profil default Anda, yang Anda konfigurasikan. Tahap 1

Untuk informasi selengkapnya, lihat Mengasumsikan Peran dalam AWS Command Line Interface Panduan Pengguna.

Skenario contoh: Menginzinkan peran profil instans untuk beralih ke peran dalam akun lain

Bayangkan Anda menggunakan dua Akun AWS, dan Anda ingin mengizinkan aplikasi yang berjalan pada EC2 instance Amazon untuk dijalankan AWS CLIperintah di kedua akun. Asumsikan bahwa EC2 instance ada di akun111111111111. Instance tersebut menyertakan peran profil abcd instance yang memungkinkan aplikasi melakukan tugas Amazon S3 hanya-baca di bucket dalam akun amzn-s3-demo-bucket1 yang sama. 111111111111 Namun, aplikasi tersebut juga harus diizinkan untuk mengambil peran lintas akun efgh untuk melakukan tugas di akun 222222222222. Untuk melakukan ini, peran profil abcd EC2 instance harus memiliki kebijakan izin berikut:

Kebijakan izin peran akun 1111111111 abcd

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "AllowIPToAssumeCrossAccountRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/efgh" } ] }

Anggap bahwa efgh peran lintas akun memungkinkan tugas Amazon S3 hanya baca di bucket amzn-s3-demo-bucket2 dengan akun 222222222222 yang sama. Untuk melakukannya, peran lintas akun efgh harus memiliki kebijakan izin berikut:

Kebijakan izin peran akun 2222222222 efgh

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket2/*", "arn:aws:s3:::amzn-s3-demo-bucket2" ] } ] }

Peran efgh harus memungkinkan peran profil instans abcd untuk mengasumsikannya. Untuk melakukannya, peran efgh harus memiliki kebijakan kepercayaan berikut:

Akun 222222222222 kebijakan kepercayaan peran efgh

{ "Version": "2012-10-17", "Statement": [ { "Sid": "efghTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"} } ] }

Untuk kemudian berlari AWS CLI perintah di akun222222222222, Anda harus memperbarui file CLI konfigurasi. Identifikasi efgh peran sebagai “profil” dan peran profil abcd EC2 instance sebagai “sumber kredensi” di AWS CLI file konfigurasi. Kemudian CLI perintah Anda dijalankan dengan izin efgh peran, bukan abcd peran asli.

catatan

Untuk tujuan keamanan, Anda dapat menggunakan AWS CloudTrail untuk mengaudit penggunaan peran dalam akun. Untuk membedakan antara sesi peran ketika peran digunakan oleh prinsipal yang berbeda dalam CloudTrail log, Anda dapat menggunakan nama sesi peran. Saat AWS CLI mengasumsikan peran atas nama pengguna seperti yang dijelaskan dalam topik ini, nama sesi peran secara otomatis dibuat sebagaiAWS-CLI-session-nnnnnnnn. Di sini nnnnnnnn adalah bilangan bulat yang mewakili waktu dalam waktu epoch Unix (jumlah detik sejak tengah malam UTC pada tanggal 1 Januari 1970). Untuk informasi selengkapnya, lihat Referensi CloudTrail Acara di AWS CloudTrail Panduan Pengguna.

Untuk mengizinkan peran profil EC2 instance beralih ke peran lintas akun (AWS CLI)
  1. Anda tidak perlu mengkonfigurasi CLI profil default. Sebagai gantinya, Anda dapat memuat kredensional dari metadata profil EC2 instance. Buat profil baru untuk peran dalam file .aws/config. Contoh berikut membuat profil instancecrossaccount yang beralih ke peran efgh dalam akun 222222222222. Ketika profil ini dipanggil, AWS CLI menggunakan kredensi metadata profil EC2 instance untuk meminta kredensi peran tersebut. Karena itu, peran profil EC2 instance harus memiliki sts:AssumeRole izin untuk peran yang ditentukan dalam. role_arn

    [profile instancecrossaccount] role_arn = arn:aws:iam::222222222222:role/efgh credential_source = Ec2InstanceMetadata
  2. Setelah Anda membuat profil baru, apa saja AWS CLI perintah yang menentukan parameter --profile instancecrossaccount berjalan di bawah izin yang dilampirkan ke efgh peran dalam akun. 222222222222

    aws s3 ls amzn-s3-demo-bucket2 --profile instancecrossaccount

    Perintah ini berfungsi jika izin yang ditetapkan untuk efgh peran memungkinkan daftar pengguna di saat ini Akun AWS.

  3. Untuk kembali ke izin profil EC2 instans asli di akun111111111111, jalankan CLI perintah tanpa --profile parameter.

Untuk informasi selengkapnya, lihat Mengasumsikan Peran dalam AWS Command Line Interface Panduan Pengguna.