Topik ini menjelaskan cara mengonfigurasi kredensial akses agar Anda dapat menggunakan SDK secara aman dan efisien dalam pengembangan.
Gunakan pasangan AccessKey
Pasangan AccessKey dari akun Alibaba Cloud memiliki akses penuh ke semua sumber daya dalam akun tersebut. Kebocoran pasangan AccessKey menimbulkan ancaman serius terhadap sumber daya dalam akun Alibaba Cloud. Kami merekomendasikan agar Anda menggunakan pasangan AccessKey dari Pengguna Resource Access Management (RAM) dan secara berkala memutar pasangan AccessKey. Untuk informasi tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat Pasangan AccessKey.
Kode contoh berikut menunjukkan cara membuat klien default bernama default yang menggunakan pasangan AccessKey untuk otentikasi.
<?php
use AlibabaCloud\Client\AlibabaCloud;
AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'))->asDefaultClient();
AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'))->name('default');Gunakan token STS
Untuk memastikan keamanan bisnis Anda, Anda dapat mengajukan kredensial keamanan sementara (TSC) dari Security Token Service (STS) untuk membuat klien sementara.
<?php
use AlibabaCloud\Client\AlibabaCloud;
AlibabaCloud::stsClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), getenv('ALIBABA_CLOUD_SECURITY_TOKEN'))->name('sts');Gunakan peran RAM
Anda dapat menentukan Nama Sumber Daya Alibaba Cloud (ARN) dari Peran RAM untuk sebuah klien. Kemudian, klien dapat secara otomatis mengajukan dan memelihara token STS sebelum memulai permintaan API. Dengan cara ini, klien menjadi klien STS dengan periode validitas tertentu. Anda juga dapat secara manual mengajukan token STS dan membuat Klien STS.
Kode contoh berikut menunjukkan cara membuat klien bernama ramRoleArnClient yang menggunakan peran RAM untuk otentikasi.
<?php
use AlibabaCloud\Client\AlibabaCloud;
AlibabaCloud::ramRoleArnClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), 'roleArn', 'roleSessionName')
->name('ramRoleArnClient');Gunakan peran RAM dari instance ECS
Sebuah klien dapat menggunakan server metadata Elastic Compute Service (ECS) untuk mendapatkan token STS dengan menggunakan peran RAM yang dilampirkan pada instance ECS. Token STS kemudian digunakan untuk menginisialisasi klien.
Kode contoh berikut menunjukkan cara membuat klien bernama ecsRamRoleClient yang menggunakan peran RAM yang dilampirkan pada instance ECS untuk otentikasi.
<?php
use AlibabaCloud\Client\AlibabaCloud;
AlibabaCloud::ecsRamRoleClient('roleName')->name('ecsRamRoleClient');Gunakan token bearer
Hanya Cloud Call Center (CCC) yang mengizinkan Anda menggunakan token bearer untuk menginisialisasi klien. Anda dapat secara manual mengajukan dan memelihara token bearer.
Kode contoh berikut menunjukkan cara membuat klien bernama bearerTokenClient yang menggunakan token bearer untuk otentikasi.
<?php
use AlibabaCloud\Client\AlibabaCloud;
AlibabaCloud::bearerTokenClient('bearerToken')->name('bearerTokenClient');Gunakan rantai penyedia kredensial default
Rantai penyedia kredensial default mencari dan menggunakan kredensial dalam urutan berikut:
1. Gunakan kredensial dari variabel lingkungan
Rantai penyedia kredensial mencari kredensial dari variabel lingkungan. Jika Anda mendefinisikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET serta menentukan nilai bukan nol untuk variabel tersebut, rantai penyedia kredensial akan menggunakan variabel lingkungan untuk membuat klien default. Jika klien yang ditentukan dalam permintaan bukan klien default, rantai penyedia kredensial akan mencari dan memuat klien dari file konfigurasi.
2. Gunakan file konfigurasi
Jika file kredensial default ada di direktori home, rantai penyedia kredensial secara otomatis membuat klien berdasarkan tipe dan nama yang ditentukan. Jalur file kredensial default adalah ~/.alibabacloud/credentials. Di sistem operasi Windows, jalurnya adalah C:\Users\USER_NAME\.alibabacloud\credentials. Jika file kredensial default ada tetapi sistem gagal mem-parsing file tersebut, pengecualian akan dilemparkan. Nama klien tidak peka huruf besar-kecil. Jika dua klien memiliki nama yang sama, klien terbaru akan menimpa klien yang dibuat sebelumnya. Anda juga dapat menjalankan perintah AlibabaCloud::load('/data/credentials', 'vfs://AlibabaCloud/credentials', ...); untuk memuat file konfigurasi tertentu secara manual. File konfigurasi disimpan di luar proyek dan tidak dapat dikomit ke proyek publik. Oleh karena itu, file konfigurasi dapat digunakan bersama oleh proyek dan alat yang berbeda. Di sistem operasi Windows, Anda dapat merujuk direktori home menggunakan variabel lingkungan %UserProfile%. Di sistem Unix-like, Anda dapat menggunakan variabel lingkungan $HOME atau tilde (~). Anda dapat mengubah direktori file kredensial default dengan mendefinisikan variabel lingkungan ALIBABA_CLOUD_CREDENTIALS_FILE.
[default] # Klien default.
enable = true # Aktifkan klien. Secara default, klien diaktifkan jika parameter ini tidak ditentukan.
type = access_key # Otentikasi didasarkan pada pasangan AccessKey.
access_key_id = foo # Key
access_key_secret = bar # Secret
region_id = cn-hangzhou # Opsional. ID wilayah.
debug = true # Opsional. Menentukan apakah mode debug diaktifkan. Informasi rinci ditampilkan di CLI dalam mode debug.
timeout = 0.2 # Opsional. Periode timeout. Jika nilainya lebih besar dari 1, unitnya adalah detik. Jika nilainya lebih kecil dari 1, nilainya dikalikan 1.000 dan unitnya adalah milidetik.
connect_Timeout = 0.03 # Opsional. Periode timeout untuk permintaan koneksi. Jika nilainya lebih besar dari 1, unitnya adalah detik. Jika nilainya lebih kecil dari 1, nilainya dikalikan 1.000 dan unitnya adalah milidetik.
cert_file = /path/server.pem # Opsional. File sertifikat.
cert_password = password # Opsional. Kata sandi sertifikat.
proxy = tcp://localhost:8125 # Opsional. Proxy umum.
proxy_http = tcp://localhost:8125 # Opsional. Proxy HTTP.
proxy_https = tcp://localhost:9124 # Opsional. Proxy HTTPS.
proxy_no = example.com # Opsional. Nama domain yang diabaikan oleh proxy.
[client1] # Klien bernama client1.
type = ecs_ram_role # Otentikasi didasarkan pada kredensial EcsRamRole.
role_name = EcsRamRoleTest # Nama Role
#..................................# Parameter lainnya sama dengan klien default.
[client2] # Klien bernama client2.
enable = false # Klien dinonaktifkan.
type = ram_role_arn # Otentikasi didasarkan pada kredensial RamRoleArn.
access_key_id = foo
access_key_secret = bar
role_arn = role_arn
role_session_name = session_name
#..................................# Parameter lainnya sama dengan klien default.
[client3] # Klien bernama client3.
type = rsa_key_pair # Otentikasi didasarkan pada pasangan kunci Rivest-Shamir-Adleman (RSA).
public_key_id = publicKeyId # ID Public Key
private_key_file = /your/pk.pem # File kunci privat.
#..................................# Parameter lainnya sama dengan klien default.3. Gunakan peran RAM instance
Jika Anda mendefinisikan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA dan menentukan nilai bukan nol untuk variabel tersebut, rantai penyedia kredensial menggunakan nilai variabel sebagai nama peran RAM dan mengirim permintaan ke http://100.100.100.200/latest/meta-data/ram/security-credentials/ untuk mendapatkan kredensial keamanan sementara. Kemudian, kredensial keamanan sementara digunakan untuk membuat klien default.
Rantai penyedia kredensial kustom
Anda dapat menggunakan rantai penyedia kredensial kustom untuk mendapatkan kredensial, atau menulis closure untuk melewati penyedia.
<?php
use AlibabaCloud\Client\Credentials\Providers\CredentialsProvider;
CredentialsProvider::chain(
CredentialsProvider::ini(),
CredentialsProvider::env(),
CredentialsProvider::instance()
);