Todos os produtos
Search
Central de documentação

Elastic Compute Service:Restrict source IPs for OpenAPI calls

Última atualização: Jul 03, 2026

Use uma política do RAM para limitar as chamadas da OpenAPI a IPs de origem confiáveis e reduzir o impacto de um AccessKey comprometido.

Riscos de segurança

Por padrão, qualquer entidade com um AccessKey válido pode chamar a OpenAPI de qualquer endereço IP. Um AccessKey vazado — seja por configuração incorreta, credenciais embutidas no código-fonte ou desligamento de funcionário — concede ao invasor controle direto sobre seus recursos na nuvem. Isso pode resultar em roubo de dados, exclusão maliciosa ou cobranças inesperadas.

Como funciona

Uma política do RAM com a condição acs:SourceIp restringe as chamadas de API a IPs confiáveis, como o IP de saída da sua empresa ou o IP de um Bastionhost. Mesmo se houver vazamento de um AccessKey, as chamadas só terão sucesso se partirem desses endereços.

Se acs:SourceIp listar vários IPs ou intervalos CIDR, a avaliação usará lógica OR: a chamada terá sucesso se o IP de origem corresponder a qualquer entrada.

Limitações

  • Apenas usuários RAM: As políticas de restrição de IP de origem aplicam-se exclusivamente a usuários RAM, não à conta Alibaba Cloud.

  • Apenas IPs públicos: A condição acs:SourceIp avalia o IP público de saída do chamador ou o IP de saída do NAT Gateway, e não o IP privado dentro de uma VPC.

Pré-requisitos

Verifique se você tem:

  • Uma conta Alibaba Cloud com permissões de administrador do RAM.

  • O endereço IP de saída ou intervalo CIDR a permitir (por exemplo, o IP de saída da sua empresa ou o IP de um Bastionhost).

Restringir IPs de origem pelo console do RAM

Etapa 1: Crie um usuário RAM

As políticas de restrição de IP de origem vinculam-se a usuários RAM, e não à conta Alibaba Cloud.

  1. Faça login no console do RAM com uma conta Alibaba Cloud ou como administrador do RAM.

  2. No painel de navegação à esquerda, escolha Identities > Users.

  3. Na página Users, clique em Create User, insira as informações do usuário, clique em OK e conclua a verificação de segurança.

Etapa 2: Crie uma política personalizada

  1. No painel de navegação à esquerda, escolha Permissions > Policies.

  2. Na página Access Policies, clique em Create Policy.

  3. Na página Create Policy, clique na aba JSON e insira a seguinte política:

    Campo

    Descrição

    Exemplo

    Action

    Operações a permitir. Use ecs:* para todas as operações do ECS ou * para todos os serviços de nuvem.

    "ecs:*"

    acs:SourceIp

    IPs ou intervalos CIDR permitidos. Múltiplas entradas usam lógica OR: a chamada tem sucesso se o IP de origem corresponder a qualquer entrada.

    "200.1.1.0/24", "213.1.2.3"

    {
      "Version": "1",
      "Statement": [
        {
          "Action": "ecs:*",
          "Resource": "*",
          "Effect": "Allow",
          "Condition": {
            "IpAddress": {
              "acs:SourceIp": [
                "200.1.xxx.xxx/24",
                "213.1.xxx.xxx"
              ]
            }
          }
        }
      ]
    }

    Substitua os valores de espaço reservado antes de salve a política.

  4. Insira um Policy Name (por exemplo, RestrictIPAccess), adicione uma descrição opcional, clique em OK e conclua a verificação de segurança.

Etapa 3: Vincular a política ao usuário RAM

  1. No painel de navegação à esquerda, escolha Identities > Users.

  2. Na página Users, localize o usuário RAM desejado e clique em Add Permissions na coluna Actions.

  3. No painel Grant Permission, selecione a política e clique em Grant Permissions.

Restringir IPs de origem pela API

Chame as seguintes operações da API do RAM em sequência:

  1. Chame CreateUser para crie um usuário RAM:

    • UserName: O nome de login.

    • DisplayName: O nome de exibição.

  2. Chame CreatePolicy para crie a política:

    • PolicyName: O nome da política, como RestrictIPAccess.

    • PolicyDocument: O documento de política JSON com os IPs permitidos no campo acs:SourceIp.

  3. Chame AttachPolicyToUser para vincular a política ao usuário RAM:

    • PolicyType: Custom.

    • PolicyName: Por exemplo, RestrictIPAccess.

    • UserName: Por exemplo, TestUser.

Conformidade

Use os scripts abaixo com a Alibaba Cloud CLI para auditar e corrigir restrições de IP de origem em todos os usuários RAM.

Verificação: encontrar usuários RAM sem restrição de IP de origem

Lista todos os usuários RAM sem a política especificada vinculada.

#!/bin/bash

# Replace with your policy name and ARN.
POLICY_NAME="RestrictIPAccess"
POLICY_ARN="acs:ram::123456789012:policy/RestrictIPAccess"

USER_LIST=$(aliyun ram ListUsers | jq -r '.Users.User[].UserName')

for USER in $USER_LIST; do
  POLICIES=$(aliyun ram ListPoliciesForUser --UserName $USER | jq -r '.Policies.Policy[].PolicyName')

  if ! echo "$POLICIES" | grep -q "$POLICY_NAME"; then
    echo "User $USER is not attached to policy $POLICY_ARN"
  fi
done

Correção: vincular restrição de IP de origem a usuários RAM em massa

Vincula a política a todos os usuários RAM que ainda não a possuem.

#!/bin/bash

# Replace with your policy name and ARN.
POLICY_NAME="RestrictIPAccess"
POLICY_ARN="acs:ram::123456789012:policy/RestrictIPAccess"

USER_LIST=$(aliyun ram ListUsers | jq -r '.Users.User[].UserName')

for USER in $USER_LIST; do
  POLICIES=$(aliyun ram ListPoliciesForUser --UserName $USER | jq -r '.Policies.Policy[].PolicyName')

  if ! echo "$POLICIES" | grep -q "^${POLICY_NAME}$"; then
    echo "Attaching policy $POLICY_ARN to user $USER ..."
    aliyun ram AttachPolicyToUser \
      --PolicyType Custom \
      --PolicyName $POLICY_NAME \
      --UserName $USER

    if [ $? -eq 0 ]; then
      echo "Policy attached to $USER."
    else
      echo "Failed to attach policy to $USER. Check your permissions or verify the policy exists."
    fi
  else
    echo "User $USER already has the policy. Skipping."
  fi
done