当您需要使用KMS加密ECS的云盘、快照、镜像等资源时,需要先授予ECS访问KMS密钥的权限。当您需要将加密镜像、快照共享给其他阿里云账号时,需先授予被共享账号的ECS服务访问共享账号KMS密钥的权限。
加密ECS资源
ECS和KMS深度集成。当您需要对ECS的云盘、快照、镜像等资源进行加密时,可直接选择使用KMS的密钥,并使用KMS提供的信封加密技术对云资源进行数据加密。您可以选择使用KMS提供的服务密钥也可使用您自行创建的用户主密钥进行加密。关于加密密钥的更多说明,请参见加密密钥。
使用服务密钥
KMS提供了免费的服务密钥(由云产品自己创建和管理)供云产品服务端加密。您可以选择使用ECS的服务密钥对ECS实例中的某些资源进行加密。由于服务密钥由ECS自己创建,ECS可以直接使用,不需要获取您的任何权限。
使用用户主密钥
如果您不想使用服务密钥,也可选择使用自行创建或管理的用户主密钥,此时需要您授权允许ECS使用您提供的KMS密钥。此授权操作的大致流程为:
在您的授权下,阿里云会为您创建一个系统默认角色
AliyunECSDiskEncryptDefaultRole
,该角色拥有访问KMS的权限。ECS通过扮演该角色,使用KMS内的用户主密钥。
具体授权流程如下:
首次选择KMS的主密钥加密ECS资源时,例如创建加密云盘,界面会提示先授权。
单击同意授权,系统会自动创建
AliyunECSDiskEncryptDefaultRole
角色并授予权限。
授权完成后,即可在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. 将资源共享给其他阿里云账号
本文主要介绍加密操作涉及的权限部分,其他内容请参见: