禁止RAM用户创建未加密的云盘

ECS实例的云盘未加密可能会带来数据泄露风险,对于部分高安全合规要求的企业,针对企业账号下所有RAM子账号可能要求必须使用加密以保护数据的机密性。本文介绍使用RAM自定义权限策略,禁止RAM用户创建未加密的云盘。

背景信息

云盘中的数据可能包含敏感信息(如商业机密、用户数据、财务信息等)。如果没有加密,这些数据在存储或传输过程中可能被未经授权的人员窃取或泄露。加密云盘可以有效防止黑客通过虚拟化层或物理层的攻击窃取数据,即使云盘被物理获取,数据也无法被直接读取,确保数据在存储过程中不被篡改,保证数据的完整性和真实性,从而保护用户隐私。 

许多行业(如金融、医疗、政府等)有严格的数据保护法规(如《数据安全法》、《个人信息保护法》等),要求对敏感数据进行加密存储。加密云盘可以帮助企业满足合规性审计的要求,证明其数据存储符合安全标准。

操作步骤

以下提供了一个示例,要求RAM用户(Alice)在创建ECS实例时或单独创建云盘时,必须让云盘加密。

  1. RAM控制台,创建RAM用户(Alice)。

    具体操作,请参见创建RAM用户

  2. RAM控制台,创建权限策略(ecs-disk-encrypt-control),选择脚本编辑,使用如下策略内容。

    说明

    以下策略表示:在创建ECS实例选择系统盘与数据盘,或者单独创建云盘时,如果不勾选云盘加密,则会创建失败。

    {
      "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"
        }
      ]
    }
  3. 继续创建权限策略(ecs-admin),选择脚本编辑,使用如下策略内容。

    说明

    以下策略表示:拥有管理云服务器ECS相关的权限(包括购买,管理,查看ECS实例等),在此示例中用于模拟云服务器ECS的管理员,您可以按实际需求对策略进行调整。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ecs:*",
            "ecs-workbench:*",
            "vpc:CheckCanAllocateVpcPrivateIpAddress",
            "vpc:DescribeVpcs",
            "vpc:DescribeVSwitches",
            "bss:ModifyAgreementRecord",
            "bss:DescribeOrderList",
            "bss:DescribeOrderDetail",
            "bss:PayOrder",
            "bss:CancelOrder"
          ],
          "Resource": "*"
        }
      ]
    }
  4. RAM控制台,为RAM用户(Alice)授权。

    其中,授权范围选择账号级别,授权主体选择RAM用户(Alice),权限策略选择上一步创建的自定义策略(ecs-disk-encrypt-controlecs-admin)。具体操作,请参见RAM用户授权

    image

结果验证

使用RAM用户(Alice)登录阿里云控制台

具体操作,请参见RAM用户登录阿里云控制台

验证项一:购买ECS实例时未对云盘加密

  1. 访问实例购买页

  2. 选择自定义购买页签。

  3. 选择付费类型、地域、实例规格、镜像等配置。并且系统盘数据盘不勾选加密。具体操作,请参见自定义购买实例image

  4. 确认下单后提示创建失败。

验证项二:单独创建云盘时未对云盘加密

  1. 访问ECS控制台-云盘

  2. 云盘页签,单击创建云盘

  3. 在创建云盘页面中,设置云盘的配置参数,不勾选加密。具体操作,请参见创建空数据盘image

  4. 确认下单后提示创建失败。

    image