全部产品
Search
文档中心

云服务器 ECS:共享自定义镜像

更新时间:Jun 03, 2024

共享镜像可用于同地域跨账号部署ECS实例。创建自定义镜像后,您可以将镜像共享给其他阿里云账号或者基于资源目录在企业组织内共享使用,共享对象就可以使用您共享的自定义镜像快速创建运行同一镜像环境的ECS实例。本文介绍共享自定义镜像的注意事项及操作流程。

操作场景

  • 场景一:您希望将一个阿里云账号下的镜像资源,直接共享给另外一个或多个阿里云账号使用。

  • 场景二:您在使用阿里云服务过程中,已通过资源目录将企业的多账号有序组织和集中管理起来,并希望将资源目录中某成员的镜像资源共享给整个资源目录(或者资源夹),此时可以通过资源目录实现资源共享。

    如果您将镜像共享给整个资源目录(或者资源夹),则资源目录(或者资源夹)下所有账号都可以访问共享镜像。且当资源目录(或者资源夹)内有新账号加入时,系统将自动触发新账号的镜像共享。当账号从资源目录(或者资源夹)内移出时,系统将自动取消该账号的镜像共享。更多信息,请参见资源共享概述

    说明

    资源目录RD(Resource Directory)是阿里云面向企业用户提供的一套多级账号和资源关系管理服务。资源目录支持您快速建立一套符合企业业务关系的目录结构,并将企业多个账号分布到这个目录结构中的相应位置,从而形成资源间的多层级关系。更多信息,请参见资源目录概述

    如果您已通过资源目录操作镜像资源共享,建议您不要再使用场景一中的方式操作相同的镜像资源,避免造成资源目录中镜像共享数据不一致的问题。

注意事项

共享镜像之前,请仔细阅读以下注意事项:

共享者

注意项

说明

共享费用

不收取共享费用。

账号权限

  • 您只能共享自己的自定义镜像,其他用户共享给您的镜像无法再次共享。

  • 每个自定义镜像支持共享的用户数量有限制,您可以在配额中心找到每个自定义镜像能够共享用户数限额配额项查看和调整配额。具体操作,请参见ECS配额管理

  • 共享对象是阿里云账号(主账号)时,镜像的源账号和目标账号必须为阿里云账号。阿里云账号与其RAM账号之间的相关权限说明如下:

    • 例如,阿里云账号A共享镜像给阿里云账号B,则账号B需要为其RAM账号B1添加对应的自定义权限策略,实现相应的功能。详细说明如下:

      说明

      场景一:如果RAM用户B1(阿里云账号B的子账号)需要查看共享镜像,则需要具备DescribeImages接口权限,自定义权限策略如下。

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

      场景二:如果RAM用户B1(阿里云账号B的子账号)需要通过共享镜像创建ECS实例,则需要具备RunInstances或者CreateInstance接口权限,自定义权限策略如下。

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

      更多信息,请参见通过脚本编辑模式创建自定义权限策略

    • 如果在某些特定场景下需要实现某些权限控制,例如仅允许RAM用户B1(阿里云账号B的子账号)使用阿里云账号A共享的自定义镜像创建ECS实例,或者仅允许RAM用户B1(阿里云账号B的子账号)使用自定义镜像创建ECS实例,不允许使用公共镜像、市场镜像等创建ECS实例等场景,则账号B需要为其RAM账号B1添加对应的自定义权限策略。更多信息,请参见共享镜像权限策略说明

    • 不支持中国站和国际站账号之间互相共享镜像。

地域限制

  • 仅支持同地域跨账号共享,不支持跨地域共享镜像。

    如需跨地域共享镜像,请先复制镜像到目标地域后再共享,或者先共享镜像后再跨地域复制镜像。具体操作,请参见复制镜像

  • 共享加密自定义镜像目前仅支持华北2(北京)、华东2(上海)、中国(香港)、新加坡地域。

共享对象

注意项

说明

