Les politiques de sécurité offrent une protection côté client pour les opérations de l'Alibaba Cloud CLI. Lorsqu'elles sont activées, la CLI compare chaque commande aux règles configurées afin d'autoriser, de bloquer ou d'exiger une confirmation manuelle pour l'opération.
Vue d'ensemble
Les politiques de sécurité définissent un ensemble de règles. Chaque règle se compose d'un modèle (critères de correspondance) et d'une action (type de réponse) :
allow(autoriser) : Autorise explicitement l'opération et ignore l'évaluation des autres règles. Placez une règleallowavant les règlesdenyouconfirmplus générales pour créer des exceptions pour des opérations spécifiques.deny(bloquer) : Bloque entièrement l'opération. La CLI rejette la commande et n'envoie pas la requête API.confirm(exiger une approbation) : Dans un terminal interactif, la CLI vous invite à saisiryesavant de poursuivre. Dans un environnement non interactif, la CLI renvoie une erreur avec des instructions pour l'appelant.
Les politiques de sécurité s'appliquent aux appels OpenAPI (RPC et RESTful) ainsi qu'aux commandes de plug-ins. Elles complètent le contrôle d'accès côté serveur (RAM), mais ne remplacent pas les stratégies d'autorisation RAM.
Scénarios
Barrières de sécurité pour les agents IA : Lorsqu'un agent IA utilise la CLI pour gérer des ressources cloud, une politique de sécurité peut intercepter les opérations destructrices (telles que les suppressions) et exiger une confirmation humaine ou les bloquer entièrement, offrant ainsi un mécanisme « human-in-the-loop » (HITL).
Mesures de protection opérationnelles : Configurez des règles par défaut pour les environnements CLI d'équipe afin d'éviter l'exécution accidentelle d'opérations destructrices, telles que la suppression de ressources ou l'arrêt d'instances.
Prérequis
-
Alibaba Cloud CLI v3.3.14 ou version ultérieure est installée. Exécutez la commande suivante pour vérifier votre version actuelle :
aliyun version -
Les identifiants CLI sont configurés. Si vous n'avez pas encore configuré vos identifiants, exécutez la commande suivante :
aliyun configure
Gérer les politiques de sécurité
Les politiques de sécurité sont gérées via la famille de commandes aliyun configure safety-policy.
Afficher la politique actuelle
Exécutez la commande suivante pour afficher la configuration de la politique de sécurité au format JSON :
aliyun configure safety-policy show
Exemple de sortie :
{
"enabled": false,
"rules": []
}
Activer et désactiver
# Enable safety policy
aliyun configure safety-policy enable
# Disable safety policy
aliyun configure safety-policy disable
Exécutez aliyun configure safety-policy show pour vérifier que le champ enabled est défini sur true.
Ajouter des règles
Syntaxe de la commande :
aliyun configure safety-policy add --pattern <pattern> --action <deny|confirm>
Exemple : Bloquer toutes les opérations de suppression sur tous les produits :
aliyun configure safety-policy add --pattern '*:Delete*' --action deny
Exemple : Exiger une confirmation humaine pour les opérations de mise à jour ECS :
aliyun configure safety-policy add --pattern 'ecs:Update*' --action confirm
Exécutez aliyun configure safety-policy list pour vérifier que la règle a bien été ajoutée.
Si vous ajoutez une règle avec un modèle qui existe déjà, la CLI met à jour l'action pour ce modèle au lieu de créer une entrée en double.
La sous-commande add accepte uniquement les valeurs d'action deny, confirm et forbid. Pour configurer une règle allow, définissez la variable d'environnement ALIBABA_CLOUD_SAFETY_POLICY_RULES ou modifiez directement le fichier de configuration.
Supprimer des règles
Spécifiez le modèle exact pour supprimer une règle :
aliyun configure safety-policy remove --pattern '*:Delete*'
Lister les règles
Exécutez la commande suivante pour afficher toutes les règles dans une liste formatée :
aliyun configure safety-policy list
Exemple de sortie :
Safety policy: enabled
Config file: /home/user/.aliyun/safety-policy.json
Rules:
1. *:Delete* -> deny
2. ecs:Update* -> confirm
Syntaxe des règles
Format du modèle
Le paramètre --pattern utilise le format {product}:{operation} et prend en charge le caractère générique * pour correspondre à n'importe quelle séquence de caractères. La correspondance des modèles est insensible à la casse : *:Delete*, *:DELETE* et *:delete* correspondent tous aux mêmes opérations.
La CLI construit différents identifiants de commande selon le style d'API :
|
Style d'API |
Format du modèle |
Exemple |
|
RPC |
|
|
|
RESTful |
|
|
|
Plug-in |
|
|
Exemples courants de modèles :
|
Modèle |
Correspondances |
|
|
Toutes les opérations contenant « Delete », tous produits confondus (insensible à la casse) |
|
|
Uniquement l'opération delete-instance d'ECS |
|
|
Toutes les opérations ECS commençant par « Update » |
|
|
Toutes les opérations, tous produits confondus |
Lorsque vous exécutez des commandes dans un shell, entourez les valeurs de modèle de guillemets simples (par exemple, '*:Delete*') pour empêcher le shell d'étendre le caractère générique *.
Valeurs d'action
|
Action |
Comportement |
|
|
Autorise explicitement l'opération. Dans un système de règles où la première correspondance l'emporte, placez une règle |
|
|
Bloque l'opération et renvoie une erreur. La CLI n'envoie pas la requête API. |
|
|
Demande une confirmation dans un terminal interactif. L'utilisateur doit saisir |
forbid est un alias de confirm. Ils produisent un comportement d'exécution identique.
Si aucune règle ne correspond, l'opération est autorisée par défaut (autorisation implicite). Les règles allow explicites servent à créer des exceptions avant les règles deny ou confirm plus larges.
Ordre d'évaluation des règles
Les règles sont évaluées de haut en bas dans l'ordre configuré, selon une stratégie de première correspondance : la première règle correspondante s'applique et les règles suivantes ne sont pas vérifiées. Si aucune règle ne correspond, l'exécution est autorisée par défaut.
Par exemple, étant donné les deux règles suivantes :
ecs:Delete*→ confirm*:Delete*→ deny
Lorsque vous exécutez aliyun ecs delete-instance, la première règle (ecs:Delete*) correspond et l'action confirm est appliquée, et non l'action deny de la deuxième règle.
Utilisation de allow pour créer des exceptions :
ecs:Describe*→ allowecs:*→ deny
L'exécution de aliyun ecs DescribeInstances correspond à la première règle allow et l'opération se déroule normalement. L'exécution de aliyun ecs DeleteInstance correspond à la deuxième règle et est bloquée.
L'ordre des règles est important. Lors de l'ajout de règles, veillez à ce que les règles plus spécifiques apparaissent avant les règles plus générales.
Mode non interactif et scénarios d'agent IA
L'option --yes
Lorsque vous spécifiez l'option --yes (ou -y), les règles confirm sont automatiquement ignorées (considérées comme approuvées). Les règles deny ne sont pas affectées et bloquent toujours l'exécution.
# confirm rules are skipped, operation executes directly
aliyun ecs update-instance --InstanceId i-bp1xxxxx --yes
# deny rules are not affected, operation is still blocked
aliyun ecs delete-instance --InstanceId i-bp1xxxxx --yes
# Output: ERROR: operation blocked by safety policy: ecs delete-instance (rule: *:Delete*)
Vous pouvez également définir la variable d'environnement ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM sur true pour approuver automatiquement toutes les règles confirm pendant toute une session, ce qui équivaut à passer l'option --yes à chaque commande :
export ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM=true
Ni --yes ni ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM ne peuvent contourner les règles deny. Les opérations correspondant à une règle deny sont toujours bloquées, quels que soient les options ou les variables d'environnement.
Comportement en terminal non interactif
La CLI détecte si l'entrée standard est un périphérique terminal pour déterminer l'environnement actuel. Dans les environnements non interactifs (tels que les scripts, les pipelines CI/CD et les environnements d'exécution d'agents IA), si une opération correspond à une règle confirm et que l'option --yes n'est pas spécifiée, la CLI renvoie l'erreur suivante :
Safety policy requires confirmation for: ecs update-instance
This operation cannot run in non-interactive mode without explicit approval. If you are an agent, ask the user whether this operation is allowed; after they confirm (e.g. reply yes), re-run the same command with --yes.
Workflow recommandé pour les agents IA
Lorsqu'un agent IA gère des ressources cloud via la CLI, suivez ces étapes pour configurer et utiliser les politiques de sécurité :
Configurer les politiques de sécurité : Définissez
denypour les opérations qui doivent être entièrement interdites, etconfirmpour les opérations nécessitant une approbation.Gérer les invites de confirmation : Lorsque l'agent rencontre un blocage
confirm, présentez les détails de l'opération à l'utilisateur et demandez son approbation.Réexécuter avec approbation : Une fois que l'utilisateur a confirmé, l'agent réexécute la commande avec l'option
--yes.
Exemple de configuration : Bloquer les opérations de suppression et exiger une confirmation humaine pour les opérations de mise à jour :
aliyun configure safety-policy enable
aliyun configure safety-policy add --pattern '*:Delete*' --action deny
aliyun configure safety-policy add --pattern '*:Update*' --action confirm
Variables d'environnement
En plus de la configuration en ligne de commande, vous pouvez contrôler les politiques de sécurité via des variables d'environnement. Les variables d'environnement ont priorité sur le fichier de configuration.
|
Variable d'environnement |
Description |
Exemple |
|
|
Remplace la valeur |
|
|
|
Remplace la liste de règles dans le fichier de configuration. Utilisez le format |
|
|
|
Définissez sur |
|
Lorsque la variable d'environnement ALIBABA_CLOUD_SAFETY_POLICY_RULES est définie, les règles du fichier de configuration sont complètement remplacées, sans fusion.
Fichier de configuration
La configuration de la politique de sécurité est stockée dans ~/.aliyun/safety-policy.json. Si vous spécifiez l'option --config-path, le fichier safety-policy.json se trouve dans ce répertoire personnalisé.
Exemple de format de fichier :
{
"enabled": true,
"rules": [
{
"pattern": "ecs:Describe*",
"action": "allow"
},
{
"pattern": "*:Delete*",
"action": "deny"
},
{
"pattern": "ecs:Update*",
"action": "confirm"
}
]
}
Si le fichier de configuration n'existe pas, la politique de sécurité est désactivée par défaut et la liste de règles est vide. Le fichier est créé automatiquement lorsque vous exécutez pour la première fois la sous-commande
enableouadd.
La politique de sécurité utilise une conception « fail-open » : si le fichier de configuration ne peut pas être chargé (par exemple, en raison d'une corruption), la CLI ignore les vérifications de sécurité et ne bloque pas l'exécution des commandes.