Cara menggunakan ID eksternal saat memberikan akses ke AWS sumber daya Anda kepada pihak ketiga - 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.

Cara menggunakan ID eksternal saat memberikan akses ke AWS sumber daya Anda kepada pihak ketiga

Terkadang, Anda perlu memberikan akses pihak ketiga ke AWS sumber daya Anda (akses delegasi). Satu aspek penting dari skenario ini adalah ID Eksternal, informasi opsional yang dapat Anda gunakan dalam kebijakan kepercayaan peran IAM untuk menentukan siapa yang dapat mengasumsikan peran tersebut.

penting

AWS tidak memperlakukan ID eksternal sebagai rahasia. Setelah Anda membuat rahasia seperti access key pair atau password di AWS, Anda tidak dapat melihatnya lagi. ID eksternal untuk peran dapat dilihat oleh siapa pun yang memiliki izin untuk melihat peran tersebut.

Dalam lingkungan multi-tenant di mana Anda mendukung beberapa pelanggan dengan AWS akun yang berbeda, kami sarankan untuk menggunakan satu ID eksternal per. Akun AWS ID ini harus berupa string acak yang dihasilkan oleh pihak ketiga.

Untuk mewajibkan pihak ketiga untuk memberikan ID eksternal saat mengasumsikan peran, perbarui kebijakan kepercayaan peran tersebut dengan ID eksternal pilihan Anda.

Untuk memberikan ID eksternal saat Anda mengambil peran, gunakan AWS CLI atau AWS API untuk mengambil peran tersebut. Untuk informasi selengkapnya, lihat operasi STS AssumeRoleAPI, atau operasi CLI peran STS.

Misalnya, katakanlah Anda memutuskan untuk menyewa perusahaan pihak ketiga bernama Example Corp untuk memantau Anda Akun AWS dan membantu mengoptimalkan biaya. Untuk melacak pengeluaran harian Anda, Example Corp perlu mengakses AWS sumber daya Anda. Example Corp juga memantau banyak akun AWS lain untuk nasabah lain.

Jangan berikan Example Corp akses ke pengguna IAM dan kredensialnya jangka panjangnya di akun Anda. AWS Sebaliknya, gunakan peran IAM dan kredensial keamanan sementaranya. Peran IAM menyediakan mekanisme untuk memungkinkan pihak ketiga mengakses AWS sumber daya Anda tanpa perlu berbagi kredensi jangka panjang (seperti kunci akses pengguna IAM).

Anda dapat menggunakan peran IAM untuk membangun hubungan tepercaya antara akun Anda Akun AWS dan akun Example Corp. Setelah hubungan ini terjalin, anggota akun Example Corp dapat memanggil AWS Security Token Service AssumeRoleAPI untuk mendapatkan kredenal keamanan sementara. Anggota Example Corp kemudian dapat menggunakan kredensialnya untuk mengakses AWS sumber daya di akun Anda.

catatan

Untuk informasi selengkapnya tentang operasi AWS API lainnya yang dapat Anda hubungi untuk mendapatkan kredenal keamanan sementara, lihat. AssumeRole Meminta kredensial keamanan sementara

Berikut rincian skenario ini secara lebih detail:

  1. Anda merekrut Example Corp, sehingga mereka membuat pengenal pelanggan unik untuk Anda. Mereka memberi Anda ID pelanggan unik ini dan Akun AWS nomor mereka. Anda memerlukan informasi ini untuk membuat peran IAM pada langkah berikutnya.

    catatan

    Contoh Corp dapat menggunakan nilai string apa pun yang mereka inginkan untuk ExternalId, asalkan unik untuk setiap pelanggan. Itu dapat berupa nomor akun pelanggan atau bahkan string karakter acak, selama tidak ada dua pelanggan yang memiliki nilai yang sama. Itu tidak dimaksudkan untuk menjadi 'rahasia'. Contoh Corp harus memberikan ExternalId nilai kepada setiap pelanggan. Yang penting adalah bahwa itu harus dihasilkan oleh Example Corp dan bukan pelanggan mereka untuk memastikan setiap ID eksternal unik.

  2. Anda masuk AWS dan membuat peran IAM yang memberi Example Corp akses ke sumber daya Anda. Seperti peran IAM lainnya, peran ini memiliki dua kebijakan, kebijakan izin, dan kebijakan kepercayaan. Kebijakan kepercayaan peran menentukan siapa yang dapat mengasumsikan peran tersebut. Dalam skenario sampel kami, kebijakan menentukan Akun AWS jumlah Example Corp sebagai. Principal Hal ini memungkinkan identitas dari akun tersebut untuk mengambil peran. Selain itu, Anda menambahkan elemen Condition pada kebijakan kepercayaan. Ini Condition menguji ExternalId kunci konteks untuk memastikan bahwa itu sesuai dengan ID pelanggan unik dari Example Corp. Misalnya:

    "Principal": {"AWS": "Example Corp's Akun AWS ID"}, "Condition": {"StringEquals": {"sts:ExternalId": "Unique ID Assigned by Example Corp"}}
  3. Kebijakan izin untuk peran menentukan apa saja yang diperbolehkan oleh peran untuk dilakukan seseorang. Misalnya, Anda dapat menentukan bahwa peran tersebut dapat memperbolehkan seseorang untuk mengelola hanya sumber daya Amazon EC2 Amazon dan Amazon RDS Anda tetapi tidak dengan pengguna atau grup IAM Anda. Dalam skenario sampel kami, Anda menggunakan kebijakan izin untuk memberikan akses hanya-baca kepada Example Corp ke semua sumber daya dalam akun Anda.

  4. Setelah Anda membuat peran tersebut, Anda menyediakan Amazon Resource Name (ARN) dari peran Anda kepada Example Corp.

  5. Ketika Example Corp perlu mengakses AWS sumber daya Anda, seseorang dari perusahaan memanggil AWS sts:AssumeRole API. Panggilan tersebut mencakup ARN dari peran yang akan diasumsikan dan ExternalId parameter yang sesuai dengan ID pelanggan mereka.

