阿里云 RAM 企业上云实战

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
对象存储 OSS,20GB 3个月
云服务器ECS,u1 2核4GB 1个月
简介: RAM 背景由来 给予 AWS 上的 Code space (代码与软件管理平台)系统数据和备份数据一并被攻击者删除。 企业上云的安全威胁排名 part1 - 云账号及其安全 云平台上多租户隔离的基本主体 阿里云现在所有云产品彼此之前都是隔离,主账号和 RAM 子账号也都是隔离的,彼此不能>互访 同一个主账号 UID 下,不同的云产品默认不能互访,需要在主账号授权的跨产品授权的权限下才能访问 未经过主账号授权的情况下,其他主账号 uid 是不能访问用户自己的云产品和控制台。

RAM 背景由来

给予 AWS 上的 Code space (代码与软件管理平台)系统数据和备份数据一并被攻击者删除。


企业上云的安全威胁排名


afe3b7ba56b51b6af89ad3fea06bb78b4ae24da7


part1 - 云账号及其安全

云平台上多租户隔离的基本主体

  • 1、阿里云现在所有云产品彼此之前都是隔离,主账号和 RAM 子账号也都是隔离的,彼此不能互访
  • 2、同一个主账号 UID 下,不同的云产品默认不能互访,需要在主账号授权的跨产品授权的权限下才能访问
  • 3、未经过主账号授权的情况下,其他主账号 uid 是不能访问用户自己的云产品和控制台。

098cf14aa3ddfa54f01eda4035b9ddf451b43d84

认识云账户

  • 1、统一出账
  • 2、统一开票
  • 3、共享信誉额度

a4204f135aba00fd9720a4769942c090b3f978dc


云账户安全

  • 1、云账户安全就是要保护云资源以防止未授权访问,即便是同个云账号下的不通产品也不能互访,除非云账号自身允许
  • 2、认识云账号凭证(Credentials)
  • 2.1、登陆密码验证(password)
  • 2.2、mfa 多因素验。
  • 2.3、api 访问问(ak/sk)

part2 - 用户身份管理与访问控制

a4204f135aba00fd9720a4769942c090b3f978dc

谁是 user

1、用户自己登陆

2、用户授权自己的 ram 子账号登陆。

3、用户授权别人加的 ram 账号登陆

RAM 核心功能

34fc1c8ba84b1ddfba894affd908c8164cfbe27d

集中用户管理
  • 所有的用户都可以在控制台上统一的可视化界面处理,统一的 api 接入

谁是应用

1、比如阿里云提供的工具,类似 oss  的 brower 

2、客户的应用程序代码(app、服务端程序)通过 sts 或者 云账号的 ak/sk

3、ecs 的 meta 网关信息也可以操作

https://www.alibabacloud.com/help/zh/doc-detail/54579.htm

阿里云RAM的特色

ABAC模型:AttributeBasedAccessControl . 这种是我们常用的自定义 policy 需要自己写控制语句

ABACvsACL: 就是我们常用系统策略,权限粒度小,都是一个管理权限或者只读、只写的权限。

6d84daa2b4fcac72629f467be5145dcc9e12e629

一个实际的授权场景

{
"Version":"1",
"Statement":[ {
"Effect":"Allow", "Action":"ecs:StopInstance", "Resource":"acs:ecs:cn-hangzhou:*:*", "Condition":{
"StringEquals":{ "ecs:tag/env":"production"
}, "Bool":{
"acs:MFAPresent":"true" },
"IpAddress":{ "acs:SourceIp":"42.120.88.0/24"
} }
} ]
}

以上策略意思是 针对  42.120.88.0,允许操作 production 组内的 ecs 实例进行停止操作。

为了方便我们给他分开三块看,这样会比较清晰。

第一块:固定的外层语法不变,即使有多条策略也是在者一个 statement 内部,用 ","  分开。

{

 "Sersion":"1"

"Statement":[

  "这里是第二块"

  ]

}

第二块:我们简称三板斧,因为内容是固定的,只不过变化 value 而已。

1、三板斧就是 effect ,action,resource ,这三个是一组,包含在一个 {} 内,第二条语句要用 "," 隔开写在第二个 {} 内

2、effect :只有 Allow 和 Deny 

3、action :可以写多条时要用 [] 包括,比如 ["acs:ecs:cn-hangzhou:1982222:instance/i-zxxxxesd" , "acs:oss:cn-beijing:1299:bucket/prefix/objet"]

4、action :填写的是你要限制对应的产品的 API 名称,写多个时要用 [] 包括主,比如 [ “ecs:CreateInstance”,"ecs:StopInstance"]

