Kebocoran kredensial akses dapat membahayakan sumber daya cloud dan operasi bisnis. Amankan kredensial Anda dengan memilih metode autentikasi yang tepat sesuai skenario penerapannya.
Apa itu kredensial akses?
Kredensial akses digunakan untuk memverifikasi identitas Anda saat mengakses Alibaba Cloud melalui alat pengembangan seperti API, CLI, SDK, atau Terraform.
Pasangan AccessKey: Terdiri dari ID AccessKey dan Rahasia AccessKey. Ini merupakan kredensial permanen untuk Akun Alibaba Cloud dan Pengguna RAM. Buat Pasangan AccessKey.
Token STS: Token Layanan Keamanan (STS) adalah kredensial temporary yang dikeluarkan untuk Peran RAM dengan periode validitas dan cakupan izin tertentu. Apa itu STS?.
Penyebab umum kebocoran kredensial
Pasangan AccessKey yang di-hardcode dalam kode aplikasi dapat diakses oleh siapa pun yang memiliki akses baca ke repositori dan menjadi publik jika kode tersebut didorong ke komunitas open source atau layanan hosting kode.
Pasangan AccessKey yang disematkan dalam kode sisi klien dapat diekstraksi melalui dekompilasi aplikasi.
Dokumentasi teknis atau materi bersama yang berisi informasi Pasangan AccessKey.
Kode contoh dalam dokumentasi produk yang berisi informasi Pasangan AccessKey.
Tanggapan API tanpa kontrol izin yang tepat mengembalikan informasi kredensial akses.
Metode aman untuk menggunakan kredensial akses
Minimalkan durasi dan cakupan eksposur kredensial. Pilih metode aman berdasarkan skenario penerapan Anda.
Metode | Skenario |
Aplikasi yang diterapkan di kluster ACK. RRSA mengisolasi izin pada level peran RAM sehingga setiap aplikasi mengasumsikan peran unik. | |
Aplikasi yang diterapkan pada instans ECS. Instans tersebut mengasumsikan peran RAM untuk mengakses Alibaba Cloud OpenAPI. | |
Personel pengembangan, operasi, dan produk yang memerlukan kredensial untuk O&M, manajemen, atau debugging. Gunakan SSO berbasis peran untuk mengasumsikan peran RAM dan mendapatkan token STS. | |
Aplikasi yang diterapkan di Function Compute (FC) yang perlu mengakses sumber daya cloud lainnya. Asosiasikan fungsi FC dengan peran RAM untuk menggunakan token STS alih-alih kredensial permanen. | |
Skenario di mana solusi sebelumnya tidak berlaku. Simpan kredensial dalam variabel lingkungan sistem. |
Gunakan RAM Roles for Service Accounts (RRSA)
Prasyarat
Metode ini berlaku untuk layanan cloud yang mendukung RAM.
Versi kluster: Kubernetes 1.22 atau lebih baru, pada kluster ACK yang dikelola (Basic atau Pro), kluster ACK Serverless (Basic atau Pro), atau kluster ACK Edge (Pro saja).
Alibaba Cloud SDK V2.0 digunakan.
SDK kustom untuk produk gerbang yang dikelola sendiri tidak dapat digunakan.
Cara kerja

