O vazamento de credenciais de acesso pode comprometer recursos de nuvem e operações comerciais. Proteja suas credenciais escolhendo o método de autenticação adequado para cada cenário de implantação.
O que é uma credencial de acesso?
Uma credencial de acesso verifica sua identidade ao usar ferramentas de desenvolvimento (API, CLI, SDK ou Terraform) para acessar a Alibaba Cloud.
Par AccessKey: composto por um AccessKey ID e um AccessKey secret. Trata-se de uma credencial permanente para contas da Alibaba Cloud e usuários RAM. Criar um par AccessKey.
Token STS: um token do Security Token Service (STS) é uma credencial temporária emitida para uma função RAM, com período de validade e escopo de permissões personalizados. O que é o STS?.
Causas comuns de vazamento de credenciais
Pares AccessKey codificados diretamente no código da aplicação ficam expostos a qualquer pessoa com acesso de leitura ao repositório. Além disso, tornam-se públicos se o código for enviado para comunidades open source ou serviços de hospedagem de código.
A descompilação da aplicação pode extrair pares AccessKey embutidos em código client-side.
Documentação técnica ou materiais compartilhados contêm informações de pares AccessKey.
Códigos de exemplo na documentação do produto incluem informações de pares AccessKey.
Respostas de API sem 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 conforme o cenário de implantação.
|
Método |
Cenário |
|
Aplicações implantadas em um cluster ACK. O RRSA isola as permissões no nível da função RAM, permitindo que cada aplicação assuma uma função exclusiva. |
|
|
Aplicações implantadas em uma instância ECS. A instância assume uma função RAM para acessar a Alibaba Cloud OpenAPI. |
|
|
Equipes de desenvolvimento, operações e produtos que precisam de credenciais para O&M, gerenciamento ou depuração. Utilize SSO baseado em função para assumir uma função RAM e obter um token STS. |
|
|
Aplicações implantadas no Function Compute (FC) que necessitam acessar outros recursos de nuvem. Associe a função do FC a uma função RAM para utilizar um token STS em vez de credenciais permanentes. |
|
|
Cenários em que 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 aplica-se aos serviços de nuvem compatíveis com RAM.
Uso do Alibaba Cloud SDK V2.0.
Incompatibilidade com SDKs personalizados para produtos de gateway autogerenciados.
Como funciona

Procedimento
Ative o RRSA no seu cluster ACK.
Use o RRSA no seu cluster ACK.
Exemplos de código
Usar uma função RAM de instância
Pré-requisitos
Esta abordagem é válida para serviços de nuvem compatíveis com RAM.
Utilização do Alibaba Cloud SDK V2.0.
Incompatibilidade com SDKs personalizados para produtos de gateway autogerenciados.
Como funciona
Você pode anexar uma função RAM de instância a uma instância do Elastic Compute Service (ECS). Assim, a instância ECS usa a credencial temporária do Security Token Service (STS) da função RAM de instância para acessar as APIs de outros serviços da Alibaba Cloud. A atualização periódica da credencial temporária do STS garante a segurança do seu par AccessKey e implementa controle de acesso refinado e gerenciamento de permissões por meio do RAM.

Fluxo de trabalho:
A aplicação obtém um token STS acessando os metadados da instância ECS.
A aplicação utiliza o token STS para acessar recursos de nuvem. O que é o STS?.
Procedimento
Atribua uma função RAM a uma instância ECS. Funções RAM de instância.
Exemplos de código
O Alibaba Cloud Credentials simplifica o uso de funções RAM de instância. Os exemplos a seguir chamam a operação DescribeRegions do ECS com uma função RAM de instância.
|
Linguagem de programação |
Exemplo de código |
|
Go |
|
|
Java |
|
|
Python |
|
|
PHP |
|
|
Node.js |
|
|
.NET |
Token STS para desenvolvimento e depuração
Cenário
Equipes de desenvolvimento, operações e produtos que necessitam de credenciais para O&M, gerenciamento ou depuração devem utilizar SSO baseado em função para assumir uma função RAM e obter um token STS em vez de um par AccessKey permanente.
Procedimento
Em cenários de conta única, configure o SSO de função baseado em SAML na conta de nuvem e atribua funções RAM aos colaboradores conforme suas atribuições. Dessa forma, eles podem usar a ferramenta saml2alibabacloud na linha de comando para obter um token STS após a autenticação no provedor de identidade (IdP).
Para cenários com múltiplas contas, use o CloudSSO para configurar o single sign-on para várias contas. Após a configuração, os colaboradores podem usar a CLI para fazer logon no CloudSSO e acessar recursos da Alibaba Cloud.
Usar um token STS no Function Compute
Cenário
Em vez de codificar fixamente o par AccessKey de um usuário RAM em uma função do FC, associe a função a uma função RAM. A aplicação então usa um token STS para acessar recursos de nuvem, evitando vazamentos de credenciais permanentes.
Arquitetura da solução
As funções do FC gerenciam credenciais temporárias em tempo de execução, evitando a exposição prolongada de pares AccessKey. Configure a função e as permissões uma única 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); depois, 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 AssumeRole para obter o token STS do RAM/STS (i). A aplicação usa o token STS para chamar a API do recurso de nuvem alvo (4), e a API do recurso retorna o resultado para a aplicação cliente.

Procedimento
Conceder permissões ao Function Compute para acessar outros serviços da Alibaba Cloud.
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.
-
Linux e macOS
Execute os seguintes comandos:
export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>Substitua
<access_key_id>pelo seu AccessKey ID e<access_key_secret>pelo seu AccessKey secret. -
Windows
Crie um arquivo de variáveis de ambiente, adicione as variáveis
ALIBABA_CLOUD_ACCESS_KEY_IDeALIBABA_CLOUD_ACCESS_KEY_SECRETao arquivo e, em seguida, especifique seu AccessKey ID para ALIBABA_CLOUD_ACCESS_KEY_ID e seu AccessKey secret para ALIBABA_CLOUD_ACCESS_KEY_SECRET.Reinicie o sistema operacional Windows.
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 utilizam para autenticar solicitações automaticamente. Os exemplos a seguir chamam a operação DescribeRegions do ECS.
|
Linguagem de programação |
Exemplo de código |
|
Go |
|
|
Java |
|
|
Python |
|
|
PHP |
|
|
Node.js |
|
|
.NET |
Exemplo de código genérico
Caso não seja possível usar os SDKs da Alibaba Cloud (por exemplo, SDKs personalizados para produtos 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);
}
}
Corrigir credenciais vazadas
Vazamento de par AccessKey: Corrigir um par AccessKey comprometido.
Vazamento de token STS: O que fazer se um token STS vazar?.
Referências
Melhores práticas relacionadas à segurança em nuvem: