Kunci API, juga dikenal sebagai Service Credential dalam OpenAPI (ServiceCredential), adalah jenis kredensial yang dikeluarkan oleh Resource Access Management (RAM) untuk mengakses layanan cloud tertentu. Kredensial ini digunakan secara eksklusif untuk melakukan panggilan API ke layanan tersebut. Topik ini menjelaskan Kunci API dan cara mengelola siklus hidupnya.
Saat melakukan panggilan programatik ke OpenAPI layanan cloud tertentu, Anda dapat menggunakan Kunci API untuk autentikasi. Setiap Kunci API terikat pada satu layanan cloud saat dibuat dan hanya dapat digunakan untuk memanggil API layanan tersebut. Desain ini mempersempit cakupan keamanan, sehingga menjadi alternatif yang lebih aman dibandingkan AccessKey.
Fitur utama
Isolasi tingkat layanan: Setiap Kunci API terikat pada satu layanan cloud (ditentukan oleh
ServiceName-nya) saat pembuatan. Kunci ini hanya dapat digunakan untuk memanggil API layanan tersebut dan tidak dapat digunakan untuk panggilan lintas layanan. Anda tidak dapat memperluas cakupannya melalui kebijakan izin.Cakupan izin yang diminimalkan: Izin efektif dari Kunci API merupakan irisan antara izin Pengguna RAM yang terkait dan cakupan layanan cloud yang terikat. Meskipun Pengguna RAM memiliki izin untuk beberapa layanan, Kunci API tetap dibatasi hanya pada layanan yang ditentukan.
Dibatasi hanya untuk Pengguna RAM: Hanya Pengguna RAM yang dapat membuat Kunci API. Akun Alibaba Cloud (akun root) tidak dapat membuatnya. Praktik ini membantu mengurangi potensi dampak kebocoran kredensial.
Konvensi penamaan:
ServiceCredentialadalah istilah yang digunakan dalam OpenAPI dan SDK, sedangkan konsol menggunakan istilah yang lebih ramah pengguna, yaitu API Key. Kedua istilah tersebut merujuk pada resource yang sama.
Kunci API vs. AccessKey
Baik Kunci API maupun AccessKey merupakan kredensial jangka panjang untuk Pengguna RAM. Namun, keduanya berbeda dalam cakupan layanan, metode penerbitan, dan kasus penggunaan.
Fitur | API Key | AccessKey |
Cakupan layanan | Terikat pada satu layanan cloud saat dibuat dan hanya dapat memanggil OpenAPI layanan tersebut. | Tidak dibatasi oleh layanan. Dapat memanggil layanan cloud apa pun yang diizinkan untuk diakses oleh Pengguna RAM. |
Model izin | Izin efektif merupakan irisan antara izin Pengguna RAM dan cakupan layanan cloud yang terikat. | Mewarisi sepenuhnya semua izin yang diberikan kepada Pengguna RAM. |
Identitas yang didukung | Hanya Pengguna RAM yang dapat membuatnya. Akun Alibaba Cloud (akun root) tidak didukung. | Baik Akun Alibaba Cloud maupun Pengguna RAM dapat membuatnya. |
Kuota | Dua per Pengguna RAM per layanan cloud. Kuota ini bersifat tetap. | Dua per identitas. |
Periode kedaluwarsa | Kedaluwarsa dapat diatur dari 1 hingga 36.600 hari atau diatur agar tidak pernah kedaluwarsa. Kunci yang kedaluwarsa dinonaktifkan secara permanen dan tidak dapat dipulihkan. | Validitas jangka panjang tanpa mekanisme kedaluwarsa bawaan. |
Kasus penggunaan umum | Memanggil model AI, integrasi dengan platform pihak ketiga atau alat developer, serta skenario yang memerlukan isolasi kredensial tingkat layanan. | Panggilan OpenAPI/SDK umum, orkestrasi lintas layanan, dan otomatisasi CI/CD. |
Status siklus hidup
Kunci API dapat berada dalam salah satu dari tiga status berikut selama siklus hidupnya:
Active: Kredensial dapat digunakan untuk memanggil OpenAPI layanan cloud yang terikat. Ini adalah status default saat pembuatan.
Inactive: Kredensial dinonaktifkan sementara. Anda dapat mengaktifkannya kembali ke status
Active. Kunci harus berada dalam status inactive sebelum Anda dapat menghapusnya.Expired: Sistem secara otomatis mengubah status kunci menjadi Expired saat waktu kedaluwarsanya tercapai. Kredensial menjadi tidak valid secara permanen dan tidak dapat dipulihkan. Anda harus membuat kunci baru.
Kuota dan kedaluwarsa
Kuota: Setiap Pengguna RAM dapat membuat maksimal dua Kunci API per layanan cloud, termasuk kunci
ActivedanInactive. Kuota ini bersifat tetap. Kunci yang kedaluwarsa tetap dihitung dalam kuota ini; kunci yang dihapus tidak dihitung.Unit periode kedaluwarsa: Hari.
Rentang nilai: Konsol menyediakan opsi preset untuk 1, 7, 30, dan 90 hari, atau Anda dapat mengatur kunci agar tidak pernah kedaluwarsa. Nilai kustom juga didukung.
Default OpenAPI: Jika Anda menghilangkan parameter
CredentialAgeDayssaat memanggil operasiCreateServiceCredential, kunci akan diatur agar tidak pernah kedaluwarsa.Kedaluwarsa bersifat final: Saat kunci kedaluwarsa, statusnya berubah menjadi
Expired, dan kredensial menjadi tidak valid secara permanen. Kunci tersebut tidak dapat diaktifkan kembali. Anda harus menghapus kunci yang kedaluwarsa dan membuat kunci baru.
Sebagai praktik keamanan terbaik, atur periode kedaluwarsa yang wajar untuk Kunci API berdasarkan siklus hidup aplikasi Anda, alih-alih membuat kunci yang tidak pernah kedaluwarsa. Rotasi kredensial dalam aplikasi Anda sebelum masa berlakunya habis untuk menghindari gangguan bisnis.
Layanan cloud yang didukung
Di Konsol RAM, buka halaman User Details > tab Credential Management > bagian API Keys, lalu klik Create API Key. Daftar drop-down Cloud Service menampilkan layanan yang tersedia untuk akun Anda. Lihat dokumentasi layanan tertentu untuk daftar API yang didukung.
Pengelolaan mandiri untuk Pengguna RAM
Akun Alibaba Cloud atau administrator RAM dengan izin yang cukup dapat menggunakan pengaturan AllowUserToManageServiceCredential dalam pengaturan keamanan RAM untuk mengontrol apakah Pengguna RAM dapat mengelola Kunci API mereka sendiri. Pengaturan ini memiliki dua status berikut:
Izinkan pengelolaan mandiri: Pengguna RAM dapat login ke konsol atau memanggil OpenAPI untuk membuat, memperbarui, atau menghapus Kunci API mereka sendiri, asalkan tindakan tersebut tidak secara eksplisit dilarang oleh administrator melalui kebijakan izin (yaitu, tidak ada kebijakan Deny yang eksplisit).
Pengelolaan mandiri tidak diizinkan: Pengguna RAM tidak dapat mengelola Kunci API mereka sendiri. Kunci tersebut harus dibuat dan dikelola oleh administrator yang memiliki izin seperti
ram:CreateServiceCredential.
Metode otorisasi
Anda dapat memilih salah satu dari tiga metode berikut untuk memberikan izin sesuai dengan kebutuhan keamanan dan tata kelola Anda:
Berikan kebijakan sistem kepada administrator RAM (Manajemen Terpusat): Sambungkan kebijakan sistem
AliyunRAMFullAccesske administrator Anda, sehingga mereka dapat membuat dan mengelola Kunci API untuk semua pengguna. Kebijakan ini memberikan akses administratif penuh ke RAM dan cocok untuk lingkungan di mana tim khusus mengelola semua kredensial Pengguna RAM.Aktifkan pengaturan pengelolaan mandiri global (Tidak Direkomendasikan untuk lingkungan produksi): Setelah Anda mengaktifkan
AllowUserToManageServiceCredentialdalam pengaturan keamanan RAM, semua Pengguna RAM dapat mengelola Kunci API mereka sendiri kecuali secara eksplisit dibatasi oleh kebijakanDeny. Opsi ini memberikan fleksibilitas bagi tim tetapi memberikan izin yang luas. Kami merekomendasikan penggunaannya hanya di lingkungan pengujian atau sandbox yang terkendali.Sambungkan kebijakan kustom (Direkomendasikan): Nonaktifkan pengaturan pengelolaan mandiri global dan sambungkan kebijakan kustom hanya ke Pengguna RAM tertentu yang perlu mengelola Kunci API mereka sendiri. Batasi
Resourcehanya ke identitas pengguna tersebut. Jika diperlukan, Anda dapat menambahkan kondisiram:ServiceCredentialServiceNameuntuk membatasi izin lebih lanjut ke layanan cloud tertentu. Metode ini memungkinkan Anda memberikan izin yang tepat kepada pengguna individual tanpa mengaktifkan pengelolaan mandiri untuk seluruh akun.
Saat pengaturan global AllowUserToManageServiceCredential diaktifkan, semua Pengguna RAM dapat mengelola Kunci API mereka sendiri (termasuk operasi membuat, mengaktifkan, menonaktifkan, dan menghapus) kecuali administrator melampirkan kebijakan izin yang melarang tindakan tersebut. Untuk lingkungan produksi, kami sangat menyarankan agar pengaturan ini tetap dinonaktifkan dan menggunakan kebijakan kustom untuk memberikan izin secara selektif.
Contoh kebijakan kustom
Kebijakan contoh berikut membatasi Resource hanya ke identitas Pengguna RAM itu sendiri. Setelah disambungkan ke Pengguna RAM, kebijakan ini memungkinkan mereka melakukan tindakan yang ditentukan pada akun mereka sendiri. Sebelum menggunakan kebijakan, ganti ACCOUNT_ID dengan ID akun Anda (yang dapat Anda temukan di Alibaba Cloud Account Center) dan ganti USER_NAME dengan nama login Pengguna RAM yang dituju (tanpa akhiran @).
Buat Kunci API
Kebijakan ini memungkinkan pengguna membuat dan menampilkan daftar Kunci API mereka sendiri, tetapi tidak mengizinkan mereka memodifikasi atau menghapus kunci. Ini cocok untuk memberikan izin minimal sesuai prinsip hak istimewa minimal.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME"
}
]
}Manajemen siklus hidup penuh
Kebijakan ini memungkinkan pengguna melakukan semua operasi manajemen untuk Kunci API mereka sendiri, termasuk membuat, menampilkan daftar, mengganti nama, mengaktifkan, menonaktifkan, dan menghapusnya.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials",
"ram:GetServiceCredential",
"ram:UpdateServiceCredential",
"ram:DeleteServiceCredential"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME"
}
]
}Manajemen spesifik layanan
Kebijakan ini memperluas izin manajemen penuh dengan menambahkan kondisi ram:ServiceCredentialServiceName. Kebijakan ini hanya mengizinkan pengguna mengelola Kunci API untuk layanan cloud tertentu (dalam contoh ini, ak.aliyuncs.com). Ini berguna untuk skenario otorisasi granular di mana manajemen kredensial didelegasikan berdasarkan layanan cloud.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials",
"ram:GetServiceCredential",
"ram:UpdateServiceCredential",
"ram:DeleteServiceCredential"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME",
"Condition": {
"StringEquals": {
"ram:ServiceCredentialServiceName": "ak.aliyuncs.com"
}
}
}
]
}Struktur data Kunci API
Setiap Kunci API terdiri dari bidang-bidang inti berikut. Nama bidang yang dikembalikan oleh OpenAPI diawali dengan ServiceCredential, sedangkan nama bidang di konsol lebih ramah pengguna.
Bidang OpenAPI | Bidang Konsol | Deskripsi |
ServiceCredentialId | ID | ID unik yang dihasilkan sistem, diawali dengan |
ServiceCredentialName | Name | Nama yang ramah pengguna untuk mengidentifikasi tujuan kunci. Konsol secara otomatis mengisi nama ini dengan format seperti |
ServiceName | Cloud Service | Identifikasi layanan cloud yang terikat, seperti |
ServiceCredentialSecret | API Key | Rahasia kredensial. Ditampilkan hanya sekali saat pembuatan dan tidak dapat diambil kembali melalui API atau konsol setelah itu. |
CreateTime | Creation Time | Waktu pembuatan dalam UTC, diformat dalam ISO-8601. Konsol menampilkan nilai ini dalam zona waktu lokal Anda. |
ExpirationTime | Expiration Time | Waktu saat kredensial kedaluwarsa dan statusnya berubah menjadi |
Status | Status | Status kredensial. Nilai yang valid adalah |
UserPrincipalName | User | Nama login Pengguna RAM (User Principal Name), seperti |
Rekomendasi keamanan
Tetapkan periode kedaluwarsa untuk Kunci API. Hindari mengatur kunci uji jangka pendek agar tidak pernah kedaluwarsa. Untuk kasus penggunaan lain, tetapkan periode kedaluwarsa yang sesuai, seperti 30 atau 90 hari, berdasarkan siklus penggunaan layanan, dan rotasi kunci sebelum masa berlakunya habis.
Segera salin rahasia Kunci API atau unduh file CSV setelah membuat kunci. Setelah Anda menutup jendela pop-up, Anda tidak dapat mengambil kembali rahasianya. Jika Anda kehilangan rahasia tersebut, Anda harus menghapus kunci dan membuat kunci baru.
Perlakukan Kunci API sebagai kredensial yang sangat sensitif. Jangan menyimpannya dalam teks biasa di repositori kode, file konfigurasi, atau log. Kami merekomendasikan penggunaan layanan manajemen rahasia atau mengenkripsinya dengan KMS sebelum penyimpanan.