全部产品
Search
文档中心

Alibaba Cloud SDK:Kelola kredensial akses

更新时间:Dec 29, 2025

Saat memanggil operasi API untuk mengelola sumber daya cloud menggunakan Alibaba Cloud SDK, Anda harus mengonfigurasi informasi kredensial yang valid. Topik ini menjelaskan cara mengonfigurasi kredensial akses untuk Alibaba Cloud SDK V1.0 untuk C#. Kredensial akses memastikan keamanan saat menggunakan SDK dalam pengembangan.

Gunakan pasangan AccessKey

Penting
  • Jika pasangan AccessKey dari akun Alibaba Cloud bocor, sumber daya akun tersebut berisiko terancam. Untuk memastikan keamanan akun, kami menyarankan menggunakan pasangan AccessKey dari Pengguna Resource Access Management (RAM). Untuk informasi lebih lanjut, lihat Buat Pasangan AccessKey.

  • Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi dalam lingkungan runtime kode. Untuk informasi lebih lanjut, lihat Konfigurasikan Variabel Lingkungan di Linux, macOS, dan Windows.

  • Konfigurasikan pasangan AccessKey untuk inisialisasi klien menggunakan IClientProfile.

    using Aliyun.Acs.Core;
    using Aliyun.Acs.Core.Profile;
    
    namespace AlibabaCloud.SDK.Sample
    {
        public class Sample
        {
            public static void Main(string[] args)
            {
                IClientProfile profile = DefaultProfile.GetProfile(
                    // Tentukan ID wilayah.
                    "<REGION_ID>",
                    // Dapatkan ID AccessKey dari pengguna RAM dari variabel lingkungan.
                    Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                    // Dapatkan rahasia AccessKey dari pengguna RAM dari variabel lingkungan.
                    Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
                DefaultAcsClient client = new DefaultAcsClient(profile);
                // Langkah pemanggilan operasi API dihilangkan.
            }
        }
    }
    
  • Konfigurasikan pasangan AccessKey untuk inisialisasi klien menggunakan AlibabaCloudCredentialsProvider.

    using Aliyun.Acs.Core;
    using Aliyun.Acs.Core.Profile;
    using Aliyun.Acs.Core.Auth;
    
    namespace AlibabaCloud.SDK.Sample
    {
        public class Sample
        {
            public static void Main(string[] args)
            {
                AlibabaCloudCredentialsProvider provider = new AccessKeyCredentialProvider(
                    // Dapatkan ID AccessKey dari pengguna RAM dari variabel lingkungan.
                    Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                    // Dapatkan rahasia AccessKey dari pengguna RAM dari variabel lingkungan.
                    Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
                IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
                DefaultAcsClient client = new DefaultAcsClient(profile, provider);
                // Langkah pemanggilan operasi API dihilangkan.
            }
        }
    }
    

Gunakan token STS

Gunakan token Security Token Service (STS) sementara untuk inisialisasi klien.

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth;
using Aliyun.Acs.Core.Profile;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static void Main(string[] args)
        {
            AlibabaCloudCredentialsProvider provider = new StsCredentialProvider(
                // Dapatkan ID AccessKey dari pengguna RAM dari variabel lingkungan.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Dapatkan rahasia AccessKey dari pengguna RAM dari variabel lingkungan.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                // Dapatkan token keamanan dari pengguna RAM dari variabel lingkungan.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN"));
            IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
            DefaultAcsClient client = new DefaultAcsClient(profile, provider);
            // Langkah pemanggilan operasi API dihilangkan.
        }
    }
}

Gunakan RamRoleArn

Panggil operasi AssumeRole dari STS sebagai pengguna RAM untuk mendapatkan token STS.

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth;
using Aliyun.Acs.Core.Profile;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static void Main(string[] args)
        {
            IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
            AlibabaCloudCredentialsProvider provider = new AccessKeyCredentialProvider(
                // Dapatkan ID AccessKey dari pengguna RAM dari variabel lingkungan.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Dapatkan rahasia AccessKey dari pengguna RAM dari variabel lingkungan.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Gunakan RamRoleArn untuk inisialisasi klien.
            STSAssumeRoleSessionCredentialsProvider stsProvider = new STSAssumeRoleSessionCredentialsProvider(
                provider,
                "<ROLE_ARN>",
                profile
                );

            DefaultAcsClient client = new DefaultAcsClient(profile, stsProvider);
            // Langkah pemanggilan operasi API dihilangkan.
        }
    }
}

