Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Asumsikan IAM peran
Menggunakan IAM peran untuk kredenal variabel EC2 instans Amazon
Jika Anda menjalankan aplikasi di EC2 instans Amazon, cara yang lebih disukai untuk memberikan kredensi untuk melakukan panggilan AWS adalah dengan menggunakan IAMperan untuk mendapatkan kredenal keamanan sementara.
Ketika Anda menggunakan IAM peran, Anda tidak perlu khawatir tentang manajemen kredensi dari aplikasi Anda. Mereka mengizinkan instance untuk “mengambil” peran dengan mengambil kredensi sementara dari server metadata EC2 instans Amazon.
Kredensial sementara, sering disebut sebagai kredensial profil instance, memungkinkan akses ke tindakan dan sumber daya yang diizinkan oleh kebijakan peran. Amazon EC2 menangani semua kerja keras untuk mengautentikasi instans secara aman ke IAM layanan untuk mengambil peran, dan menyegarkan kredenal peran yang diambil secara berkala. Ini membuat aplikasi Anda aman dengan hampir tidak ada pekerjaan di pihak Anda. Untuk daftar layanan yang menerima kredensi keamanan sementara, lihat AWS layanan yang berfungsi IAM di IAMPanduan Pengguna.
catatan
Untuk menghindari menekan layanan metadata setiap saat, Anda dapat meneruskan instance Aws\CacheInterface
in sebagai 'credentials'
opsi ke konstruktor klien. Ini memungkinkan SDK penggunaan kredenal profil instance cache sebagai gantinya. Untuk detailnya, lihat Konfigurasi untuk AWS SDK for PHP
Versi 3.
Untuk informasi selengkapnya tentang mengembangkan EC2 aplikasi Amazon menggunakanSDKs, lihat Menggunakan IAM peran untuk EC2 instans Amazon di Panduan Referensi Alat AWS SDKs dan Alat.
Membuat dan menetapkan IAM peran ke instans Amazon EC2
-
Buat IAM klien.
Impor
require 'vendor/autoload.php'; use Aws\Iam\IamClient;
Kode Sampel
$client = new IamClient([ 'region' => 'us-west-2', 'version' => '2010-05-08' ]);
-
Buat IAM peran dengan izin untuk tindakan dan sumber daya yang akan Anda gunakan.
Kode Sampel
$result = $client->createRole([ 'AssumeRolePolicyDocument' => 'IAM JSON Policy', // REQUIRED 'Description' => 'Description of Role', 'RoleName' => 'RoleName', // REQUIRED ]);
-
Buat profil IAM instance dan simpan Amazon Resource Name (ARN) dari hasilnya.
catatan
Jika Anda menggunakan IAM konsol alih-alih AWS SDK for PHP, konsol akan membuat profil instance secara otomatis dan memberinya nama yang sama dengan peran yang sesuai dengannya.
Kode Sampel
$IPN = 'InstanceProfileName'; $result = $client->createInstanceProfile([ 'InstanceProfileName' => $IPN , ]); $ARN = $result['Arn']; $InstanceID = $result['InstanceProfileId'];
-
Buat EC2 klien Amazon.
Impor
require 'vendor/autoload.php'; use Aws\Ec2\Ec2Client;
Kode Sampel
$ec2Client = new Ec2Client([ 'region' => 'us-west-2', 'version' => '2016-11-15', ]);
-
Tambahkan profil instance ke instans Amazon EC2 yang sedang berjalan atau dihentikan. Gunakan nama profil instance IAM peran Anda.
Kode Sampel
$result = $ec2Client->associateIamInstanceProfile([ 'IamInstanceProfile' => [ 'Arn' => $ARN, 'Name' => $IPN, ], 'InstanceId' => $InstanceID ]);
Untuk informasi selengkapnya, lihat IAMPeran untuk Amazon EC2 di Panduan EC2 Pengguna Amazon.
Menggunakan IAM peran untuk ECS tugas Amazon
Tugas di Amazon Elastic Container Service (AmazonECS) dapat IAM berperan untuk melakukan AWS API panggilan. Ini adalah strategi untuk mengelola kredensional untuk aplikasi Anda untuk digunakan, mirip dengan cara profil EC2 instans Amazon memberikan kredensional ke instans Amazon. EC2
Alih-alih membuat dan mendistribusikan AWS kredensi jangka panjang ke container atau menggunakan peran EC2 instans Amazon, Anda dapat mengaitkan IAM peran yang menggunakan kredensial sementara dengan definisi atau operasi tugasECS. RunTask
API
Untuk informasi selengkapnya tentang penggunaan IAM peran yang dapat diasumsikan oleh tugas container, lihat topik IAMperan Tugas di Panduan ECS Pengembang Amazon. Untuk contoh penggunaan IAM peran tugas dalam bentuk definisi tugas taskRoleArn
dalam, lihat Contoh definisi tugas juga di Panduan ECS Pengembang Amazon.
Dengan asumsi IAM peran lain Akun AWS
Ketika Anda bekerja di Akun AWS (Akun A) dan ingin mengambil peran di akun lain (Akun B), Anda harus terlebih dahulu membuat IAM peran di Akun B. Peran ini memungkinkan entitas di akun Anda (Akun A) untuk melakukan tindakan tertentu di Akun B. Untuk informasi selengkapnya tentang akses lintas akun, lihat Tutorial: Mendelegasikan Akses di Seluruh AWS Akun Menggunakan IAM Peran.
Setelah Anda membuat peran di Akun B, catat Peran tersebutARN. Anda akan menggunakan ini ARN ketika Anda mengambil peran dari Akun A. Anda mengambil peran menggunakan AWS kredensi yang terkait dengan entitas Anda di Akun A.
Buat AWS STS klien dengan kredensi untuk Anda. Akun AWS Berikut ini, kami menggunakan profil kredensial, tetapi Anda dapat menggunakan metode apa pun. Dengan AWS STS klien yang baru dibuat, panggil assume-role dan berikan kustom. sessionName Ambil kredensi sementara baru dari hasilnya. Kredenal bertahan satu jam secara default.
Kode Sampel
$stsClient = new Aws\Sts\StsClient([ 'profile' => 'default', 'region' => 'us-east-2', 'version' => '2011-06-15' ]); $ARN = "arn:aws:iam::123456789012:role/xaccounts3access"; $sessionName = "s3-access-example"; $result = $stsClient->AssumeRole([ 'RoleArn' => $ARN, 'RoleSessionName' => $sessionName, ]); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => [ 'key' => $result['Credentials']['AccessKeyId'], 'secret' => $result['Credentials']['SecretAccessKey'], 'token' => $result['Credentials']['SessionToken'] ] ]);
Untuk informasi selengkapnya, lihat Menggunakan IAM Peran atau AssumeRoledi AWS SDK for PHP API Referensi.
Menggunakan IAM peran dengan identitas web
Federasi Identitas Web memungkinkan pelanggan untuk menggunakan penyedia identitas pihak ketiga untuk otentikasi saat mengakses sumber daya. AWS Sebelum Anda dapat mengambil peran dengan identitas web, Anda harus membuat IAM peran dan mengkonfigurasi penyedia identitas web (iDP). Untuk informasi selengkapnya, lihat Membuat Peran untuk Identitas Web atau Federasi OpenID Connect (Konsol).
Setelah membuat penyedia identitas dan membuat peran untuk identitas web Anda, gunakan AWS STS klien untuk mengautentikasi pengguna. Berikan webIdentityToken dan ProviderId untuk identitas Anda, dan Peran ARN untuk IAM peran dengan izin untuk pengguna.
Kode Sampel
$stsClient = new Aws\Sts\StsClient([ 'profile' => 'default', 'region' => 'us-east-2', 'version' => '2011-06-15' ]); $ARN = "arn:aws:iam::123456789012:role/xaccounts3access"; $sessionName = "s3-access-example"; $duration = 3600; $result = $stsClient->AssumeRoleWithWebIdentity([ 'WebIdentityToken' => "FACEBOOK_ACCESS_TOKEN", 'ProviderId' => "graph.facebook.com", 'RoleArn' => $ARN, 'RoleSessionName' => $sessionName, ]); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => [ 'key' => $result['Credentials']['AccessKeyId'], 'secret' => $result['Credentials']['SecretAccessKey'], 'token' => $result['Credentials']['SessionToken'] ] ]);
Untuk informasi selengkapnya, lihat AssumeRoleWithWebIdentity—Federasi Melalui Penyedia Identitas Berbasis Web atau AssumeRoleWithWebIdentitydi Referensi. AWS SDK for PHP API
Asumsikan peran dengan profil
Tentukan profil di ~/.aws/credentials
Anda dapat mengonfigurasi AWS SDK for PHP untuk menggunakan IAM peran dengan menentukan profil di~/.aws/credentials
.
Buat profil baru dengan role_arn
pengaturan untuk peran yang ingin Anda asumsikan. Sertakan juga source_profile
pengaturan untuk profil lain dengan kredensional yang memiliki izin untuk mengambil peran. IAM Untuk detail selengkapnya tentang setelan konfigurasi ini, lihat Mengasumsikan kredensi peran di Panduan Referensi Alat AWS SDKs dan Alat.
Misalnya, dalam hal berikut~/.aws/credentials
, project1
profil menetapkan role_arn
dan menentukan default
profil sebagai sumber kredensi untuk memverifikasi bahwa entitas yang terkait dengannya dapat mengambil peran tersebut.
[project1] role_arn = arn:aws:iam::123456789012:role/testing source_profile = default role_session_name = OPTIONAL_SESSION_NAME [default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY aws_session_token= YOUR_AWS_SESSION_TOKEN
Jika Anda menyetel variabel AWS_PROFILE
lingkungan, atau Anda menggunakan profile
parameter saat membuat instance klien layanan, peran yang ditentukan akan project1
diasumsikan, menggunakan default
profil sebagai kredenal sumber.
Cuplikan berikut menunjukkan penggunaan profile
parameter dalam konstruktor. S3Client
S3Client
Akan memiliki izin yang terkait dengan peran yang terkait dengan project1
profil.
$s3 = new Aws\S3\S3Client([ 'region' => 'us-east-1', 'version' => '2006-03-01', 'profile' => 'project1' ]);
Tentukan profil di ~/.aws/config
~/.aws/config
File ini juga dapat berisi profil yang ingin Anda asumsikan. Jika Anda mengatur variabel lingkunganAWS_SDK_LOAD_NONDEFAULT_CONFIG
, SDK untuk PHP memuat profil dari config
file. Ketika AWS_SDK_LOAD_NONDEFAULT_CONFIG
diatur, SDK memuat profil dari keduanya ~/.aws/config
dan~/.aws/credentials
. Profil dari ~/.aws/credentials
dimuat terakhir dan diutamakan daripada profil dari ~/.aws/config
dengan nama yang sama. Profil dari salah satu lokasi dapat berfungsi sebagai source_profile
atau profil yang akan diasumsikan.
Contoh berikut menggunakan project1
profil yang ditentukan dalam config
file dan default
profil dalam credentials
file. AWS_SDK_LOAD_NONDEFAULT_CONFIG
Ini juga diatur.
# Profile in ~/.aws/config. [profile project1] role_arn = arn:aws:iam::123456789012:role/testing source_profile = default role_session_name = OPTIONAL_SESSION_NAME
# Profile in ~/.aws/credentials. [default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY aws_session_token= YOUR_AWS_SESSION_TOKEN
Saat S3Client
konstruktor berjalan yang ditampilkan cuplikan berikut, peran yang ditentukan dalam project1
profil akan diasumsikan menggunakan kredenal yang terkait dengan profil. default
$s3 = new Aws\S3\S3Client([ 'region' => 'us-east-1', 'version' => '2006-03-01', 'profile' => 'project1' ]);