Todos os produtos
Search
Central de documentação

Resource Access Management:Best practices for accessing Alibaba Cloud OpenAPI

Última atualização: Oct 09, 2026

Credenciais de acesso vazadas podem comprometer recursos de cloud e operações de negócios. Proteja suas credenciais escolhendo o método de autenticação certo para cada cenário de implantação.

O que é uma credencial de acesso?

Uma credencial de acesso verifica sua identidade quando você usa ferramentas de desenvolvimento (API, CLI, SDK ou Terraform) para acessar a Alibaba Cloud.

  • Par de AccessKey: Composto por um AccessKey ID e um AccessKey secret. Esta é uma credencial permanente para contas da Alibaba Cloud e usuários do RAM. Create an AccessKey pair.

  • Token STS: Um token do Security Token Service (STS) é uma credencial temporária emitida para uma função do RAM com um período de validade e escopo de permissão personalizados. What is STS?.

Causas comuns de vazamento de credenciais

  • Pares de AccessKey codificados (hardcoded) no código da aplicação ficam expostos a qualquer pessoa com acesso de leitura ao repositório e se tornam públicos se o código for enviado para comunidades open source ou services de hospedagem de código.

  • Pares de AccessKey embutidos no código do lado do cliente podem ser extraídos através da descompilação da aplicação.

  • Documentações técnicas ou materiais compartilhados contêm informações de pares de AccessKey.

  • Códigos de exemplo na documentação do product contêm informações de pares de AccessKey.

  • Respostas de API que não possuem controles de permissão adequados retornam informações de credenciais de acesso.

Métodos seguros para usar credenciais de acesso

Minimize o tempo e o escopo de exposição das credenciais. Escolha um método seguro com base no seu cenário de implantação.

Método

Cenário

Use RAM Roles for Service Accounts (RRSA)

Aplicações implantadas em um cluster ACK. O RRSA isola as permissões no nível da função do RAM para que cada aplicação assuma uma função exclusiva.

Use an instance RAM role

Aplicações implantadas em uma instância ECS. A instância assume uma função do RAM para acessar a OpenAPI da Alibaba Cloud.

Use an STS token for development and debugging

Equipes de desenvolvimento, operações e products que precisam de credenciais para O&M, gerenciamento ou depuração. Use o SSO baseado em função para assumir uma função do RAM e obter um token STS.

Use an STS token in Function Compute

Aplicações implantadas no Function Compute (FC) que precisam acessar outros recursos de cloud. Associe a função do FC a uma função do RAM para usar um token STS em vez de credenciais permanentes.

Configure system environment variables

Cenários onde as soluções anteriores não se aplicam. Armazene as credenciais em variáveis de ambiente do sistema.

Usar RAM Roles for Service Accounts (RRSA)

Pré-requisitos

  • Este método se aplica a cloud services that support RAM.

  • Versão do cluster: Kubernetes 1.22 ou posterior, em um cluster gerenciado ACK (Basic ou Pro), cluster ACK Serverless (Basic ou Pro) ou cluster ACK Edge (apenas Pro).

  • É necessário usar o Alibaba Cloud SDK V2.0.

  • SDKs personalizados para products de gateway autogerenciados não podem ser usados.

Como funciona

3

Como o RRSA funciona

Sem o RRSA, qualquer pod em um nó pode ler as credenciais da função da instância ECS através dos metadados da instância e herdar todas as permissões concedidas a essa função. Para restringir as permissões do RAM por aplicação, impeça que as aplicações recuperem as credenciais temporárias da função da instância através dos metadados da instância ECS ou ECI, ou não anexe nenhuma política de permissão do RAM à função da instância.

O RRSA resolve isso vinculando uma função do RAM a uma conta de service do Kubernetes. Quando um pod é iniciado, ele recebe um token OIDC com escopo para sua conta de service, chama a API AssumeRoleWithOIDC e recebe um token STS com escopo de função para acesso à API de cloud.

O fluxo de autenticação:

  1. Injeção de token: Quando um pod é iniciado, o ACK usa a projeção de volume de token da conta de service para montar um arquivo de token OIDC com escopo para a conta de service do pod.

  2. Assumir função: A aplicação chama a API AssumeRoleWithOIDC usando este token OIDC.

  3. Receber credenciais STS: O STS valida o token OIDC em relação ao provedor OIDC registrado e retorna credenciais com escopo para a função do RAM.

  4. Acessar recursos: O pod usa as credenciais STS de curta duração para acessar as APIs autorizadas da Alibaba Cloud.

Os tokens OIDC têm curta duração. Leia o token do arquivo em cada solicitação de autenticação — não o armazene em cache. O ACK renova os tokens automaticamente antes do vencimento.

Quando o RRSA está ativado, o ACK automaticamente:

  • Cria um emissor OIDC dedicado para o cluster.

  • Atualiza a configuração service-account-issuer do cluster, mesclando o novo emissor OIDC ao valor existente.

  • Cria um provedor de identidade OIDC (IdP) na sua conta, chamado ack-rrsa-<cluster_id>, configurado para single sign-on (SSO) com o emissor OIDC do cluster.

Procedimento

Exemplos de código

O Alibaba Cloud SDK V2.0 suporta autenticação de token OIDC do RRSA. Qualquer SDK de service de cloud construído na V2.0 que suporte tokens STS também suporta o RRSA.

Linguagem

Versão

Demo

Go

Alibaba Cloud Credentials for Go 1.2.6 ou posterior. Para instruções, consulte Method 6: Use OIDCRoleArn.

Demo do SDK Go

Java

Alibaba Cloud Credentials for Java 0.2.10 ou posterior. Para instruções, consulte Method 6: OIDC role ARN.

Demo do SDK Java

Python 3

Alibaba Cloud Credentials for Python 0.3.1 ou posterior. Para instruções, consulte Manage access credentials.

Demo do SDK Python

Node.js / TypeScript

Alibaba Cloud Credentials for TypeScript/Node.js 2.2.6 ou posterior. Para instruções, consulte Method 6: Use OIDCRoleArn.

Demo do SDK Node.js

Usar uma função do RAM de instância

Pré-requisitos

  • Este método se aplica a cloud services that support RAM.

  • É necessário usar o Alibaba Cloud SDK V2.0.

  • SDKs personalizados para products de gateway autogerenciados não podem ser usados.

Como funciona

Você pode anexar uma função do RAM (Resource Access Management) de instância a uma instância do Elastic Compute Service (ECS). Em seguida, a instância ECS pode usar a credencial temporária do Security Token Service (STS) da função do RAM da instância para acessar as APIs de outros services da Alibaba Cloud. A credencial temporária do STS é atualizada periodicamente. Isso garante a segurança do seu par de AccessKey e implementa controle de acesso e gerenciamento de permissões de granularidade fina usando o RAM.

1

Fluxo de trabalho:

  1. A aplicação recupera um token STS acessando o instance metadata do ECS.

  2. A aplicação usa o token STS para acessar recursos de cloud. What is STS?.

Procedimento

Atribua uma função do RAM a uma instância ECS. Instance RAM roles.

Exemplos de código

O Alibaba Cloud Credentials simplifica o uso da função do RAM de instância. Estes exemplos chamam a operação DescribeRegions do ECS com uma função do RAM de instância.

Linguagem de programação

Exemplo de código

Go

Go code example

Java

Java code example

Python

Python code example

PHP

PHP code example

Node.js

Node.js code example

.NET

.NET code example

Assunção de função em cadeia entre contas

Se a sua aplicação em uma instância ECS precisar acessar recursos em outra conta da Alibaba Cloud, você pode usar a assunção de função em cadeia entre contas para obter acesso sem armazenar um par de AccessKey.

Como funciona

A instância ECS primeiro obtém credenciais temporárias para sua própria função do RAM de instância a partir dos metadados da instância. Em seguida, usa essas credenciais para chamar sts:AssumeRole para assumir uma função do RAM na conta de destino e obter um token STS para a conta de destino. Esse processo é chamado de assunção de função em cadeia.

Procedimento

  1. Na conta de destino, crie uma função do RAM. Defina Principal.RAM na política de confiança da função para o Alibaba Cloud Resource Name (ARN) da função do RAM de instância na conta de origem, por exemplo, acs:ram::<source-account-id>:role/<instance-role-name>. Conceda a essa função as permissões de que a aplicação precisa.

  2. Na função do RAM de instância na conta de origem, anexe uma política de permissão que conceda a permissão sts:AssumeRole. Você pode usar a política do sistema AliyunSTSAssumeRoleAccess.

  3. Na instância ECS, use a ferramenta Alibaba Cloud Credentials para realizar a assunção de função em cadeia. A ferramenta primeiro obtém as credenciais temporárias da função do RAM de instância a partir dos metadados da instância. Em seguida, usa essas credenciais para chamar sts:AssumeRole para assumir a função do RAM na conta de destino e obter um token STS entre contas.

Token STS para desenvolvimento e depuração

Cenário

Para equipes de desenvolvimento, operações e products que precisam de credenciais para O&M, gerenciamento ou depuração, use o SSO baseado em função para assumir uma função do RAM e obter um token STS em vez de um par de AccessKey permanente.

Procedimento

Usar um token STS no Function Compute

Cenário

Em vez de codificar (hardcode) o par de AccessKey de um usuário do RAM em uma função do FC, associe a função a uma função do RAM. A aplicação então usa um token STS para acessar recursos de cloud, evitando vazamentos de credenciais permanentes.

Arquitetura da solução

As funções de função do FC gerenciam credenciais temporárias em tempo de execução, evitando a exposição de longo prazo do par de AccessKey. Configure a função e as permissões uma vez; as funções obtêm credenciais temporárias automaticamente.

Um administrador cria uma função confiável pelo Function Compute e concede a ela as permissões necessárias (1), e então associa a função à função do FC (2). A aplicação recupera um token STS do contexto da função (3). Durante esse processo, o Function Compute chama o AssumeRole para obter o token STS do RAM/STS (i). A aplicação usa o token STS para chamar a API do recurso de cloud de destino (4), e a API do recurso retorna o resultado para a aplicação cliente.

image

Procedimento

Grant Function Compute permissions to access other Alibaba Cloud services.

Configurar variáveis de ambiente do sistema

Procedimento

Configure as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET.

<ACCESS_KEY_ID>

Exemplos de código do Alibaba Cloud SDK

Os SDKs da Alibaba Cloud criam uma credencial padrão a partir das variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET e a usam para autenticar solicitações automaticamente. Estes exemplos chamam a operação DescribeRegions do ECS.

Linguagem de programação

Exemplo de código

Go

Go code example

Java

Java code example

Python

Python code example

PHP

PHP code example

Node.js

Node.js code example

.NET

.NET code example

Exemplo de código genérico

Se você não puder usar os SDKs da Alibaba Cloud (por exemplo, SDKs personalizados para products de gateway autogerenciados), carregue as variáveis de ambiente diretamente. Exemplo em Java:

import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;

public class DemoTest {
    public static void main(String[] args) throws Exception{
        Config config = new Config();
        // Specify the type of credential you want to use.
        config.setType("access_key");
        // The AccessKeyId of your RAM user.
        config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        // The AccessKeySecret of your RAM user.
        config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        Client client = new Client(config);
    }
}

Remediar credenciais vazadas

Referências

Melhores práticas de segurança de cloud relacionadas: