All Products
Search
Document Center

Alibaba Cloud SDK:Kelola kredensial akses

Last Updated:Apr 11, 2026

Saat menggunakan Alibaba Cloud SDK untuk C# V1.0 guna memanggil operasi OpenAPI, Anda harus mengonfigurasi kredensial akses dengan benar. Topik ini menjelaskan berbagai metode konfigurasi kredensial untuk memastikan pengembangan yang aman dan efektif.

Gunakan AccessKey

Penting
  • Kebocoran AccessKey dari Akun Alibaba Cloud Anda akan membahayakan seluruh sumber daya di dalamnya. Untuk keamanan yang lebih baik, kami sangat menyarankan menggunakan AccessKey milik RAM user. Untuk informasi lebih lanjut, lihat Create an AccessKey.

  • Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel di lingkungan runtime Anda. Untuk informasi lebih lanjut, lihat Configure environment variables in Linux, macOS, and Windows.

  • Inisialisasi client dengan AccessKey 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(
                    // The region ID.
                    "<REGION_ID>",
                    // Retrieve the AccessKey ID of the RAM user from an environment variable.
                    Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                    // Retrieve the AccessKey secret of the RAM user from an environment variable.
                    Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
                DefaultAcsClient client = new DefaultAcsClient(profile);
                // Code for calling API operations is omitted.
            }
        }
    }
    
  • Inisialisasi client dengan AccessKey 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(
                    // Retrieve the AccessKey ID of the RAM user from an environment variable.
                    Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                    // Retrieve the AccessKey secret of the RAM user from an environment variable.
                    Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
                IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
                DefaultAcsClient client = new DefaultAcsClient(profile, provider);
                // Code for calling API operations is omitted.
            }
        }
    }
    

Gunakan token STS

Inisialisasi client dengan kredensial akses sementara, juga dikenal sebagai 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)
        {
            AlibabaCloudCredentialsProvider provider = new StsCredentialProvider(
                // Retrieve the AccessKey ID of the RAM user from an environment variable.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Retrieve the AccessKey secret of the RAM user from an environment variable.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                // Retrieve the security token of the RAM user from an environment variable.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN"));
            IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
            DefaultAcsClient client = new DefaultAcsClient(profile, provider);
            // Code for calling API operations is omitted.
        }
    }
}

Gunakan RAM role ARN

Dapatkan token STS dengan memanggil operasi STS AssumeRole sebagai RAM user.

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(
                // Retrieve the AccessKey ID of the RAM user from an environment variable.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Retrieve the AccessKey secret of the RAM user from an environment variable.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            // Use the RAM role ARN.
            STSAssumeRoleSessionCredentialsProvider stsProvider = new STSAssumeRoleSessionCredentialsProvider(
                provider,
                "<ROLE_ARN>",
                profile
                );

            DefaultAcsClient client = new DefaultAcsClient(profile, stsProvider);
            // Code for calling API operations is omitted.
        }
    }
}

Gunakan instance RAM role

Untuk meningkatkan keamanan dan menyederhanakan penerapan, SDK dapat mengambil kredensial sementara dari instance RAM role. Metode ini memungkinkan aplikasi pada Instance ECS mengakses API Alibaba Cloud tanpa perlu mengonfigurasi AccessKey. SDK secara otomatis memperoleh izin yang diberikan oleh instance RAM role yang terpasang.

Penting

Pastikan Peran RAM telah disambungkan ke Instance ECS Anda.

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>");
            // Use an instance RAM role.
            InstanceProfileCredentialsProvider provider = new InstanceProfileCredentialsProvider(
                "<ROLE_NAME>");
            DefaultAcsClient client = new DefaultAcsClient(profile, provider);
            // Code for calling API operations is omitted.
        }
    }
}

Gunakan RAM role dengan OIDC

Di Container Service for Kubernetes (ACK), Anda dapat menetapkan RAM role ke Pod menggunakan RAM Roles for Service Accounts (RRSA). Fitur ini memungkinkan setiap aplikasi mengasumsikan RAM role yang berbeda dan menggunakan kredensial sementara untuk mengakses sumber daya cloud. Hal ini menerapkan prinsip hak istimewa minimal dan menghilangkan kebutuhan akan AccessKey, sehingga mencegah kebocoran kredensial.

