Tous les produits
Search
Centre de documentation

Elastic Compute Service:Restrict source IPs for OpenAPI calls

Dernière mise à jour :Aug 18, 2026

Utilisez une politique RAM pour limiter les appels OpenAPI aux adresses IP de confiance et réduire l'impact d'une fuite de clé AccessKey.

Risques de sécurité

Par défaut, toute entité disposant d'une clé AccessKey valide peut appeler l'OpenAPI depuis n'importe quelle adresse IP. Si une clé AccessKey fuit (mauvaise configuration, code source codé en dur ou départ d'un employé), un attaquant prend le contrôle direct de vos ressources cloud. Il peut alors voler des données, supprimer des ressources malicieusement ou générer des frais inattendus.

Fonctionnement

Une politique RAM avec une condition acs:SourceIp restreint les appels API aux adresses IP de confiance, comme l'adresse IP de sortie de votre entreprise ou celle d'un Bastionhost. Même si une clé AccessKey est compromise, seuls les appels provenant de ces adresses aboutissent.

Si acs:SourceIp contient plusieurs adresses IP ou plages CIDR, la logique OU s'applique : un appel aboutit si l'adresse IP source correspond à l'une des entrées.

Limitations

  • Utilisateurs RAM uniquement : Les politiques de restriction d'adresse IP source s'appliquent uniquement aux utilisateurs RAM, pas au compte Alibaba Cloud lui-même.

  • Adresses IP publiques uniquement : La condition acs:SourceIp évalue l'adresse IP de sortie publique de l'appelant ou celle de la passerelle NAT, pas l'adresse IP privée au sein d'un VPC.

Prérequis

Assurez-vous de disposer des éléments suivants :

  • Un compte Alibaba Cloud avec des autorisations d'administrateur RAM.

  • L'adresse IP de sortie ou la plage CIDR à autoriser (par exemple, l'adresse IP sortante de votre entreprise ou une adresse IP Bastionhost).

Restreindre les adresses IP sources via la console RAM

Étape 1 : Créer un utilisateur RAM

Les politiques de restriction d'adresse IP source sont associées aux utilisateurs RAM, pas au compte Alibaba Cloud.

  1. Connectez-vous à la console RAM en tant que compte Alibaba Cloud ou administrateur RAM.

  2. Dans le volet de navigation de gauche, sélectionnez Identities > Users.

  3. Sur la page Users, cliquez sur Create User, saisissez les informations de l'utilisateur, cliquez sur OK et effectuez la vérification de sécurité.

Étape 2 : Créer une politique personnalisée

  1. Dans le volet de navigation de gauche, sélectionnez Permissions > Policies.

  2. Sur la page Access Policies, cliquez sur Create Policy.

  3. Sur la page Create Policy, cliquez sur l'onglet JSON et saisissez la politique suivante :

    Champ Description Exemple
    Action Opérations à autoriser. Utilisez ecs:* pour toutes les opérations ECS, ou * pour tous les services cloud. "ecs:*"
    acs:SourceIp Adresses IP ou plages CIDR autorisées. Plusieurs entrées utilisent une logique OU : un appel aboutit si l'adresse IP source correspond à l'une des entrées. "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"
              ]
            }
          }
        }
      ]
    }

    Remplacez les valeurs d'espace réservé avant d'enregistrer la politique.

  4. Saisissez un Policy Name (par exemple, RestrictIPAccess), ajoutez éventuellement une description, cliquez sur OK et effectuez la vérification de sécurité.

Étape 3 : Associer la politique à l'utilisateur RAM

  1. Dans le volet de navigation de gauche, sélectionnez Identities > Users.

  2. Sur la page Users, recherchez l'utilisateur RAM cible et cliquez sur Attach Policy dans la colonne Actions.

  3. Dans le panneau Grant Permission, sélectionnez la politique et cliquez sur Authorize.

Restreindre les adresses IP sources via l'API

Appelez les opérations API RAM suivantes dans l'ordre :

  1. Appelez CreateUser pour créer un utilisateur RAM :

    • UserName : Le nom de connexion.

    • DisplayName : Le nom d'affichage.

  2. Appelez CreatePolicy pour créer la politique :

    • PolicyName : Le nom de la politique, par exemple RestrictIPAccess.

    • PolicyDocument : Le document de politique JSON contenant les adresses IP autorisées dans le champ acs:SourceIp.

  3. Appelez AttachPolicyToUser pour associer la politique à l'utilisateur RAM :

    • PolicyType : Custom.

    • PolicyName : par exemple RestrictIPAccess.

    • UserName : par exemple TestUser.

Conformité

Utilisez les scripts suivants avec Alibaba Cloud CLI pour auditer et corriger les restrictions d'adresse IP source sur tous les utilisateurs RAM.

Vérification : identifier les utilisateurs RAM sans restriction d'adresse IP source

Ce script liste tous les utilisateurs RAM auxquels la politique spécifiée n'est pas associée.

#!/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

Correction : associer une restriction d'adresse IP source aux utilisateurs RAM en masse

Ce script associe la politique à chaque utilisateur RAM qui ne la possède pas déjà.

#!/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