共享费用

  • 共享镜像不会占用共享对象的自定义镜像额度,阿里云也不会向共享对象收取镜像共享费用。

  • 如果共享镜像的最终来源为付费镜像且共享对象使用该共享镜像创建ECS实例,则会向共享对象收取镜像费用。例如:源镜像A是付费镜像,用户A把该镜像共享给用户B,用户B使用该共享镜像创建了实例,则用户B需要支付镜像费用以及创建实例的费用。

镜像计费的更多信息,请参见镜像计费

使用限制

  • 共享对象只能使用共享镜像创建ECS实例,或者复制该共享镜像到自己的账号下成为自定义镜像后进行删除或更新。更多信息,请参见使用共享镜像

  • 被共享镜像或镜像依赖的资源处于不可用状态(例如账号欠费、密钥失效)时,共享镜像无法用于新建ECS实例,已创建的ECS实例以及根据云盘创建的快照、镜像也无法保证可用状态。

  • ECS不支持将自定义镜像共享给轻量应用服务器使用。轻量应用服务器创建的自定义镜像支持共享给ECS使用。更多信息,请参见共享自定义镜像

准备工作

  • 共享镜像之前,请确认自定义镜像已清除敏感数据和文件。

  • 需明确共享镜像的场景。

    • 将镜像共享给其他阿里云账号使用时,请先获取阿里云账号ID。

      获取方式:将鼠标移至控制台右上角的用户头像,在弹出的用户信息框中,如果标识了账号为主账号,则显示的账号ID即为阿里云账号ID。

    • 基于资源目录在企业组织内共享使用时,请先使用管理账号或成员账号开通资源目录。具体操作,请参见开通资源目录

操作步骤

共享非加密自定义镜像

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 镜像

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 自定义镜像页签,找到待共享的自定义镜像,在操作列单击共享镜像

  5. 共享镜像对话框中,根据实际的共享镜像场景完成操作。

    • 将镜像共享给其他阿里云账号使用

      1. 对端待共享账号ID处输入共享对象的阿里云账号ID。

      2. 选中安全确认信息:共享镜像后对方可获得该镜像中保存的数据,为防止数据泄露,请您再次确认是否将镜像共享给该UID

      3. 单击确定

    • 基于资源目录在企业组织内共享使用

      1. 共享对象类型右侧单击组织内共享

        说明

        仅开通了资源目录的管理账号或成员账号才可以进行组织内共享,如果您看不到组织内共享入口,请先开通资源目录。具体操作,请参见开通资源目录

      2. 跳转到资源共享控制台完成共享操作。具体操作,请参见创建共享单元

        说明

        选择共享的资源区域配置参数时,资源类型需选择ECS镜像

    镜像共享成功后,将鼠标悬浮至共享镜像的image.png图标处,可以查看共享对象的阿里云账号ID。

    image.png

共享加密自定义镜像

步骤1:共享者创建角色并授权

当您需要共享加密自定义镜像时,需要先通过阿里云的访问控制创建名为AliyunECSShareEncryptImageDefaultRole的角色并授予指定的权限与策略,然后才可以将加密自定义镜像共享给其他阿里云账号使用或基于资源目录在企业组织内共享使用。

  1. 使用共享者的阿里云账号登录RAM控制台

  2. 权限策略页面,设置权限策略。

    • 如果您是服务密钥Default Service CMK加密,请授予系统权限策略AliyunKMSFullAccess权限,策略内容请参见AliyunKMSFullAccess

    • 如果您是自定义密钥加密,您需要通过脚本编辑模式创建自定义权限策略以授予最小权限。具体操作,请参见通过脚本编辑模式创建自定义权限策略

      策略内容如下,限制只共享指定加密镜像中的加密密钥相关权限。

      {
        "Version": "1",
        "Statement": [
          {
            "Action": "kms:List*",
            "Resource": "acs:kms:<密钥归属地域ID>:<密钥归属用户AliUid>:key",
            "Effect": "Allow"
          },
          {
            "Action": [
              "kms:DescribeKey",
              "kms:TagResource",
              "kms:UntagResource",
              "kms:Encrypt",
              "kms:Decrypt",
              "kms:GenerateDataKey"
            ],
            "Resource": "acs:kms:<密钥归属地域ID>:<密钥归属用户AliUid>:key/<镜像关联KMS加密密钥Key>",
            "Effect": "Allow"
          }
        ]
      }
      说明

      其中<密钥归属地域ID><密钥归属用户AliUid><镜像关联KMS加密密钥Key>为变量,您需要分别修改为KMS密钥所在的地域ID、KMS密钥归属用户的阿里云账号ID和KMS密钥的密钥ID。

  3. 角色页面创建可信实体为阿里云账号的RAM角色,角色名称为AliyunECSShareEncryptImageDefaultRole

    具体操作,请参见创建可信实体为阿里云账号的RAM角色

  4. 角色列表页面,单击已创建的AliyunECSShareEncryptImageDefaultRole角色进入角色详情页面。

    • 权限管理页签单击新增授权,为RAM角色授予步骤2设置的权限策略。具体操作,请参见为RAM角色授权

    • 信任策略页签中,修改RAM角色的信任策略为以下内容,以确定可以将加密镜像共享给哪些共享对象。具体操作,请参见修改RAM角色的信任策略

      • 如果您的自定义镜像需要共享给阿里云账号,请使用如下信任策略进行替换。

        {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "<UID>@ecs.aliyuncs.com"
                ]
              }
            }
          ],
          "Version": "1"
        }
        说明

        其中<UID>为变量,您需要修改为共享对象的阿里云账号ID。如果您的镜像需要共享给多个阿里云账号,需要添加多个共享对象的阿里云账号ID。

      • 如果您是将镜像基于资源目录在企业组织内共享使用,请根据实际场景使用如下信任策略进行替换。

        • 场景一:共享给整个资源目录,需指定资源目录ID

          {
            "Statement": [
              {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Principal": {
                  "Service": "*@ecs.aliyuncs.com"
                },
                "Condition": {
                  "StringEquals": {
                    "sts:ServiceOwnerRDId": "<资源目录ID>"
                  }
                }
              }
            ],
            "Version": "1"
          }
          说明

          其中<资源目录ID>为变量,您需要修改为共享对象的资源目录ID。关于如何查看资源目录ID的具体操作,请参见查看资源目录基本信息

        • 场景二:共享给具体的资源夹,需指定资源夹RDPath,格式为<资源目录ID>/<Root资源夹ID>/……/<当前资源夹ID*>

          {
            "Statement": [
              {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Principal": {
                  "Service": "*@ecs.aliyuncs.com"
                },
                "Condition": {
                  "StringLike": {
                    "sts:ServiceOwnerRDPath": "<资源目录ID>/<Root资源夹ID>/……/<当前资源夹ID*>"
                  }
                }
              }
            ],
            "Version": "1"
          }
          说明

          其中<资源目录ID>/<Root资源夹ID>/……/<当前资源夹ID*>为变量,您需要修改为共享对象的资源夹RDPath。关于如何查看资源夹RDPath的具体操作,请参见查看资源夹基本信息

步骤2:共享者共享加密自定义镜像

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 镜像

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 自定义镜像页签,找到待共享的自定义镜像,在操作列单击共享镜像

  5. 共享镜像对话框中,根据实际的共享镜像场景完成操作。

    • 将镜像共享给其他阿里云账号使用

      1. 对端待共享账号ID处输入共享对象的阿里云账号ID。

      2. 选中安全确认信息:共享镜像后对方可获得该镜像中保存的数据,为防止数据泄露,请您再次确认是否将镜像共享给该UID

      3. 单击确定

    • 基于资源目录在企业组织内共享使用

      1. 共享对象类型右侧单击组织内共享

        说明

        仅开通了资源目录的管理账号或成员账号才可以进行组织内共享,如果您看不到组织内共享入口,请先开通资源目录。具体操作,请参见开通资源目录

      2. 跳转到资源共享控制台完成共享操作。具体操作,请参见创建共享单元

        说明

        选择共享的资源区域配置参数时,资源类型需选择ECS镜像

    镜像共享成功后,将鼠标悬浮至共享镜像的image.png图标处,可以查看共享对象的阿里云账号ID。

    image.png