Gunakan EcsRamRole

Untuk menerapkan aplikasi secara aman dan nyaman, SDK memungkinkan Anda menggunakan peran RAM yang dilampirkan pada instance Elastic Compute Service (ECS) untuk mendapatkan token otorisasi sementara. Anda dapat menggunakan token tersebut untuk mengakses sumber daya dan layanan yang tersedia untuk peran RAM yang dilampirkan pada instance ECS. Untuk informasi lebih lanjut, lihat bagian "Langkah 5: (Opsional) Dapatkan Token Otorisasi Sementara" dari topik Peran RAM Instans. Dengan cara ini, aplikasi yang diterapkan pada instance ECS dapat memanggil operasi API tanpa perlu menggunakan pasangan AccessKey. Setelah Anda mengonfigurasi jenis kredensial ini di SDK, SDK diberi izin peran RAM yang dilampirkan pada instance ECS.

Penting

Pastikan bahwa peran RAM yang ingin digunakan telah dilampirkan pada instance ECS tempat SDK diinstal.

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Core.Auth;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static void Main(string[] args)
        {
            IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
            // Gunakan EcsRamRole untuk inisialisasi klien.
            InstanceProfileCredentialsProvider provider = new InstanceProfileCredentialsProvider(
                "<ROLE_NAME>");
            DefaultAcsClient client = new DefaultAcsClient(profile, provider);
            // Langkah pemanggilan operasi API dihilangkan.
        }
    }
}

Gunakan OIDCRoleArn

Setelah Anda menetapkan peran RAM ke node pekerja dalam cluster Container Service for Kubernetes (ACK), Anda dapat menggunakan fitur RAM Roles for Service Accounts (RRSA) untuk mengizinkan aplikasi yang berbeda dalam cluster ACK mengasumsikan peran RAM yang berbeda. Aplikasi dapat mengasumsikan peran RAM tertentu, mendapatkan token STS, dan kemudian menggunakan token tersebut untuk mengakses layanan cloud. Ini menegakkan prinsip hak istimewa minimal dan memungkinkan aplikasi memanggil operasi API tanpa perlu menggunakan pasangan AccessKey, yang mencegah kebocoran pasangan AccessKey.

ACK membuat file token OpenID Connect (OIDC), mengaitkan file token dengan pod, dan menyuntikkan variabel lingkungan terkait ke dalam pod. SDK menggunakan variabel lingkungan dan memanggil operasi AssumeRoleWithOIDC dari STS untuk mendapatkan token STS dari peran RAM. Untuk informasi lebih lanjut, lihat Gunakan RRSA untuk Mengotorisasi Pod yang Berbeda untuk Mengakses Layanan Cloud yang Berbeda.

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth;
using Aliyun.Acs.Core.Profile;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static void Main(string[] args)
        {
            AlibabaCloudCredentialsProvider provider = new OIDCCredentialsProvider(
                // Tentukan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ROLE_ARN"), 
                // Tentukan ARN dari penyedia OIDC.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_OIDC_PROVIDER_ARN"), 
                // Tentukan jalur file token OIDC.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_OIDC_TOKEN_FILE"),
                // Tentukan nama sesi sementara.
                "<ROLE_SESSION_NAME>",
                // Tentukan ID wilayah STS.
                "<REGION_ID>");
            IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
            DefaultAcsClient client = new DefaultAcsClient(profile, provider);
            // Langkah pemanggilan operasi API dihilangkan.
        }
    }
}

Gunakan token bearer

Catatan

