全部產品
Search
文件中心

Elastic Compute Service:自訂權限原則

更新時間:Feb 20, 2025

如果系統權限原則不能滿足您的要求,您可以建立自訂權限原則實現最小授權。使用自訂權限原則有助於實現許可權的精細化管控,是提升資源訪問安全的有效手段。本文介紹Elastic Compute Service使用自訂權限原則的情境和策略樣本。

背景資訊

常見自訂權限原則樣本

授權RAM使用者建立隨用隨付執行個體

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DescribeImages",
        "vpc:DescribeVpcs",
        "vpc:DescribeVSwitches",
        "ecs:DescribeSecurityGroups",
        "ecs:DescribeKeyPairs",
        "ecs:DescribeTags",
        "ecs:RunInstances"
      ],
      "Resource": "*"
    }
  ],
  "Version": "1"
}

授權RAM使用者建立訂用帳戶執行個體

其中bss相關API主要用於查看並支付訂用帳戶訂單,其對應的系統策略為AliyunBSSOrderAccess

重要

通過RunInstances建立訂用帳戶執行個體時,若傳入autoPay=true(建立執行個體時自動支付),則不需要授權bss相關API。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DescribeImages",
        "vpc:DescribeVpcs",
        "vpc:DescribeVSwitches",
        "ecs:DescribeSecurityGroups",
        "ecs:DescribeKeyPairs",
        "ecs:DescribeTags",
        "ecs:RunInstances",
        "bss:DescribeOrderList",
        "bss:DescribeOrderDetail",
        "bss:PayOrder",
        "bss:CancelOrder"
      ],
      "Resource": "*"
    }
  ],
  "Version": "1"
}

授權RAM使用者重啟ECS執行個體

以下策略表示:僅被授予此策略的RAM使用者啟用MFA並使用MFA登入時,才具有重啟ECS執行個體的許可權。您可以通過設定Conditionacs:MFAPresent的值為true來實現。

{
  "Statement": [
    {
      "Action": "ecs:RebootInstance",
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "Bool": {
          "acs:MFAPresent": "true"
        }
      }
    }
  ],
  "Version": "1"
}

授權RAM使用者管理指定的ECS執行個體

以下策略表示:您可以查看所有ECS執行個體及資源,但只能操作其中一個執行個體i-001

{
  "Statement": [
    {
      "Action": "ecs:*",
      "Effect": "Allow",
      "Resource": "acs:ecs:*:*:instance/i-001"
    },
    {
      "Action": "ecs:Describe*",
      "Effect": "Allow",
      "Resource": "*"
    }
  ],
  "Version": "1"
}

授權RAM使用者通過Workbench串連指定的ECS執行個體

以下策略表示:您可以查看所有ECS執行個體及資源,但只能通過Workbench串連其中一個執行個體i-001

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ecs:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ecs-workbench:LoginInstance",
            "Resource": "acs:ecs-workbench:*:*:workbench/i-001"
        }
    ],
    "Version": "1"
}

禁止RAM使用者通過VNC串連ECS執行個體

以下策略表示:您不可以使用VNC串連所有ECS執行個體。

{
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ecs:DescribeInstanceVncUrl",
            "Resource": "*"
        }
    ],
    "Version": "1"
}

授權RAM使用者查看指定地區ECS執行個體

以下策略表示:僅允許您查看青島的ECS執行個體,但不允許查看磁碟及快照。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:Describe*",
      "Resource": "acs:ecs:cn-qingdao:*:instance/*"
    }
  ],
  "Version": "1"
}

授權RAM使用者管理阿里雲帳號下ECS安全性群組

下述策略表示:您擁有管理阿里雲帳號下ECS安全性群組的許可權。

{
  "Version": "1",
  "Statement": [
    {
      "Action": "ecs:*SecurityGroup*",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

授權RAM使用者建立執行個體RAM角色

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs: CreateInstance",
        "ecs: AttachInstanceRamRole",
        "ecs: DetachInstanceRAMRole"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ram:PassRole",
      "Resource": "*"
    }
  ]
}

授權RAM使用者建立ECS執行個體後查詢執行個體和Block Storage資訊

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["ecs:DescribeInstances", "ecs:DescribeDisks"],
      "Resource": "*"
    }
  ],
  "Version": "1"
}