Cara kerja RRSA
Tanpa RRSA, pod apa pun pada node dapat membaca kredensial peran instans ECS melalui metadata instans dan mewarisi semua izin yang diberikan kepada peran tersebut. Untuk membatasi izin RAM per aplikasi, baik cegah aplikasi mengambil kredensial temporary peran instans melalui metadata instans ECS atau ECI, atau jangan menyambungkan kebijakan izin RAM ke peran instans tersebut.
RRSA menyelesaikan hal ini dengan mengikat peran RAM ke akun layanan Kubernetes. Saat pod dimulai, pod tersebut menerima token OIDC yang dibatasi cakupannya ke akun layanan pod tersebut, memanggil API AssumeRoleWithOIDC, dan menerima token STS yang dibatasi cakupannya ke peran tersebut untuk akses API cloud.
Alur autentikasi:
Injeksi token: Saat pod dimulai, ACK menggunakan proyeksi volume token akun layanan untuk memasang file token OIDC yang dibatasi cakupannya ke akun layanan pod tersebut.
Mengasumsikan peran: Aplikasi memanggil API
AssumeRoleWithOIDCmenggunakan token OIDC ini.Menerima kredensial STS: STS memvalidasi token OIDC terhadap penyedia OIDC yang terdaftar dan mengembalikan kredensial yang dibatasi cakupannya ke peran RAM tersebut.
Mengakses sumber daya: Pod menggunakan kredensial STS berumur pendek untuk mengakses API Alibaba Cloud yang diizinkan.
Token OIDC berumur pendek. Baca token dari file pada setiap permintaan autentikasi — jangan cache. ACK memperbarui token secara otomatis sebelum kedaluwarsa.
Saat RRSA diaktifkan, ACK secara otomatis:
Membuat penerbit OIDC khusus untuk kluster tersebut.
Memperbarui konfigurasi
service-account-issuerkluster, menggabungkan penerbit OIDC baru ke nilai yang sudah ada.Membuat penyedia identitas OIDC (IdP) di akun Anda, bernama
ack-rrsa-<cluster_id>, dikonfigurasi untuk single sign-on (SSO) dengan penerbit OIDC kluster tersebut.
Prosedur
Aktifkan RRSA untuk kluster ACK Anda.
Gunakan RRSA di kluster ACK Anda.
Contoh kode
Alibaba Cloud SDK V2.0 mendukung autentikasi token OIDC RRSA. SDK layanan cloud apa pun yang dibangun di atas V2.0 dan mendukung token STS juga mendukung RRSA.
Bahasa | Versi | Demo |
Go | Alibaba Cloud Credentials for Go 1.2.6 atau lebih baru. Untuk petunjuk, lihat Metode 6: Gunakan OIDCRoleArn. | |
Java | Alibaba Cloud Credentials for Java 0.2.10 atau lebih baru. Untuk petunjuk, lihat Metode 6: OIDC role ARN. | |
Python 3 | Alibaba Cloud Credentials for Python 0.3.1 atau lebih baru. Untuk petunjuk, lihat Kelola kredensial akses. | |
Node.js / TypeScript | Alibaba Cloud Credentials for TypeScript/Node.js 2.2.6 atau lebih baru. Untuk petunjuk, lihat Metode 6: Gunakan OIDCRoleArn. |
Gunakan instance RAM role
Prasyarat
Metode ini berlaku untuk layanan cloud yang mendukung RAM.
Alibaba Cloud SDK V2.0 digunakan.
SDK kustom untuk produk gerbang yang dikelola sendiri tidak dapat digunakan.
Cara kerja
Anda dapat menyambungkan peran Resource Access Management (RAM) instans ke instans Elastic Compute Service (ECS). Kemudian, instans ECS tersebut dapat menggunakan kredensial temporary Layanan Token Keamanan (STS) dari peran RAM instans untuk mengakses API layanan Alibaba Cloud lainnya. Kredensial temporary STS diperbarui secara berkala. Hal ini menjamin keamanan Pasangan AccessKey Anda dan menerapkan kontrol akses serta manajemen izin detail halus menggunakan RAM.