5、product:填写产品名称 slb、ecs 、oss、vpc 等。

6、regionID:cn-shanghai、cn-hangzhou 等

7、uid:云账号 uid

{

   "Sersion":"1"

  "Statement":[

      {

        "Effect":"Allow / deny",

        "Resource":"acs:product:regionid:uid:*",

        "Action:":"apiname"

      },

     {

       "设置并行的第二条语句"

     }

   ]

}

Part 3: 最佳实践

下面我实际操作如果新建 ram 子账号、授权策略

  • 新建账户
834ef553667ff8a4b0b9638e70b56614501b0129
  • 系统策略
414f6319564ea36c6b2716c953e6ddc1992e2c42
  • 自定义策略
12fa730ba0ed2b85494b31cfb51cea4ea9ef4315
  • 使用 RAM 子账号  ak sk 
045d717f1f42e5f2527e7bbb9d6bd328c9f98bed

App 安全天使 STS

514089be1dc091081b46f0853f91c4fa6d3344ca

为什么说是安全天使

当前端上的 APP 不可能直接使用客户的 ak sk ,风险性极高,一但恶意攻击者那到你 APP 数据包,揭秘出源码中的 ak sk ,您的云产品将暴露,任何人都可以操作您子账号下所有授权的产品,即使删除 ak sk 也可能导致服务端的其他业务出现链接异常,由此 sts 应运而生。

临时、最小粒度、可控

  • 1、临时: sts 的令牌有效期是 900-3600 秒,一但过期将失去效力。
  • 2、最小粒度:sts 只能操作角色扮演了策略的对应产品,简单说就是,把用户想授权的各类云产品抽象出各种角色,给每个角色赋予不通的权限,ram 子账号扮演了哪种角色就可以有哪种权限,及时 sts 信息泄露,客户只要删除 sts 角色即可,或者将角色和 ram 子账号解绑,盗取者也没有用了,而且并不影响用户其他使用 ak sk 的服务端业务。
  • 3、可控:生成 sts 是放在用户自己的服务器上所以安全可用。

sts 创建、代码实践

由于 sts 也要新建 ram 子账号存在与 part3 重复的地方,所以建立 ram 子账号的位置我就不演示了。

  • 新建角色,选择用户角色,当前账号,如果选择其他云账号是给其他 云账号下的 子账号授权访问自己的云产品,要区分概念。这里我们给自己的云账号授权,所以默认。
6f54a247e4b38ac337faa9785ee6f660a81abbde
5180b9b69d2a760c92c9747ce348cc24762c7443
  • 给角色创建一条自定义策略或者系统策略都行
d9881b69d8ec0f1b7cf7f33635ec425e6a028a1c
  • 给角色绑定我们刚才自定义的 policy
d59d956fbd96150e22a0db943acd7ca2aea7b79d
  • 让 ram 有权调用角色,这样 ram  子账号就有了角色对应的产品策略,所以要让角色和 ram 关联
753ccac134a4e4ee44b8b0b0b92af454fef091c2
  • 1、最后一部利用服务端的代码,填入我门刚才建立 ram 、角色时得到的所有信息,就能生成 sts 令牌
  • 2、rolearn 就是我们在创建角色时控制台看到的。
  • 3、rolesession 就是角色名称
0acad9403c2b6afcd9b8c37e768640e00bbcc4d9

public class StsServiceSample {
    public static void main(String[] args) {
        String endpoint = "sts.aliyuncs.com";
        String accessKeyId = "<access-key-id>";
        String accessKeySecret = "<access-key-secret>";
        String roleArn = "<role-arn>";
        String roleSessionName = "session-name";
        String policy = "{\n" +
                "    \"Version\": \"1\", \n" +
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Action\": [\n" +
                "                \"oss:*\"\n" +
                "            ], \n" +
                "            \"Resource\": [\n" +
                "                \"acs:oss:*:*:*\" \n" +
                "            ], \n" +
                "            \"Effect\": \"Allow\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";
        try {
            // 添加endpoint(直接使用STS endpoint,前两个参数留空,无需添加region ID)
            DefaultProfile.addEndpoint("", "", "Sts", endpoint);
            // 构造default profile(参数留空,无需添加region ID)
            IClientProfile profile = DefaultProfile.getProfile("", accessKeyId, accessKeySecret);
            // 用profile构造client
            DefaultAcsClient client = new DefaultAcsClient(profile);
            final AssumeRoleRequest request = new AssumeRoleRequest();
            request.setMethod(MethodType.POST);
            request.setRoleArn(roleArn);
            request.setRoleSessionName(roleSessionName);
            request.setPolicy(policy); // Optional
            final AssumeRoleResponse response = client.getAcsResponse(request);
            System.out.println("Expiration: " + response.getCredentials().getExpiration());
            System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
            System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
            System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
            System.out.println("RequestId: " + response.getRequestId());
        } catch (ClientException e) {
            System.out.println("Failed:");
            System.out.println("Error code: " + e.getErrCode());
            System.out.println("Error message: " + e.getErrMsg());
            System.out.println("RequestId: " + e.getRequestId());
        }
    }
}