授權RAM使用者購買節省計劃

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "bssapi:CreateSavingsPlansInstance",
      "Resource": "*"
    }
  ]
}

限制RAM使用者建立ECS執行個體時建立Default VPC

Elastic Compute Service提供了RAM使用者來實現不同業務之間的隔離操作,被賦予AliyunECSFullAccess(管理ECS)許可權的RAM使用者預設擁有建立ECS、查看ECS、重啟ECS等許可權。如果您需要限制RAM使用者在當前地區沒有VPC時禁止建立Default VPC並建立ECS的許可權,同時保留其他許可權,可通過存取控制RAM自訂策略來實現。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "vpc:CreateDefaultVpc": ["true"]
        }
      }
    }
  ]
}

授權RAM使用者使用首碼列表

{
  "Statement": [
    {
      "Action": [
        "ecs:CreatePrefixList",
        "ecs:ModifyPrefixList",
        "ecs:DescribePrefixLists",
        "ecs:DescribePrefixListAssociations",
        "ecs:DescribePrefixListAttributes",
        "ecs:DeletePrefixList"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ],
  "Version": "1"
}

授權RAM使用者使用雲助手

詳細資料,可參見雲助手自訂策略樣本

授權RAM使用者對OSS Bucket的讀許可權

{
  "Version": "1",
  "Statement": [
    {
      "Action": ["oss:GetObject", "oss:GetBucketLocation", "oss:GetBucketInfo"],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

授權RAM使用者對OSS Bucket的讀寫權限

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "oss:GetObject",
        "oss:GetBucketLocation",
        "oss:GetBucketInfo",
        "oss:PutObject",
        "oss:DeleteObject",
        "oss:AbortMultipartUpload",
        "oss:ListMultipartUploads",
        "oss:ListParts"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

授權RAM使用者只允許通過HTTPS協議訪問ECS資源

{
  "Statement": [
    {
      "Action": "ecs:*",
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "Bool": {
          "acs:SecureTransport": "true"
        }
      }
    }
  ],
  "Version": "1"
}

限制RAM使用者只能建立加密的雲端硬碟

對於部分高安全合規要求的企業,針對企業帳號下所有RAM子帳號可能要求必須使用加密以保護資料的機密性。ECS支援配置自訂權限原則限制RAM子帳號只能建立加密的雲端硬碟。

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "ecs:RunInstances",
        "ecs:CreateInstance"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "ecs:IsDiskEncrypted": "*false*"
        }
      },
      "Effect": "Deny"
    },
    {
      "Action": [
        "ecs:RunInstances",
        "ecs:CreateInstance"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ecs:IsSystemDiskEncrypted": "false"
        }
      },
      "Effect": "Deny"
    },
    {
      "Action": "ecs:CreateDisk",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "ecs:IsDiskEncrypted": "*false*"
        }
      },
      "Effect": "Deny"
    }
  ]
}

限制RAM使用者只能建立主要金鑰的加密雲端硬碟

如果您在新購執行個體、建立資料盤時需要限制建立主要金鑰的加密雲端硬碟,可以配置如下權限原則。配置後,您只能選用主要金鑰加密雲端硬碟。

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "ecs:RunInstances",
        "ecs:CreateInstance"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "ecs:IsDiskByokEncrypted": "*false*"
        }
      },
      "Effect": "Deny"
    },
    {
      "Action": [
        "ecs:RunInstances",
        "ecs:CreateInstance"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ecs:IsSystemDiskByokEncrypted": "false"
        }
      },
      "Effect": "Deny"
    },
    {
      "Action": "ecs:CreateDisk",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "ecs:IsDiskByokEncrypted": "*false*"
        }
      },
      "Effect": "Deny"
    }
  ]
}

限制RAM使用者只能使用自訂鏡像建立ECS執行個體

如果您在新購執行個體時需要限制只能使用自訂鏡像建立ECS執行個體,可以配置如下權限原則。

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:RunInstances",
                "ecs:CreateInstance"
            ],
            "Effect": "Deny",
            "Resource": "acs:ecs:<地區ID>:*:instance/*",
            "Condition": {
                "StringNotEquals": {
                    "ecs:ImageSource": "Custom"
                }
            }
        }
    ]
}