Alur kerja:
Aplikasi mengambil token STS dengan mengakses metadata instans ECS.
Aplikasi menggunakan token STS untuk mengakses sumber daya cloud. Apa itu STS?.
Prosedur
Tetapkan peran RAM ke instans ECS. Peran RAM instans.
Contoh kode
Alibaba Cloud Credentials menyederhanakan penggunaan instance RAM role. Contoh-contoh ini memanggil operasi ECS DescribeRegions dengan instance RAM role.
Bahasa pemrograman | Contoh kode |
Go | |
Java | |
Python | |
PHP | |
Node.js | |
.NET |
Asumsi peran berantai cross-account
Jika aplikasi Anda pada instans ECS perlu mengakses sumber daya di akun Alibaba Cloud lain, Anda dapat menggunakan asumsi peran berantai cross-account untuk mendapatkan akses tanpa menyimpan Pasangan AccessKey.
Cara kerja
Instans ECS pertama-tama mendapatkan kredensial temporary untuk instance RAM role-nya sendiri dari metadata instans. Instans tersebut kemudian menggunakan kredensial ini untuk memanggil sts:AssumeRole guna mengasumsikan peran RAM di akun tujuan dan mendapatkan token STS untuk akun tujuan tersebut. Proses ini disebut asumsi peran berantai.
Prosedur
Di akun tujuan, buat peran RAM. Tetapkan
Principal.RAMdalam kebijakan kepercayaan peran tersebut ke Nama Sumber Daya Alibaba Cloud (ARN) dari instance RAM role di akun sumber, misalnya,acs:ram::<source-account-id>:role/<instance-role-name>. Berikan peran ini izin yang dibutuhkan aplikasi.Pada instance RAM role di akun sumber, sambungkan kebijakan izin yang memberikan izin
sts:AssumeRole. Anda dapat menggunakan kebijakan sistemAliyunSTSAssumeRoleAccess.Pada instans ECS, gunakan tool Alibaba Cloud Credentials untuk melakukan asumsi peran berantai. Tool tersebut pertama-tama mendapatkan kredensial temporary dari instance RAM role dari metadata instans. Tool tersebut kemudian menggunakan kredensial ini untuk memanggil
sts:AssumeRoleguna mengasumsikan peran RAM di akun tujuan dan mendapatkan token STS cross-account.
Token STS untuk pengembangan dan debugging
Skenario
Untuk personel pengembangan, operasi, dan produk yang memerlukan kredensial untuk O&M, manajemen, atau debugging, gunakan SSO berbasis peran untuk mengasumsikan peran RAM dan mendapatkan token STS alih-alih Pasangan AccessKey permanen.
Prosedur
Untuk skenario single-account, kami merekomendasikan Anda mengonfigurasi SSO peran berbasis SAML dalam akun cloud dan menetapkan peran RAM kepada karyawan berdasarkan fungsi pekerjaan mereka. Karyawan kemudian dapat menggunakan tool saml2alibabacloud pada command line untuk mendapatkan token STS setelah melakukan autentikasi dengan penyedia identitas (IdP).
Untuk skenario multi-account, kami merekomendasikan Anda menggunakan CloudSSO untuk mengonfigurasi single sign-on untuk beberapa akun. Setelah dikonfigurasi, karyawan dapat menggunakan CLI untuk login ke CloudSSO dan mengakses sumber daya Alibaba Cloud.
Gunakan token STS di Function Compute
Skenario
Alih-alih meng-hardcode Pasangan AccessKey Pengguna RAM dalam fungsi FC, asosiasikan fungsi tersebut dengan peran RAM. Aplikasi kemudian menggunakan token STS untuk mengakses sumber daya cloud, sehingga menghindari kebocoran kredensial permanen.
Arsitektur solusi
Peran fungsi FC mengelola kredensial temporary pada waktu proses, menghindari eksposur jangka panjang Pasangan AccessKey. Konfigurasikan peran dan izin sekali saja; fungsi akan secara otomatis mendapatkan kredensial temporary.
Administrator membuat peran yang dipercaya oleh Function Compute dan memberikan izin yang diperlukan (1), lalu mengasosiasikan peran tersebut dengan fungsi FC (2). Aplikasi mengambil token STS dari konteks fungsi (3). Selama proses ini, Function Compute memanggil AssumeRole untuk mendapatkan token STS dari RAM/STS (i). Aplikasi menggunakan token STS tersebut untuk memanggil API sumber daya cloud target (4), dan API sumber daya mengembalikan hasil ke aplikasi klien.

Prosedur
Berikan izin Function Compute untuk mengakses layanan Alibaba Cloud lainnya.
Konfigurasikan variabel lingkungan sistem
Prosedur
Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
<ACCESS_KEY_ID>
Contoh kode Alibaba Cloud SDK
Alibaba Cloud SDK membuat kredensial default dari variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dan menggunakannya untuk mengautentikasi permintaan secara otomatis. Contoh-contoh ini memanggil operasi ECS DescribeRegions.
Bahasa pemrograman | Contoh kode |
Go | |
Java | |
Python | |
PHP | |
Node.js | |
.NET |
Contoh kode generik
Jika Anda tidak dapat menggunakan Alibaba Cloud SDK (misalnya, SDK kustom untuk produk gerbang yang dikelola sendiri), muat variabel lingkungan secara langsung. Contoh Java:
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;
public class DemoTest {
public static void main(String[] args) throws Exception{
Config config = new Config();
// Tentukan jenis kredensial yang ingin Anda gunakan.
config.setType("access_key");
// AccessKeyId dari Pengguna RAM Anda.
config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
// AccessKeySecret dari Pengguna RAM Anda.
config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
Client client = new Client(config);
}
}Perbaiki kredensial yang bocor
Kebocoran Pasangan AccessKey: Perbaiki Pasangan AccessKey yang dikompromikan.
Kebocoran token STS: Apa yang harus saya lakukan jika token STS bocor?.
Referensi
Praktik terbaik keamanan cloud terkait: