访问控制(RAM)|云上安全使用AccessKey的最佳实践

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。

内容介绍:

一、凭证管理的基本原则

二、云上安全使用AccessKey的最佳实践

 

本次分享的内容是云上安全使用AccessKey的最佳实践。

 >>>欢迎点击查看阿里云凭证管理与安全最佳实践专题页

一、凭证管理的基本原则

前面的课程中提到过凭证管理的基本原则,其核心包括两部分,一是缩短暴露时长,二是缩小暴露面积。如今很多手机APP都无需填写用户名和密码,只需通过手机号加验证码的方式即可实现注册和登录。验证码的有效期通常只有五分钟,超过这个时间,验证码就会失效,这体现了其缩短暴露时长的原则。对于缩短暴露面积,最常见的安全风险如AK泄露,如研发人员把AK明文写到代码中,又上传到了公开的仓库中,在世界范围内,只要能看到仓库的人都可以看到该AK的信息,暴露面积很大。

image.png

基于两大核心原则,在云上分为两大身份类型。第一类是人员身份,企业有很多的员工,人员身份往往对应到企业员工中具体的个人;第二类是程序身份,程序身份对应到业务甚至环境中,它需要通过AK等方式访问阿里云的API,以获取数据或进行运维管理操作。

 

二、云上安全使用AccessKey的最佳实践

对于程序身份来说,基本包括如下几个场景:

image.png

1、临时凭据

如客户的应用部署在阿里云上,其本身没有多云诉求,这种情况下,推荐使用临时凭据(STS token)的方案,类似于有一定有效期的手机验证码,使用临时的存在有效期的STS token就体现了缩短暴露时长的原则,可以极大降低凭据泄露的风险。

2、固定AK

如客户的应用需要在多云部署,或部署在自己云下的IDC上。此时,也需要访问阿里云的资源,使用固定AK无可避免。安全使用固定AK应遵循凭证管理的两大原则,第一条,缩短暴露时长,对固定AK进行周期性的轮转,设定时间替换旧的AK,降低暴露时长。第二条,缩小暴露面积,可以通过集中化管控,通过加密的手段确保未经授权的人无法直接接触到明文的AK

针对固定AK的使用场景,我们推荐通过KMS凭据管家来实现AK的安全使用。

image.png

1)解决方案及客户价值

我们可以将固定AK使用凭据的形式统一的存放在KMS凭据管家中。开发人员在应用程序中进行相应的配置,通过凭据名称实现动态获取;同时,KMS凭据管家还支持对固定AK进行定期自动轮转,无需手动操作;此外,开发人员也无需感知;最后,KMS还支持对凭据进行自动加密,保证AK加密存储的,并且KMS和阿里云平台结合度较高。

如此,一方面,我们可以统一集中管理AK的配置,另一方面通过加密和轮转的方式,可以极大降低AK泄露的风险,减少安全隐患。

2)实际操作演示

进入KMS控制台,首先在“实例管理”中根据企业自身需要创建KMS实例并购买相应规格的实例。在购买、使用KMS实例后,进入密钥管理页面,创建用户主密钥用以凭据加密。点击创建密钥,选择对称密钥类型,对于加密主密钥,可以开启自动轮转。

在这创建凭据之前,还需要进行一些授权行为,需要创建受信给KMSRAM角色,并赋予相应的权限。进入RAM控制台,点击“创建角色”,“可信实体类型”选择阿里云服务,选择“受信服务”密钥管理服务。创建好角色,并赋予相应权限之后,KMS就会通过扮演角色对AK进行集中的管理和轮转。

接下来,开始创建凭据,进入KMS凭据管理页面,选择RAM凭据,点击“创建凭据”,选择需要管理的创建有AKRAM用户,“加密主密钥”中选择之前在“密钥管理”中创建的用户主密钥,开启自动轮转,这样KMS即可实现对AK的自动轮转。

应用程序要想获取AK凭据,需要先创建应用接入点。进入接入点页面,首先创建“权限策略”。但要注意,如果应用程序不在阿里云上,则需要选择“KMS共享网关”作用域,通过公网获取凭证。如果应用部署在云上,就可以选择相应的KMS实例,这样就可以通过VPC接入地址来获取凭据了。

接着配置相应的权限。在完成“权限策略”的创建之后,再创建“应用接入点”,如果应用部署在云下,则选择“标准创建”的创建模式,“认证方式”选择ClientKey,输入自定义的加密口令权限策略,使用创建的权限策略。如果应用部署在云上,则可以直接使用快速创建。点击“确定”,浏览器会自动下载ClientKey。这样,就可以通过ClientKeyAK程序中获取AK的凭证了。

创建接入点之后,写入了一段Java的程序示例。

<dependencies>

<dependency>

    <groupId>com.aliyun</groupId>

   <artifactId>aliyun-java-sdk-core</artifactId>

    <version>4.6.4</version>

</dependency>

<dependency>

    <groupId>com.aliyun</groupId>

   <artifactId>aliyun-java-sdk-core-managed-credentials-provider

</artifactId>

    <version>1.3.3</version>

</dependency>

该案例中使用的是RAM凭据插件的sdk。首先需要进行一定的配置:

将下载的ClientKey放到程序中,其中ClientKey包含两个文件,一个是JSON文件,是应用身份凭据的内容,另一个是txt文件,是凭据口令。然后将两个文件放到resources下,然后创建名为managed_credentials_providers.proper

ties的配置文件,并在该文件中指定ClientKey文件所在的文件路径。至此,完成了相应的配置。

使用KMS SDK提供的ProxyAcsClient,指定需要获取的凭证名称,KMS SDK就可用自动使用配置的ClientKey获取托管在KMS上的AK,并用AK初始化aliyun-java-sdkClient。然后,就可以使用Client访问阿里云。

我们也可以查看AK拥有的权限,以课上托管的是app-01RAM用户的AK为例:

{

  Version: 1,

Statement: [

      {

              Effect: Allow,

              Action: ecs:DescribeInstanceAttribute,

              Resource:acs:ecs:*1849504696059831:instance/i-bp15l4

47c3217m5ezjdm,

          }

]

}

对该RAM用户,我们分配了一个自定义策略,限制其只能调用ECSDescribeInstanceAttribute API,查询确定实例的实例属性。

在代码中,可以查询实例的实例属性,以及没有权限的ECS实例。运行程序,可以看到有权限的实例可以正常返回,没有权限的实例会报错,提示“没有权限”。

image.png

以上是关于云上安全使用AccessKey最佳实践的所有内容,总之,如果应用没有部署在阿里云上,建议优先使用(STS token)的方案;如果应用场景必须使用固定AK,则可以从加密、轮转、集中管理三个方面对AK进行安全加固,也可以使用KMS凭据管理的功能管理AK,保证AK的安全使用。


>>>欢迎点击查看阿里云凭证管理与安全最佳实践专题页

相关实践学习
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
6天前
|
弹性计算 安全 API
访问控制(RAM)|凭证安全管理与最佳实践
本文分享将为您介绍从访问云资源的人员/程序身份两种身份类型,介绍云上凭证的认证方式、安全风险及凭证管理的最佳实践。
102505 7
|
6天前
|
弹性计算 运维 安全
访问控制(RAM)|云上程序使用临时凭证的最佳实践
STS临时访问凭证是阿里云提供的一种临时访问权限管理服务,通过STS获取可以自定义时效和访问权限的临时身份凭证,减少长期访问密钥(AccessKey)泄露的风险。本文将为您介绍产品原理,以及具体的使用步骤。
151109 5
|
6天前
|
云安全 弹性计算 安全
AK泄露了,怎么办?
AccessKey(包含AccessKey ID和Secret)是程序访问的凭证,无异于打开云上资源的大门钥匙,保管好AK是保障云上安全最重要的事情,甚至没有之一。
105649 7
|
6天前
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
529 3
|
Java 数据安全/隐私保护 Android开发
Android C++系列:C++最佳实践3继承与访问控制
整个结构还是比较简单的,从类内部到本包到子类到外部包权限越来越小,比较好理解也比较好记忆。但是在C++中访问控制要复杂很多,因为不仅有属性和方法的访问控制,还有继承时的派生列表访问说明符。今天我们着重了解访问控制。
72 0
|
存储 数据采集 运维
阿里云RAM账号配置SLS数据加工最佳实践
数据加工服务是阿里云SLS推出的面向日志ETL处理的服务,主要解决数据加工过程中转换、过滤、分发、富化等场景。使用数据加工功能时,将涉及数据读写权限以及数据加工操作权限的授予问题。本文档主要介绍:1. 使用主账号为RAM用户授权以使其具有浏览Logstore数据的权限并能够创建和修改数据加工作业;2. 在不同工作场景下使用RAM账号创建或修改数据加工的最佳实践方法。
|
安全 关系型数据库 分布式数据库
PolarDB-X 1.0-用户指南-访问控制-RAM在PolarDB-X中的应用
本文档主要介绍阿里云的访问控制服务RAM的基本概念以及RAM在PolarDB-X中的应用场景。
1677 0
PolarDB-X 1.0-用户指南-访问控制-RAM在PolarDB-X中的应用
|
关系型数据库 分布式数据库 数据库
PolarDB-X 1.0-用户指南-访问控制-在PolarDB-X中使用RAM
本文介绍如何在PolarDB-X中使用RAM的账号体系及权限策略进行资源和权限控制。
389 0
|
6天前
|
安全 网络安全 数据安全/隐私保护
【专栏】IT 知识百科:访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限
【4月更文挑战第28天】访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限。ACL工作原理包括定义规则、匹配规则和执行操作。标准ACL基于源IP过滤,扩展ACL则提供更多筛选条件。时间及用户基础的ACL提供更细化的控制。优点在于增强安全性和精细管理,但管理复杂性和性能影响也是挑战。未来,ACL将趋向智能化和自动化,与更多安全技术结合,以提升网络安全。**
|
6天前
|
网络虚拟化 数据安全/隐私保护 数据中心
【专栏】对比了思科与华为网络设备的基本配置、接口、VLAN、路由、访问控制列表及其它关键命令
【4月更文挑战第28天】本文对比了思科与华为网络设备的基本配置、接口、VLAN、路由、访问控制列表及其它关键命令。尽管两者在很多操作上相似,如设备命名(思科:`hostname`,华为:`sysname`)、查看版本信息(思科:`show version`,华为:`display version`),但在某些方面存在差异,如接口速率设置(两者都使用`speed`和`duplex`,但命令结构略有不同)和VLAN配置(华为的`port hybrid`命令)。