相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
存储 弹性计算 数据库
阿里云权益中心,助力学生、开发者、企业用云上云无忧
阿里云权益中心支持学生、开发者和企业快速上云,提供“99计划”惠及中小企业和开发者,包括云产品试用、精选优惠和上云扶持。高校用户可通过“云工开物”计划享专属优惠。企业用户可获上云抵扣、1对1服务及成长权益。多种云产品免费试用,降低上云门槛。
阿里云权益中心,助力学生、开发者、企业用云上云无忧
|
1月前
|
自然语言处理
阿里云百炼大模型服务--企业知识检索问答指南
阿里云百炼提供的企业知识检索问答应用可以帮助大家实现让大模型瞬间“开挂”的技能。结合上传的知识数据,大模型识别解析学习文档内容,最终给出生成式回复。我们在通义千问-Turbo/Max大模型基础上,将文件上传、读取、切片、向量化等过程都开发好预置在应用中,实现开箱即用,更能满足您的日常需求。
|
1月前
|
存储 弹性计算 人工智能
2024阿里云开年采购优惠活动,云服务器99计划可领上云代金券
2024阿里云开年采购优惠活动,云服务器99计划可领上云代金券,2024年阿里云3月优惠「开年采购季」云服务器价格表和优惠券领取,99计划云服务器99元一年起、免费领取上云扶持优惠券,不只是云服务器、云数据库、存储、云电脑、域名等均有活动
|
2月前
|
弹性计算
2024年阿里云服务器优惠活动汇总_普惠上云_阿里云优惠
2024年阿里云服务器优惠活动汇总_普惠上云_阿里云优惠,2024阿里云服务器优惠活动政策整理,轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年,云服务器4核16G10M带宽26元1个月、149元半年,阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价,企业用户2核4G5M带宽199元一年,阿里云百科整理2024阿里云优惠活动政策整理、云服务器CPU内存、带宽、系统盘收费价格表
72 0
|
2月前
|
弹性计算 安全 数据库
阿里云优惠活动中心_精选活动_产品优惠_上云首选_普惠好价
阿里云优惠活动中心_精选活动_产品优惠_上云首选_普惠好价
53 0
|
2月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
8天前
|
存储 缓存 Java
阿里云OSS实战从入门到大神
说起阿里云OSS,那作用和功能都是非常强大的,它可以存放图片,音频,视频等资源文件,这些资源文件,你不必存放到服务器的硬盘里,这样既可以节省服务器硬盘空间,又可以降低服务器的读写压力,非常适合大并发的架构。
49 0
|
19天前
|
存储 关系型数据库 数据库
超1/3中国500强企业都在用的「汇联易」,为什么选用阿里云RDS?
迎峰而上:汇联易依托阿里云RDS通用云盘,加速业务智能化升级
超1/3中国500强企业都在用的「汇联易」,为什么选用阿里云RDS?
|
1月前
|
弹性计算 固态存储 调度
2024年阿里云服务器配置选择指南_个人和企业如何选择ECS实例规格?
2024年阿里云服务器配置选择指南_个人和企业如何选择ECS实例规格?CPU内存、公网带宽和系统盘怎么选择?个人用户选择轻量应用服务器或ECS通用算力型u1云服务器,企业用户选择ECS计算型c7、通用型g7云服务器,阿里云百科分享阿里云服务器配置选择方法
|
1月前
|
存储 安全 网络协议
2024阿里云上云采购季活动,云服务器计算型c8a、通用型g8i/g8a/g8y实例区别及价格参考
在阿里云2024年的上云采购季活动中,除了以往活动中有的轻量应用服务器和经济型e、通用算力型u1、计算型c7、通用型g7实例之外,阿里云还新增了计算型c8a、通用型g8i/g8a和g8y实例规格,这些都是具有超高性能的AMD&Intel&倚天第八代云服务器,那么这几个云服务器实例规格的性能及适用场景是怎样的呢?本文为大家介绍阿里云计算型c8a、通用型g8i/g8a和g8y实例规格性能及适用场景。
367 0
2024阿里云上云采购季活动,云服务器计算型c8a、通用型g8i/g8a/g8y实例区别及价格参考

热门文章

最新文章