All Products
Search
Document Center

Alibaba Cloud SDK:Mengelola kredensial akses

Last Updated:Jun 04, 2026

Konfigurasikan kredensial otentikasi untuk client Alibaba Cloud Python SDK V1.0 agar dapat membuat permintaan API.

SDK mendukung lima jenis kredensial. Pilih salah satu yang sesuai dengan lingkungan penerapan Anda:

Jenis kredensial

Gunakan saat

AccessKey pair

Pengembangan dan pengujian lokal dengan akun RAM user

STS credentials

Diperlukan akses berdurasi pendek, atau Anda perlu memberikan izin sementara kepada layanan lain

RAM role credentials

Aplikasi Anda mengasumsikan RAM role dan memerlukan refresh token STS secara otomatis

ECS RAM role credentials

Kode Anda berjalan pada instance ECS dengan RAM role yang telah disambungkan

Default credentials

Anda ingin SDK menemukan kredensial secara otomatis dari variabel lingkungan

Catatan

Jangan pernah menyematkan kredensial secara langsung di kode sumber atau melakukan commit ke sistem kontrol versi. Simpan kredensial di variabel lingkungan atau secrets manager.

Gunakan AccessKey pair

Gunakan metode ini untuk pengembangan dan pengujian lokal saat melakukan otentikasi sebagai RAM user. Simpan ID AccessKey dan rahasia AccessKey dalam variabel lingkungan, lalu berikan ke AcsClient.

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

# Inisialisasi client.
client = AcsClient(
    os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # Dapatkan ID AccessKey RAM user dari variabel lingkungan.
    os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # Dapatkan rahasia AccessKey RAM user dari variabel lingkungan.
    '<region_id>'  # ID wilayah.
)

# Buat permintaan API dan atur parameter.
request = DescribeRegionsRequest()

# Kirim permintaan.
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

Gunakan STS credentials

Gunakan metode ini saat Anda memerlukan akses berdurasi pendek. Security Token Service (STS) mengeluarkan kredensial keamanan sementara—berupa ID AccessKey, rahasia AccessKey, dan token keamanan—yang kedaluwarsa secara otomatis.

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import StsTokenCredential
from aliyunsdkecs.request.v20140526.AcceptInquiredSystemEventRequest import AcceptInquiredSystemEventRequest

cred = StsTokenCredential(
    sts_access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # Dapatkan ID AccessKey yang diberikan oleh STS dari variabel lingkungan.
    sts_access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # Dapatkan rahasia AccessKey yang diberikan oleh STS dari variabel lingkungan.
    sts_token=os.environ.get('ALIBABA_CLOUD_SECURITY_TOKEN')  # Dapatkan token STS yang diberikan oleh STS dari variabel lingkungan.
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = AcceptInquiredSystemEventRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)

print(str(response, encoding='utf-8'))

Gunakan RAM role credentials

Gunakan metode ini saat aplikasi Anda perlu mengasumsikan RAM role. Client secara otomatis meminta dan memperbarui token STS sebelum setiap panggilan API. Anda juga dapat meminta token STS secara manual dan membuat client STS.

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import RamRoleArnCredential
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

cred = RamRoleArnCredential(
    sts_access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # Dapatkan ID AccessKey RAM user dari variabel lingkungan.
    sts_access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # Dapatkan rahasia AccessKey RAM user dari variabel lingkungan.
    role_arn='<ram_role_arn>',
    session_role_name='<session_role_name>'
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = DescribeRegionsRequest()
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

Gunakan ECS RAM role credentials

Gunakan metode ini saat kode Anda berjalan pada instance ECS dengan RAM role yang telah ditetapkan. SDK mengambil kredensial keamanan sementara secara otomatis dari titik akhir metadata instans di http://100.100.100.200/latest/meta-data/ram/security-credentials/<role_name>. Kode Anda tidak memerlukan konfigurasi kredensial tambahan.

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import EcsRamRoleCredential
from aliyunsdkecs.request.v20140526.AcceptInquiredSystemEventRequest import AcceptInquiredSystemEventRequest

cred = EcsRamRoleCredential(
    role_name='<ram_role_name>'
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = AcceptInquiredSystemEventRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

Gunakan default credential

Gunakan metode ini saat Anda ingin SDK menemukan kredensial secara otomatis. SDK memeriksa variabel lingkungan ALIYUN_ACCESS_KEY_ID dan ALIYUN_ACCESS_KEY_SECRET. Jika keduanya diatur dan tidak kosong, SDK akan menggunakannya untuk membuat kredensial default.

from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

# Inisialisasi client.
client = AcsClient(
    region_id='<region_id>'  # ID wilayah.
)

# Buat permintaan API dan atur parameter.
request = DescribeRegionsRequest()

# Kirim permintaan.
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

Praktik keamanan terbaik

  • Gunakan variabel lingkungan atau secrets manager. Jangan pernah menyematkan kredensial secara langsung di kode sumber atau melakukan commit ke repositori.

  • Terapkan prinsip hak istimewa minimal. Berikan izin hanya sebanyak yang dibutuhkan kepada RAM user dan RAM role.

  • Lebih baik gunakan kredensial RAM role atau ECS RAM role di lingkungan produksi. Kedua jenis kredensial ini mengeluarkan token STS berdurasi pendek dan memperbaruinya secara otomatis, sehingga mengurangi risiko kebocoran kredensial.

  • Putar AccessKey pair secara berkala. Cabut semua AccessKey pair yang sudah tidak digunakan.

  • Gunakan STS credentials untuk akses sementara. Saat memberikan akses kepada pihak ketiga atau proses berdurasi pendek, keluarkan STS credentials dengan waktu kedaluwarsa yang sesuai, bukan membagikan AccessKey pair berdurasi panjang.