Hanya Cloud Call Center (tidak tersedia di alibabacloud.com) yang memungkinkan Anda mengonfigurasi token bearer sebagai kredensial akses di SDK.

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth;
using Aliyun.Acs.Core.Profile;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static void Main(string[] args)
        {
            AlibabaCloudCredentialsProvider provider = new BearerTokenCredentialProvider("<BEARER_TOKEN>");
            IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
            DefaultAcsClient client = new DefaultAcsClient(profile, provider);
            // Langkah pemanggilan operasi API dihilangkan.
        }
    }
}

Gunakan rantai penyedia kredensial default

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth.Provider;
using Aliyun.Acs.Core.Profile;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static void Main(string[] args)
        {
            IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
            var alibabaCloudClientCredential = new DefaultCredentialProvider();
            var client = new DefaultAcsClient(profile,alibabaCloudClientCredential);
            // Langkah pemanggilan operasi API dihilangkan.
        }
    }
}

Rantai penyedia kredensial default mencari dan menggunakan kredensial dalam urutan berikut:

1. Variabel lingkungan

Rantai penyedia kredensial mencari kredensial dari variabel lingkungan. Jika variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET didefinisikan dan memiliki nilai non-null, rantai penyedia kredensial menggunakan nilai dari variabel lingkungan tersebut untuk membuat kredensial default.

2. Peran RAM dari penyedia OIDC

Jika tidak ada kredensial yang ditemukan pada langkah sebelumnya, Alat Kredensial mendapatkan nilai dari variabel lingkungan berikut:

ALIBABA_CLOUD_ROLE_ARN: ARN dari peran RAM.

ALIBABA_CLOUD_OIDC_PROVIDER_ARN: ARN dari penyedia OIDC.

ALIBABA_CLOUD_OIDC_TOKEN_FILE: jalur file token OIDC.

Jika ketiga variabel lingkungan di atas ditentukan, Alat Kredensial menggunakan variabel lingkungan tersebut untuk memanggil operasi AssumeRoleWithOIDC dari STS untuk mendapatkan token STS sebagai kredensial default.

3. File konfigurasi

Jika file kredensial default disimpan di direktori home pengguna, rantai penyedia kredensial secara otomatis membuat kredensial berdasarkan tipe dan nama yang ditentukan. Jalur file kredensial default adalah ~/.alibabacloud/credentials.ini. Di Windows, jalurnya adalah C:\Users\USER_NAME\.alibabacloud\credentials.ini. Anda dapat mengubah jalur file kredensial default dengan menggunakan variabel lingkungan ALIBABA_CLOUD_CREDENTIALS_FILE. Anda juga dapat mengonfigurasi variabel lingkungan ALIBABA_CLOUD_PROFILE untuk menentukan profil. Jika Anda tidak menentukan nilai untuk variabel lingkungan ALIBABA_CLOUD_PROFILE, profil default digunakan.

[default]                            # Profil default.
type = access_key                    # Gunakan pasangan AccessKey untuk autentikasi.
access_key_id = foo                  # ID AccessKey.
access_key_secret = bar              # Rahasia AccessKey.

[client1]                            # Profil bernama `client1`.
type = ecs_ram_role                  # Gunakan kredensial EcsRamRole untuk autentikasi.
role_name = EcsRamRoleTest           # Nama peran RAM.

[client2]                            # Profil bernama `client2`.
type = ram_role_arn                  # Gunakan kredensial RamRoleArn untuk autentikasi.
access_key_id = foo
access_key_secret = bar
role_arn = role_arn                  # ARN dari peran RAM.
role_session_name = role_session_name # Nama sesi kustom.

4. Peran RAM dari instance ECS

Jika tidak ada kredensial yang ditemukan pada langkah sebelumnya, Alat Kredensial mendapatkan nilai dari variabel lingkungan ALIBABA_CLOUD_ECS_METADATA yang menentukan nama peran RAM dari instance ECS. Jika peran RAM ada, aplikasi mendapatkan token STS dari peran RAM sebagai kredensial default dengan menggunakan server metadata ECS.