All Products
Search
Document Center

Alibaba Cloud SDK:Manage access credentials

Last Updated:Sep 11, 2026

Alibaba Cloud SDK untuk C# V1.0 mendukung berbagai jenis kredensial. Pilih jenis yang sesuai dengan lingkungan penerapan dan kebutuhan keamanan Anda.

Choose a credential type

Credential type

When to use

AccessKey

Pengembangan dan pengujian. Hindari di lingkungan produksi — AccessKey yang terekspos membahayakan seluruh sumber daya dalam akun tersebut.

STS token

Akses berdurasi pendek dengan izin detail halus. Biasanya diperoleh melalui AssumeRole.

RAM role ARN

Akses lintas akun atau mendelegasikan izin ke RAM user melalui STS.

Instance RAM role

Aplikasi yang berjalan di ECS. Tidak memerlukan AccessKey — SDK mengambil kredensial secara otomatis dari layanan instance metadata.

RAM role with OIDC

Aplikasi yang berjalan di ACK (Kubernetes). Setiap pod mengasumsikan peran RAM yang berbeda tanpa AccessKey.

Default credential provider chain

Pengembangan lokal atau lingkungan tempat kredensial dikelola secara eksternal (variabel lingkungan, file konfigurasi, atau instance metadata).

Use an AccessKey

Penting
  • Kebocoran AccessKey dari Akun Alibaba Cloud Anda membahayakan seluruh sumber daya di dalamnya. Untuk keamanan yang lebih baik, kami sangat menyarankan menggunakan AccessKey milik Pengguna RAM. Untuk informasi selengkapnya, 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 selengkapnya, lihat Configure environment variables in Linux, macOS, and Windows.

  • Inisialisasi klien 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 klien 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.
            }
        }
    }
    

Use an STS token

Inisialisasi klien dengan kredensial akses sementara yang diperoleh melalui Security Token Service (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.
        }
    }
}

Use a RAM role ARN

Dapatkan token STS dengan memanggil operasi STS AssumeRole sebagai Pengguna Resource Access Management (RAM).

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.
        }
    }
}

Use an instance RAM role

SDK mengambil kredensial sementara dari instance RAM role yang ditautkan ke Instance Elastic Compute Service (ECS) Anda. Aplikasi mengakses API Alibaba Cloud tanpa AccessKey yang dikodekan secara langsung—SDK secara otomatis menggunakan izin yang diberikan kepada peran tersebut.

Penting

Pastikan peran RAM telah ditautkan 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.
        }
    }
}

Use a RAM role with OIDC

Di Container Service for Kubernetes (ACK), RAM Roles for Service Accounts (RRSA) memungkinkan setiap pod mengasumsikan peran RAM yang berbeda dan mengakses sumber daya cloud dengan kredensial sementara. Pendekatan ini menerapkan prinsip hak istimewa minimal serta menghilangkan penggunaan AccessKey, sehingga mencegah kebocoran kredensial.

ACK membuat dan memasang file token OpenID Connect (OIDC) akun layanan untuk setiap pod serta menyuntikkan detail konfigurasi ke dalam variabel lingkungan. SDK membaca variabel-variabel tersebut dan memanggil operasi STS AssumeRoleWithOIDC untuk menukar token OIDC dengan token STS sementara. Untuk informasi selengkapnya, 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.
        }
    }
}

Use the default credential provider chain

DefaultCredentialProvider mencari kredensial dalam urutan berikut dan menggunakan yang pertama kali ditemukan:

Priority

Source

Credential type

1

Variabel lingkungan (ALIBABA_CLOUD_ACCESS_KEY_ID + ALIBABA_CLOUD_ACCESS_KEY_SECRET)

AccessKey

2

Variabel lingkungan (ALIBABA_CLOUD_ROLE_ARN + ALIBABA_CLOUD_OIDC_PROVIDER_ARN + ALIBABA_CLOUD_OIDC_TOKEN_FILE)

OIDC RAM role

3

File kredensial (~/.alibabacloud/credentials.ini)

Any supported type

4

Variabel lingkungan ALIBABA_CLOUD_ECS_METADATA (nama instance RAM role)

Instance RAM role

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.
        }
    }
}
Penting

DefaultCredentialProvider praktis untuk pengembangan dan pengujian lokal, tetapi tidak direkomendasikan untuk produksi. Saat autentikasi gagal, mengidentifikasi sumber kredensial yang bermasalah bisa sulit. Di lingkungan produksi, gunakan jenis kredensial eksplisit yang sesuai dengan lingkungan penerapan Anda—seperti instance RAM role untuk ECS atau OIDC RAM role untuk ACK.

1. Environment credentials

SDK memeriksa keberadaan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Jika keduanya disetel dan tidak kosong, kredensial akan dibuat berdasarkan nilai tersebut.

2. OIDC RAM role

Jika tidak ditemukan kredensial dengan prioritas lebih tinggi, SDK membaca variabel lingkungan berikut:

Variable

Description

ALIBABA_CLOUD_ROLE_ARN

The ARN of the RAM role.

ALIBABA_CLOUD_OIDC_PROVIDER_ARN

The ARN of the OIDC provider.

ALIBABA_CLOUD_OIDC_TOKEN_FILE

The file path of the OIDC token.

Jika ketiganya disetel, SDK memanggil operasi AssumeRoleWithOIDC dan menggunakan token STS yang dikembalikan.

3. Configuration file

Jika file tersedia di lokasi ~/.alibabacloud/credentials.ini (atau C:\Users\USER_NAME\.alibabacloud\credentials.ini di Windows), SDK membaca kredensial dari file tersebut. Ganti lokasi default dengan variabel lingkungan ALIBABA_CLOUD_CREDENTIALS_FILE. Tentukan profil dengan ALIBABA_CLOUD_PROFILE; jika tidak disetel, SDK menggunakan profil default.

File ini mendukung semua jenis kredensial:

[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

[client3]                            # Profile named 'client3'
type = oidc_role_arn                 # Authentication type: oidc_role_arn
access_key_id = foo
access_key_secret = bar
role_arn = role_arn                  # The role ARN
oidc_provider_arn = oidc_provider_arn # The OIDC provider ARN
oidc_token_file_path = /path/to/token # The OIDC token file path
role_session_name = role_session_name # A custom session name

4. Instance RAM role

Jika tidak ditemukan kredensial melalui sumber-sumber sebelumnya, SDK memeriksa variabel lingkungan ALIBABA_CLOUD_ECS_METADATA untuk nama instance RAM role. Jika disetel, SDK mengambil token STS dari server metadata ECS.