ACK membuat dan memasang file token OIDC akun layanan untuk setiap Pod serta menyuntikkan detail konfigurasi ke dalam variabel lingkungan. SDK membaca variabel lingkungan tersebut dan memanggil operasi STS AssumeRoleWithOIDC untuk menukar token OIDC dengan token STS sementara. Untuk informasi lebih lanjut, lihat Isolate pod permissions by using RAM Roles for Service Accounts (RRSA).

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(
                // The ARN of the RAM role.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ROLE_ARN"), 
                // The ARN of the OIDC provider.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_OIDC_PROVIDER_ARN"), 
                // The file path of the OIDC token.
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_OIDC_TOKEN_FILE"),
                // A custom role session name.
                "<ROLE_SESSION_NAME>",
                // The region ID for the STS service.
                "<REGION_ID>");
            IClientProfile profile = DefaultProfile.GetProfile("<REGION_ID>");
            DefaultAcsClient client = new DefaultAcsClient(profile, provider);
            // Code for calling API operations is omitted.
        }
    }
}

Gunakan bearer token

Catatan

Metode ini hanya didukung oleh Cloud Call Center (CCC).

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);
            // Code for calling API operations is omitted.
        }
    }
}

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);
            // Code for calling API operations is omitted.
        }
    }
}

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

1. Kredensial lingkungan

SDK pertama kali mencari kredensial lingkungan. Jika variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah didefinisikan dan tidak kosong, SDK akan menggunakannya untuk membuat kredensial default.

2. RAM role OIDC

Jika tidak ada kredensial prioritas lebih tinggi yang tersedia, SDK membaca nilai-nilai berikut dari variabel lingkungan:

ALIBABA_CLOUD_ROLE_ARN: Nama Sumber Daya Alibaba Cloud (ARN) dari RAM role.

ALIBABA_CLOUD_OIDC_PROVIDER_ARN: ARN dari penyedia OIDC.

ALIBABA_CLOUD_OIDC_TOKEN_FILE: Jalur file token OIDC.

Jika ketiga variabel lingkungan ini telah disetel, SDK menggunakan nilainya untuk memanggil operasi AssumeRoleWithOIDC dan menggunakan token STS yang dikembalikan sebagai kredensial default.

3. File konfigurasi

Jika file default tersedia di ~/.alibabacloud/credentials.ini (atau C:\Users\USER_NAME\.alibabacloud\credentials.ini di Windows), SDK secara otomatis membuat kredensial dari isi file tersebut. Anda dapat mengganti jalur file default dengan menyetel variabel lingkungan ALIBABA_CLOUD_CREDENTIALS_FILE. Anda juga dapat menentukan profil mana yang akan digunakan dengan menyetel variabel lingkungan ALIBABA_CLOUD_PROFILE. Jika variabel ini tidak disetel, SDK akan menggunakan profil default.

[default]                            # Default profile
type = access_key                    # Authentication type: access_key
access_key_id = foo                  # Your AccessKey ID
access_key_secret = bar              # Your AccessKey Secret

[client1]                            # Profile named 'client1'
type = ecs_ram_role                  # Authentication type: ecs_ram_role
role_name = EcsRamRoleTest           # The role name

[client2]                            # Profile named 'client2'
type = ram_role_arn                  # Authentication type: ram_role_arn
access_key_id = foo
access_key_secret = bar
role_arn = role_arn                  # The role ARN
role_session_name = role_session_name # A custom session name

4. Instance RAM role

Jika tidak ditemukan kredensial melalui metode sebelumnya, SDK memeriksa variabel lingkungan ALIBABA_CLOUD_ECS_METADATA, yang menentukan nama instance RAM role. Jika variabel ini disetel, SDK mengambil token STS dari server metadata ECS dan menggunakannya sebagai kredensial default.