Jika permintaan berasal dari seseorang yang menggunakan Example Corp Akun AWS, dan jika peran ARN dan ID eksternal sudah benar, permintaan berhasil. Ini kemudian memberikan kredensi keamanan sementara yang dapat digunakan Example Corp untuk mengakses AWS sumber daya yang diizinkan oleh peran Anda.

Dengan kata lain, ketika kebijakan peran mencakup ID eksternal, siapa pun yang ingin mengasumsikan peran tersebut haruslah prinsipal dalam peran tersebut dan harus menyertakan ID eksternal yang benar.

Mengapa menggunakan ID eksternal?

Dalam istilah abstrak, ID eksternal memperbolehkan pengguna yang mengasumsikan peran untuk menegaskan keadaan di mana mereka beroperasi. Itu ini juga memberikan cara bagi pemilik akun untuk mengizinkan peran tersebut untuk diasumsikan hanya dalam keadaan tertentu. Fungsi utama dari ID eksternal adalah untuk mengatasi dan mencegahMasalah confused deputy.

Kapan saya harus menggunakan ID eksternal?

Gunakan ID eksternal dalam situasi-situasi berikut:

  • Anda adalah Akun AWS pemilik dan Anda telah mengonfigurasi peran untuk pihak ketiga yang mengakses orang lain Akun AWS selain milik Anda. Anda harus meminta ID eksternal dari pihak ketiga yang disertakannya, ketika mereka mengasumsikan peran Anda. Kemudian Anda memeriksa ID eksternal tersebut dalam kebijakan kepercayaan peran Anda. Melakukannya memastikan bahwa pihak eksternal dapat mengasumsikan peran Anda hanya ketika bertindak atas nama Anda.

  • Anda berada dalam posisi mengasumsikan peran atas nama pelanggan yang berbeda seperti Example Corp dalam skenario kami sebelumnya. Anda harus menetapkan ID eksternal unik untuk setiap pelanggan dan menginstruksikan mereka untuk menambahkan ID eksternal ke kebijakan kepercayaan peran mereka. Kemudian Anda harus memastikan bahwa Anda selalu menyertakan ID eksternal yang benar dalam permintaan Anda untuk mengasumsikan peran.

    Anda mungkin sudah memiliki pengidentifikasi unik untuk setiap pelanggan Anda, dan ID unik ini cukup untuk digunakan sebagai ID eksternal. ID eksternal bukan merupakan nilai khusus yang Anda perlukan untuk membuat secara eksplisit, atau melacak secara terpisah, hanya untuk tujuan ini.

    Anda harus selalu menentukan ID eksternal dalam AssumeRole panggilan API Anda. Selain saat pelanggan memberi Anda ARN peran, uji apakah Anda dapat mengasumsikan peran tersebut baik dengan atau tanpa ID eksternal yang benar. Jika Anda dapat mengasumsikan peran tersebut tanpa ID eksternal yang benar, jangan menyimpan ARN peran pelanggan dalam sistem Anda. Tunggu hingga pelanggan Anda memperbarui kebijakan kepercayaan peran untuk meminta ID eksternal yang benar. Dengan cara ini, Anda membantu pelanggan Anda untuk melakukan hal yang benar, yang membantu Anda semua melindungi diri dari masalah confused deputy.