Todos os produtos
Search
Central de documentação

Alibaba Cloud SDK:Gerencie credenciais de acesso

Última atualização: Sep 10, 2026

O Alibaba Cloud SDK for C# V1.0 oferece suporte a diversos tipos de credenciais. Escolha a opção mais adequada ao seu ambiente de implantação e aos seus requisitos de segurança.

Escolha um tipo de credencial

Tipo de credencial

Quando usar

AccessKey

Desenvolvimento e testes. Evite em produção — um AccessKey exposto compromete todos os recursos da conta.

Token STS

Acesso de curta duração com permissões refinadas. Geralmente obtido via AssumeRole.

ARN de função RAM

Acesso entre contas ou delegação de permissões a um usuário RAM via STS.

Função RAM de instância

Aplicações em execução no ECS. Não requer AccessKey — o SDK obtém as credenciais automaticamente do service de metadados da instância.

Função RAM com OIDC

Aplicações em execução no ACK (Kubernetes). Cada pod assume uma função RAM distinta sem precisar de AccessKey.

Cadeia de provedor de credenciais padrão

Desenvolvimento local ou ambientes com gerenciamento externo de credenciais (variáveis de ambiente, arquivo de configuração ou metadados da instância).

Usar um AccessKey

Importante
  • A exposição de um AccessKey da sua conta Alibaba Cloud compromete todos os recursos associados a ela. Para maior segurança, recomendamos fortemente o uso de um AccessKey pertencente a um usuário RAM. Para mais informações, consulte Crie um AccessKey.

  • Verifique se as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET estão definidas no seu ambiente de execução. Para mais informações, consulte Configure environment variables in Linux, macOS, and Windows.

  • Inicialize o cliente com um AccessKey usando 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.
            }
        }
    }
    
  • Inicialize o cliente com um AccessKey usando 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.
            }
        }
    }
    

Usar um token STS

Inicialize o cliente com uma credencial de acesso temporária obtida por meio do 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.
        }
    }
}

Usar um ARN de função RAM

Obtenha um token STS chamando a operação AssumeRole do STS como um usuário do 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.
        }
    }
}

Usar uma função RAM de instância

O SDK recupera credenciais temporárias de uma instance RAM role associada à sua instância do Elastic Compute Service (ECS). As aplicações acessam as APIs da Alibaba Cloud sem um AccessKey codificado, pois o SDK utiliza automaticamente as permissões concedidas à função.

Importante

Certifique-se de que uma função RAM esteja associada à sua instância ECS.

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

Usar uma função RAM com OIDC

No Container Service for Kubernetes (ACK), o recurso RAM Roles for Service Accounts (RRSA) permite que cada pod assuma uma função RAM distinta e acesse recursos da cloud com credenciais temporárias. Essa abordagem aplica o princípio de menor privilégio e elimina a necessidade de AccessKeys, evitando vazamentos de credenciais.

O ACK cria e monta um arquivo de token OpenID Connect (OIDC) da conta de service para cada pod e injeta os detalhes de configuração nas variáveis de ambiente. O SDK lê essas variáveis e chama a operação AssumeRoleWithOIDC do STS para trocar o token OIDC por um token STS temporário. Para mais informações, consulte 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.
        }
    }
}

Usar a cadeia de provedor de credenciais padrão

O DefaultCredentialProvider busca credenciais na seguinte ordem e usa a primeira correspondência encontrada:

Prioridade

Fonte

Tipo de credencial

1

Variáveis de ambiente (ALIBABA_CLOUD_ACCESS_KEY_ID + ALIBABA_CLOUD_ACCESS_KEY_SECRET)

AccessKey

2

Variáveis de ambiente (ALIBABA_CLOUD_ROLE_ARN + ALIBABA_CLOUD_OIDC_PROVIDER_ARN + ALIBABA_CLOUD_OIDC_TOKEN_FILE)

Função RAM OIDC

3

Arquivo de credenciais (~/.alibabacloud/credentials.ini)

Qualquer tipo compatível

4

Variável de ambiente ALIBABA_CLOUD_ECS_METADATA (nome da função RAM da instância)

Função RAM de instância

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

O DefaultCredentialProvider é conveniente para desenvolvimento e testes locais, mas não é recomendado para produção. Em caso de falha na autenticação, identificar a origem da credencial problemática pode ser difícil. Em produção, use um tipo de credencial explícito adequado ao seu ambiente de implantação, como uma função RAM de instância para ECS ou uma função RAM OIDC para ACK.

1. Credenciais de ambiente

O SDK verifica as variáveis ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET. Se ambas estiverem definidas e não vazias, o sistema as usará para criar as credenciais.

2. Função RAM OIDC

Se o SDK não encontrar nenhuma credencial de prioridade superior, ele lerá as seguintes variáveis de ambiente:

Variável

Descrição

ALIBABA_CLOUD_ROLE_ARN

O ARN da função RAM.

ALIBABA_CLOUD_OIDC_PROVIDER_ARN

O ARN do provedor OIDC.

ALIBABA_CLOUD_OIDC_TOKEN_FILE

O caminho do arquivo do token OIDC.

Se todas as três estiverem definidas, o SDK chamará a operação AssumeRoleWithOIDC e usará o token STS retornado.

3. Arquivo de configuração

Se existir um arquivo em ~/.alibabacloud/credentials.ini (ou C:\Users\USER_NAME\.alibabacloud\credentials.ini no Windows), o SDK lerá as credenciais dele. Substitua o caminho padrão pela variável de ambiente ALIBABA_CLOUD_CREDENTIALS_FILE. Especifique um perfil com ALIBABA_CLOUD_PROFILE; caso contrário, o SDK usará o perfil default.

O arquivo aceita todos os tipos de credenciais:

[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. Função RAM de instância

Se nenhuma credencial for encontrada nas sources anteriores, o SDK verificará a variável de ambiente ALIBABA_CLOUD_ECS_METADATA em busca do nome de uma função RAM de instância. Se definida, o SDK obterá um token STS do servidor de metadados do ECS.