加密相关的权限说明

当您需要使用KMS加密ECS的云盘、快照、镜像等资源时,需要先授予ECS访问KMS密钥的权限。当您需要将加密镜像、快照共享给其他阿里云账号时,需先授予被共享账号的ECS服务访问共享账号KMS密钥的权限。

加密ECS资源

ECS和KMS深度集成。当您需要对ECS的云盘、快照、镜像等资源进行加密时,可直接选择使用KMS的密钥,并使用KMS提供的信封加密技术对云资源进行数据加密。您可以选择使用KMS提供的服务密钥也可使用您自行创建的用户主密钥进行加密。关于加密密钥的更多说明,请参见加密密钥

使用服务密钥

KMS提供了免费的服务密钥(由云产品自己创建和管理)供云产品服务端加密。您可以选择使用ECS的服务密钥对ECS实例中的某些资源进行加密。由于服务密钥由ECS自己创建,ECS可以直接使用,不需要获取您的任何权限。

image

使用用户主密钥

如果您不想使用服务密钥,也可选择使用自行创建或管理的用户主密钥,此时需要您授权允许ECS使用您提供的KMS密钥。此授权操作的大致流程为:

  1. 在您的授权下,阿里云会为您创建一个系统默认角色AliyunECSDiskEncryptDefaultRole,该角色拥有访问KMS的权限。

  2. ECS通过扮演该角色,使用KMS内的用户主密钥。

    image

具体授权流程如下:

  1. 首次选择KMS的主密钥加密ECS资源时,例如创建加密云盘,界面会提示先授权

    image

  2. 单击同意授权,系统会自动创建AliyunECSDiskEncryptDefaultRole角色并授予权限。

    image

授权完成后,即可在ECS中选择到您在KMS已创建的用户主密钥。

跨账号共享加密资源

当您希望将加密的镜像、快照共享给其他阿里云账号或RD组织使用时,由于镜像、快照已经被当前阿里云账号下的KMS密钥加密过,所以需要授权允许被共享账号或RD组织访问当前云账号KMS密钥的权限。授权的大致流程为:在当前共享账号下创建系统默认角色,授权允许被共享账号的ECS服务扮演当前共享账号的系统默认角色,使用当前账号的KMS服务。具体授权流程如下:

1. 创建RAM角色

根据要共享的资源(加密快照/加密镜像),在共享资源的账号下创建可信实体为阿里云账号的RAM角色,具体操作请参见创建可信实体为阿里云账号的RAM角色

  • 共享加密快照时创建的RAM角色:AliyunECSShareEncryptSnapshotDefaultRole。

  • 共享加密镜像时创建的RAM角色:AliyunECSShareEncryptImageDefaultRole。

2. 修改RAM角色的授信主体

信任策略页签,修改信任策略,确定将加密快照、加密镜像共享给哪些被共享账号或RD组织的ECS服务使用。具体操作,请参见修改RAM角色的信任策略。修改后的RAM角色的信任策略内容如下:

场景一:共享给其他阿里云账号

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

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

场景二:共享给RD组织

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

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

场景三:共享给RD组织的某个资源夹

{
  "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的具体操作,请参见查看资源夹基本信息

3. 创建权限策略并授权

如果您的镜像或快照是使用用户主密钥加密,需要创建自定义权限策略并给RAM角色授权,允许ECS访问和使用KMS的指定密钥。详细的授权操作请参见为RAM角色授权。策略信息如下:

重要

如果您的镜像是通过服务密钥加密,需授予系统权限策略AliyunKMSFullAccess权限,策略内容请参见AliyunKMSFullAccess

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

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

4. 将资源共享给其他阿里云账号

本文主要介绍加密操作涉及的权限部分,其他内容请参见: