Tous les produits
Search
Centre de documentation

Elastic Compute Service:Exécuter des commandes Cloud Assistant en tant qu'utilisateur RAM

Dernière mise à jour :Aug 18, 2026

Utilisez des stratégies RAM pour restreindre l'exécution des commandes Cloud Assistant aux utilisateurs standards, tels que les utilisateurs non-root ou non-système.

Prérequis

Un utilisateur standard doit être créé sur l'instance ECS. Cette rubrique utilise user01 et user02 comme exemples.

Contexte

Par défaut, Cloud Assistant exécute les commandes avec les privilèges les plus élevés sur une instance ECS : en tant que root sous Linux et system sous Windows.

Vous pouvez utiliser une stratégie RAM pour interdire à root ou system d'exécuter des commandes Cloud Assistant et accorder des autorisations uniquement aux utilisateurs standards tels que user01 et user02.

Configurer un utilisateur standard pour les instances Linux

Suivez ces étapes pour empêcher un utilisateur RAM d'exécuter des commandes Cloud Assistant en tant que root sur les instances Linux.

  1. Connectez-vous à la console RAM avec votre compte Alibaba Cloud.

  2. Créez un utilisateur RAM.

    Exemple de paramètres pour l'utilisateur RAM :

    Paramètre

    Exemple

    Logon name

    commandUser

    Display name

    commandUser

    Access mode

    Sélectionnez à la fois Console Access et Programmatic Access (cette rubrique utilise les deux).

    Remarque

    Sélectionnez uniquement le mode d'accès nécessaire afin de respecter le principe du moindre privilège.

    Set password

    Sélectionnez Automatically generate password.

    Password reset

    Sélectionnez Required at Next Logon.

    MFA

    Sélectionnez Not Required.

    Enregistrez le nom d'utilisateur, le mot de passe et l'AccessKey après la création.

  3. Créez une stratégie personnalisée pour Cloud Assistant.

    Cliquez sur l'onglet Script. Dans le document de stratégie, configurez les autorisations API ECS Cloud Assistant avec les actions suivantes :

    • ecs:DescribeInstances

    • ecs:DescribeTagKeys

    • ecs:DescribeTags

    • ecs:CreateCommand

    • ecs:DescribeCommands

    • ecs:InvokeCommand

    • ecs:RunCommand

    • ecs:DeleteCommand

    • ecs:DescribeInvocations

    • ecs:DescribeInvocationResults

    • ecs:StopInvocation

    • ecs:DescribeCloudAssistantStatus

    • ecs:InstallCloudAssistant

    Définissez Resource sur acs:ecs:*:*:instance/*.

    Créez une stratégie nommée commandUserPolicy. Deux exemples suivent ; modifiez-les selon vos besoins.

    • Autorisez user01 et user02 à exécuter des commandes Cloud Assistant :

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:InvokeCommand",
                      "ecs:RunCommand"
                  ],
                  "Resource": [
                      "acs:ecs:*:*:instance/*",
                      "acs:ecs:*:*:command/*"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "ecs:CommandRunAs": [
                              "user01",
                              "user02"
                          ]
                      }
                  }
              }
          ],
          "Version": "1"
      }
      Remarque

      Ajoutez ou modifiez les noms d'utilisateur dans le bloc Condition pour accorder des autorisations à d'autres utilisateurs.

    • Interdisez à root et system d'exécuter des commandes Cloud Assistant :

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:InvokeCommand",
                      "ecs:RunCommand"
                  ],
                  "Resource": [
                      "acs:ecs:*:*:instance/*",
                      "acs:ecs:*:*:command/*"
                  ],
                  "Condition": {
                      "StringNotEqualsIgnoreCase": {
                          "ecs:CommandRunAs": [
                              "system",
                              "root"
                          ]
                      }
                  }
              }
          ],
          "Version": "1"
      }
      Remarque

      Ajoutez ou modifiez les noms d'utilisateur dans le bloc Condition pour restreindre d'autres utilisateurs.

  4. Accordez à l'utilisateur RAM des autorisations ECS en lecture seule et des autorisations Cloud Assistant.

    • Lecture seule ECS : sélectionnez AliyunECSReadOnlyAccess.

    • Cloud Assistant : sélectionnez commandUserPolicy (créée à l'étape précédente).

  5. Connectez-vous à la console Alibaba Cloud en tant qu'utilisateur RAM.

  6. Vérifiez en exécutant une commande Cloud Assistant. Consultez la rubrique Créer et exécuter des commandes.

    • Dans la console, spécifiez l'utilisateur pour exécuter la commande.

      user01 exécute la commande avec succès, mais root renvoie une erreur.

    • Dans la CLI, user01 exécute la commande avec succès, mais root renvoie une erreur :

      shell@Alicloud:~$ aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
      > --Name 'ping' \
      > --Type 'RunShellScript' \
      > --CommandContent 'ping aliyun.com' \
      > --Timeout '60' \
      > --ContentEncoding 'PlainText' \
      > --InstanceId.1 'i-bp10s90xxxxxxxxn' \
      > --Username 'user01'
      {
              "CommandId": "c-hz01ai1xxxxxxxxc",
              "InvokeId": "t-hz01ai18xxxxxxxx",
              "RequestId": "B352A46C-3CFE-4E72-9F03-BFC0C0D3C590"
      }
      shell@Alicloud:~$ aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
      > --Name 'ping' \
      > --Type 'RunShellScript' \
      > --CommandContent 'ping aliyun.com' \
      > --Timeout '60' \
      > --ContentEncoding 'PlainText' \
      > --InstanceId.1 'i-bp10s90xxxxxxxxn' \
      > --Username 'root'
      ERROR: SDK.ServerError
      ErrorCode: Forbidden.RAM
      Recommend: https://error-center.alibabacloud.com/status/search?Keyword=Forbidden.RAM&source=PopGw
      RequestId: 9FE8BCB7-AAFD-4401-B28D-8276411703CD
      Message: User not authorized to operate on the specified resource, or this API doesn't support RAM.
      shell@Alicloud:~$

Configurer un utilisateur standard pour les instances Windows

L'exécution de commandes Cloud Assistant sur une instance Windows nécessite un nom d'utilisateur et un mot de passe. Stockez le mot de passe de connexion Windows en tant que paramètre chiffré dans CloudOps Orchestration Service et chiffrez-le avec Key Management Service (KMS). Consultez les rubriques Présentation de CloudOps Orchestration Service et Présentation de Key Management Service.

Suivez ces étapes pour empêcher un utilisateur RAM d'exécuter des commandes Cloud Assistant en tant que root ou system.

  1. Connectez-vous à la console RAM avec votre compte Alibaba Cloud.

  2. Créez un utilisateur RAM.

    Exemple de paramètres pour l'utilisateur RAM :

    Paramètre

    Exemple

    Logon name

    commandUser

    Display name

    commandUser

    Access mode

    Sélectionnez à la fois Console Access et Programmatic Access (cette rubrique utilise les deux).

    Remarque

    Sélectionnez uniquement le mode d'accès nécessaire afin de respecter le principe du moindre privilège.

    Set password

    Sélectionnez Automatically generate password.

    Password reset

    Sélectionnez Required at Next Logon.

    MFA

    Sélectionnez Not Required.

    Enregistrez le nom d'utilisateur, le mot de passe et l'AccessKey après la création.

  3. Créez des stratégies personnalisées pour Cloud Assistant et KMS.

    • Autorisations Cloud Assistant :

      Créez une stratégie nommée commandUserPolicy. Deux exemples suivent ; modifiez-les selon vos besoins.

      • Autorisez user01 et user02 à exécuter des commandes Cloud Assistant :

        {
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ecs:InvokeCommand",
                        "ecs:RunCommand"
                    ],
                    "Resource": [
                        "acs:ecs:*:*:instance/*",
                        "acs:ecs:*:*:command/*"
                    ],
                    "Condition": {
                        "StringEquals": {
                            "ecs:CommandRunAs": [
                                "user01",
                                "user02"
                            ]
                        }
                    }
                }
            ],
            "Version": "1"
        }
        Remarque

        Ajoutez ou modifiez les noms d'utilisateur dans le bloc Condition pour accorder des autorisations à d'autres utilisateurs.

      • Interdisez à root et system d'exécuter des commandes Cloud Assistant :

        {
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ecs:InvokeCommand",
                        "ecs:RunCommand"
                    ],
                    "Resource": [
                        "acs:ecs:*:*:instance/*",
                        "acs:ecs:*:*:command/*"
                    ],
                    "Condition": {
                        "StringNotEqualsIgnoreCase": {
                            "ecs:CommandRunAs": [
                                "system",
                                "root"
                            ]
                        }
                    }
                }
            ],
            "Version": "1"
        }
        Remarque

        Ajoutez ou modifiez les noms d'utilisateur dans le bloc Condition pour restreindre d'autres utilisateurs.

    • Autorisations KMS :

      Créez une stratégie nommée kmsPolicy. Consultez la rubrique Exemples de stratégies d'autorisation courantes.

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "kms:List*", "kms:Describe*",
              "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey"
            ],
            "Resource": [
              "*"
            ]
          }
        ]
      }             
  4. Accordez à l'utilisateur RAM des autorisations pour ECS, OOS, Cloud Assistant et KMS.

    • Lecture seule ECS : sélectionnez AliyunECSReadOnlyAccess.

    • Lecture seule OOS : sélectionnez AliyunOOSReadOnlyAccess.

    • Cloud Assistant : sélectionnez commandUserPolicy (créée à l'étape précédente).

    • KMS : sélectionnez kmsPolicy (créée à l'étape précédente).

  5. Configurez un rôle RAM pour l'instance Windows.

    1. Créez une stratégie personnalisée pour le rôle RAM.

      Exemple de stratégie :

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "kms:GetSecretValue"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "oos:GetSecretParameter"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
              }
          ]
      }
    2. Créez un rôle RAM de service.

      Exemple de configuration :

      Paramètre

      Exemple

      Trusted entity type

      Sélectionnez Alibaba Cloud Service.

      Trusted service

      Sélectionnez ECS.

      Role name

      AxtSecretRamRole

    3. Accordez des autorisations au rôle RAM.

    4. Associez le rôle RAM à l'instance ECS.

  6. Créez un paramètre chiffré dans OOS pour stocker le mot de passe de connexion Windows.

    Remarque

    Le paramètre chiffré OOS doit se trouver dans la même région que l'instance ECS.

    Exemple de valeurs pour user01 :

    Paramètre

    Exemple

    Parameter name

    axtSecretPassword

    KMS key ID

    Utilisez la valeur par défaut Default Service CMK.

    Value

    Le mot de passe de connexion user01.

  7. Connectez-vous à la console Alibaba Cloud en tant qu'utilisateur RAM.

  8. Vérifiez en exécutant une commande Cloud Assistant. Consultez la rubrique Créer et exécuter des commandes.

    Exécutez une commande Cloud Assistant sur l'instance Windows pour vérifier les autorisations.

    • Dans la console, spécifiez l'utilisateur et le paramètre de mot de passe chiffré OOS.

      user01 exécute la commande avec succès, mais system renvoie une erreur.

    • Dans la CLI, user01 exécute la commande avec succès, mais system renvoie une erreur :

      shell@AliCloud:~$ aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
      > --Name 'ping' \
      > --Type 'RunPowerShellScript' \
      > --CommandContent 'ping aliyun.com' \
      > --Timeout '60' \
      > --ContentEncoding 'PlainText' \
      > --InstanceId.1 'i-bp1h21856zxxx' \
      > --Username 'user01' \
      > --WindowsPasswordName 'axtSecretPassword'
      {
              "CommandId": "c-hz0xxxxo2yo",
              "InvokeId": "t-hz01xxxxs00",
              "RequestId": "2D92EEDE-6FCA-47F9-81B1-2262EEB3376F"
      }
      shell@AliCloud:~$ aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
      > --Name 'ping' \
      > --Type 'RunPowerShellScript' \
      > --CommandContent 'ping aliyun.com' \
      > --Timeout '60' \
      > --ContentEncoding 'PlainText' \
      > --InstanceId.1 'i-bp1h2lxxx_xxxl' \
      > --Username 'system' \
      > --WindowsPasswordName 'axtSecretPassword'
      ERROR: SDK.ServerError
      ErrorCode: Forbidden.RAM
      Recommend: https://error-center.alibabacloud.com/status/search?Keyword=Forbidden.RAM&source=PopGw
      RequestId: 229A382B-FA81-4115-855A-C8F52EE29FE1
      Message: User not authorized to operate on the specified resource, or this API doesn't support RAM.
      shell@AliCloud:~$