禁止RAM使用者使用root登入ECS執行個體

如果您在新購執行個體、更換系統硬碟、掛載系統硬碟、線上重設執行個體密碼時需要限制使用root登入ECS執行個體,可以配置如下權限原則。配置後,您將無法使用root登入ECS執行個體。

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:RunInstances",
                "ecs:CreateInstance",
                "ecs:CreateOrder",
                "ecs:ReplaceSystemDisk",
                "ecs:AttachDisk",
                "ecs:InvokeCommand"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "ecs:LoginAsNonRoot": [
                        "false"
                    ]
                }
            },
            "Effect": "Deny"
        }
    ]
}

禁止RAM使用者使用帳號密碼登入ECS執行個體

如果您在新購執行個體、更換系統硬碟、掛載系統硬碟、線上或離線重設執行個體密碼時需要限制使用帳號密碼方式登入ECS執行個體,可以配置如下權限原則。配置後,您只能使用金鑰組或會話管理免密登入ECS執行個體。

說明

您可以在權限原則語句的Condition元素中使用ecs:ImagePlatform欄位限制建立執行個體時禁止使用帳號密碼登入執行個體的範圍,例如設定ecs:ImagePlatform=linux表示僅限制Linux作業系統禁止使用帳號密碼登入,Windows作業系統可以正常使用帳號密碼登入。

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:RunInstances",
                "ecs:CreateInstance",
                "ecs:CreateOrder",
                "ecs:ReplaceSystemDisk"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "ecs:PasswordCustomized": [
                        "true"
                    ]
                },
                "StringEquals": {
                    "ecs:ImagePlatform": "linux"
                }
            },
            "Effect": "Deny"
        },
        {
            "Action": [
                "ecs:ModifyInstanceAttribute",
                "ecs:InvokeCommand",
                "ecs:AttachDisk"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "ecs:PasswordCustomized": [
                        "true"
                    ]
                }
            },
            "Effect": "Deny"
        }
    ]
}

禁止RAM使用者使用鏡像預設密碼登入ECS執行個體

如果您在新購執行個體、更換系統硬碟時需要限制使用鏡像預設密碼登入ECS執行個體,可以配置如下權限原則。配置後,您將無法使用鏡像中預設的密碼登入ECS執行個體。

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:RunInstances",
                "ecs:CreateInstance",
                "ecs:CreateOrder",
                "ecs:ReplaceSystemDisk"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "ecs:PasswordInherit": [
                        "true"
                    ]
                }
            },
            "Effect": "Deny"
        }
    ]
}

禁止RAM使用者建立包含0.0.0.0/0的安全性群組規則

當安全性群組規則允許使用 0.0.0.0/0 表示允許所有外部IP均可以訪問ECS,這樣做可能會增加安全風險。建議您禁止RAM使用者添加0.0.0.0/0的安全性群組規則,並禁止建立ECS執行個體時使用預設安全性群組。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ecs:AuthorizeSecurityGroup",
        "ecs:ConfigureSecurityGroupPermissions",
        "ecs:ModifySecurityGroupRule"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "ecs:SecurityGroupIpProtocols": [
            "TCP"
          ]
        },
        "CIDRInRange": {
          "ecs:SecurityGroupSourceCidrIps": [
            "0.0.0.0/0"
          ]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "ecs:CreateInstance",
        "ecs:RunInstances"
      ],
      "Resource": "*",
      "Condition": {
        "Bool": {
          "ecs:NotSpecifySecureGroupId": [
            "true"
          ]
        }
      }
    }
  ]
}

限制RAM使用者僅能通過加固模式擷取執行個體中繼資料

阿里雲帳號可以通過以下權限原則,實現所有RAM使用者(子帳號)在通過API介面RunInstancesCreateInstance建立執行個體或ModifyInstanceMetadataOptions修改已有執行個體中繼資料資訊時,只能通過僅加固模式訪問執行個體中繼資料服務器擷取資料。權限原則內容如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ecs:RunInstances",
        "ecs:CreateInstance",
        "ecs:ModifyInstanceMetadataOptions"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ecs:SecurityHardeningMode": ["false"]
        }
      }
    }
  ]
}