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.
Connectez-vous à la console RAM en tant que compte Alibaba Cloud ou administrateur RAM.
Dans le volet de navigation de gauche, sélectionnez Identities > Users.
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
Dans le volet de navigation de gauche, sélectionnez Permissions > Policies.
Sur la page Access Policies, cliquez sur Create Policy.
-
Sur la page Create Policy, cliquez sur l'onglet JSON et saisissez la politique suivante :
Champ Description Exemple ActionOpérations à autoriser. Utilisez ecs:*pour toutes les opérations ECS, ou*pour tous les services cloud."ecs:*"acs:SourceIpAdresses 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.
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
Dans le volet de navigation de gauche, sélectionnez Identities > Users.
Sur la page Users, recherchez l'utilisateur RAM cible et cliquez sur Attach Policy dans la colonne Actions.
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 :
-
Appelez CreateUser pour créer un utilisateur RAM :
UserName: Le nom de connexion.DisplayName: Le nom d'affichage.
-
Appelez CreatePolicy pour créer la politique :
PolicyName: Le nom de la politique, par exempleRestrictIPAccess.PolicyDocument: Le document de politique JSON contenant les adresses IP autorisées dans le champacs:SourceIp.
-
Appelez AttachPolicyToUser pour associer la politique à l'utilisateur RAM :
PolicyType:Custom.PolicyName: par exempleRestrictIPAccess.UserName: par exempleTestUser.
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