Todos os produtos
Search
Central de documentação

Elastic Compute Service:Proteger contas do Alibaba Cloud e evitar o vazamento de credenciais

Última atualização: Jun 23, 2026

Ative a MFA, use funções RAM em vez de AccessKeys e faça a rotação de credenciais regularmente para evitar acesso não autorizado.

Riscos de segurança

As principais ameaças de segurança a uma conta do Alibaba Cloud incluem ataques de força bruta a senhas e vazamento de credenciais de longo prazo, como AccessKeys e tokens STS. Se um invasor obtiver essas credenciais, poderá se passar por um usuário legítimo para fazer logon, gerenciar recursos ou acessar dados confidenciais. Isso pode causar:

  • Uso não autorizado de recursos, resultando em perdas financeiras diretas.

  • Danos à infraestrutura ou interrupções de serviço que afetam a disponibilidade do negócio.

  • Vazamento ou criptografia de dados confidenciais, levando a riscos de divulgação de informações e ransomware.

  • Instalação de programas maliciosos ou backdoors, representando ameaças de longo prazo à segurança do sistema e à integridade dos dados.

Práticas recomendadas

Proteger senhas da conta e ativar a MFA

  • Defina senhas complexas: senhas fracas são uma das principais causas de violações de conta. Evite senhas fracas para prevenir ataques de força bruta.

  • Altere senhas regularmente: altere sua senha a cada 90 dias para reduzir o risco de vazamento pelo uso prolongado.

  • Ative a MFA: vincule ou desvincule um dispositivo MFA virtual para sua conta do Alibaba Cloud. A MFA adiciona um código de verificação dinâmico, como um token móvel ou uma chave protegida por hardware, como uma camada extra além da autenticação por senha para evitar acesso não autorizado.

Usar funções RAM do ECS em vez de AccessKeys

Se um aplicativo em uma instância ECS precisar chamar APIs do Alibaba Cloud, como para dimensionamento do ECS, use uma função RAM em vez de uma AccessKey.

Criar um usuário RAM e vincular uma função

A conta deve ter a permissão sts:AssumeRole para vincular uma função a uma instância.

Console

  1. Crie e autorize um usuário do Resource Access Management (RAM).

  2. Vincule uma função RAM a uma instância ECS.

    Vincular uma função durante a criação da instância

    Ao criar uma instância na página de compra de instâncias, selecione Instance RAM Role em Advanced Options.

    Selecione Security Hardening Mode para Metadata Access Mode a fim de evitar o vazamento de tokens STS causado por vulnerabilidades da instância ou erros de configuração. Consulte Acessar metadados da instância usando o modo forçado.

    Vincular uma função a uma instância existente

    1. Acesse a página ECS console - Instances e selecione a região de destino.

    2. Clique no ID da instância para acessar a página de detalhes da instância.

    3. Na seção Outras informações, clique em Attach/Detach RAM Role.

    4. Selecione a função RAM e clique em OK.

    null

    Uma instância ECS pode ter apenas uma função RAM. Se seu aplicativo precisar de várias permissões, conceda todas a essa única função.

    Por exemplo, se uma instância já possui a função AliyunECSDiskEncryptDefaultRole e também precisa de permissões de gerenciamento de interface de rede, adicione a política AliyunECSNetworkInterfaceManagementAccess à função no console RAM.

API

Use operações de API para vincular e desvincular funções:

Usar uma função RAM para acessar serviços do Alibaba Cloud a partir de um aplicativo

Um aplicativo em uma instância ECS pode obter um token STS temporário do serviço de metadados da instância e usá-lo para chamar APIs do Alibaba Cloud.

Código de exemplo

from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_credentials.models import Config as CredConfig
from alibabacloud_tea_openapi.models import Config
from alibabacloud_ecs20140526.client import Client as EcsClient
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_util.models import RuntimeOptions

# Step 1: Obtain an STS token
def get_sts_token():
    config = CredConfig(
        type="ecs_ram_role",
        enable_imds_v1=False
    )
    cred_client = CredClient(config)
    credential = cred_client.get_credential()
    return {
        "AccessKeyId": credential.get_access_key_id(),
        "AccessKeySecret": credential.get_access_key_secret(),
        "SecurityToken": credential.get_security_token()
    }

# Step 2: Initialize the ECS client
def create_ecs_client(sts_token):
    config = Config(
        access_key_id=sts_token["AccessKeyId"],
        access_key_secret=sts_token["AccessKeySecret"],
        security_token=sts_token["SecurityToken"],
        endpoint="ecs.cn-hangzhou.aliyuncs.com"
    )
    return EcsClient(config)

# Step 3: Build the request to create an instance
def build_create_instance_request():
    return ecs_models.RunInstancesRequest(
        region_id="cn-hangzhou",
        image_id="aliyun_3_x64_20G_scc_alibase_20220225.vhd",
        instance_type="ecs.e-c1m2.xlarge",
        security_group_id="sg-bp1esyhwfbqeyudt****",
        v_switch_id="vsw-bp1nzprm8h7mmnl8t****",
        instance_name="sdk-test",
        instance_charge_type="PostPaid",
        key_pair_name="sdk-key-pair",
        system_disk_category="cloud_essd"
    )

# Step 4: Call the API to create the instance
def create_instance(client, request):
    runtime = RuntimeOptions()
    try:
        response = client.run_instances_with_options(request, runtime)
        print("Instance created successfully. Instance ID:", response.body.instance_id_sets.instance_id_set[0])
    except Exception as e:
        print("Failed to create instance. Error message:", e)

# Main function
if __name__ == "__main__":
    sts_token = get_sts_token()  # Obtain an STS token
    ecs_client = create_ecs_client(sts_token)  # Initialize the ECS client
    request = build_create_instance_request()  # Build the request to create an instance
    create_instance(ecs_client, request)  # Call the API to create the instance

Proteger AccessKeys e reduzir o risco de vazamento

Se precisar usar uma AccessKey, reforce o gerenciamento de segurança ao longo de todo o seu ciclo de vida — criação, armazenamento, distribuição e uso.

  • Criação: siga o princípio de "uma AccessKey por pessoa, uma AccessKey por aplicativo". Não compartilhe uma AccessKey entre vários usuários ou programas. Isso permite identificar rapidamente o responsável, limitar o impacto e fazer a rotação da chave em caso de vazamento.

  • Gerenciamento de permissões: siga o princípio de privilégio mínimo e conceda apenas as permissões necessárias. Use usuários RAM e atribua permissões com base nas responsabilidades. Evite usar a AccessKey da conta do Alibaba Cloud. Consulte Evitar usar sua conta do Alibaba Cloud e conceder permissões diferentes a usuários RAM com diferentes responsabilidades.

  • Armazenamento seguro: armazene AccessKeys em dispositivos confiáveis, como:

    • Um arquivo legível apenas por root ou um usuário específico.

    • Um banco de dados ou Key Management Service (KMS) com controle de acesso.

    • Não armazene AccessKeys em notas, repositórios de código, registros de chat ou assinaturas pessoais.

  • Distribuição segura: envie o arquivo de AccessKey criptografado por um canal (como e-mail) e a senha de descriptografia por um canal separado (como mensagem de texto).

  • Uso seguro: não codifique AccessKeys diretamente no código. Armazene a AccessKey em um arquivo de configuração separado, criptografe-o e salve-o em um servidor confiável. Após a distribuição, descriptografe o arquivo e defina as permissões para que apenas o proprietário possa lê-lo.

  • Controle de acesso à rede: configure uma política de controle de acesso à rede para a AccessKey no console RAM.

  • Rotação e limpeza regulares

  • Monitore o vazamento de AccessKey: use o recurso de detecção de vazamento de AccessKey no Security Center para verificar se uma AccessKey foi vazada. Esse recurso oferece suporte a notificações de alerta. Em caso de vazamento, o Alibaba Cloud fornece proteção restritiva para a AccessKey para evitar o escalonamento.

Conformidade

Verificar se uma instância ECS usa uma AccessKey

Consulte os logs de AccessKey para encontrar os serviços, endereços IP e recursos associados a uma AccessKey.

Pré-requisito: você criou uma trilha do ActionTrail e entregou os logs a um Logstore do SLS.

  • Consultar chamadas de AccessKey iniciadas a partir de um VPC Endpoint:

    * | SELECT "event.eventid","event.sourceipaddress", "event.userIdentity.accessKeyId",  "event.vpcId" WHERE "event.userIdentity.accessKeyId" LIKE 'LTA%' and "event.vpcId" LIKE 'vpc%'

    Resultado de exemplo:

    image.png

    Use o vpcId e o sourceipaddress para identificar a instância ECS que iniciou a chamada. Em seguida, investigue quais programas usam o accessKeyId para chamar a OpenAPI.

  • Consultar chamadas de AccessKey iniciadas a partir de um Internet Endpoint:

    * | SELECT "event.eventid","event.sourceipaddress", "event.userIdentity.accessKeyId" WHERE "event.userIdentity.accessKeyId" LIKE 'LTA%' and "event.vpcId" IS NULL

    Resultado de exemplo:

    image.png

    Determine se o sourceipaddress é um endereço IP público de uma instância ECS. Recupere os EIPs e endereços IP públicos de sua conta e verifique se o sourceipaddress pertence a você. Se um EIP ou endereço IP público estiver diretamente vinculado a uma instância ECS, você poderá localizar a instância e modificar sua configuração.

Substituir a AccessKey por uma função RAM de instância

Consulte Usar funções RAM do ECS em vez de AccessKeys e Soluções para vazamento de AccessKey.