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

本文涉及的产品
访问控制,不限时长
密钥管理服务KMS,1000个密钥,100个凭据,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的安全使用。


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

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
1月前
|
存储 安全 OLAP
AnalyticDB安全与合规:数据保护与访问控制
【10月更文挑战第25天】在当今数据驱动的时代,数据的安全性和合规性成为了企业关注的重点。AnalyticDB(ADB)作为阿里云推出的一款高性能实时数据仓库服务,提供了丰富的安全特性来保护数据。作为一名长期使用AnalyticDB的数据工程师,我深知加强数据安全的重要性。本文将从我个人的角度出发,分享如何通过数据加密、访问控制和审计日志等手段加强AnalyticDB的安全性,确保数据的安全性和合规性。
57 2
|
4月前
|
安全 数据库 数据安全/隐私保护
|
4月前
|
安全 数据安全/隐私保护 开发者
|
4月前
|
安全 Linux 数据库
|
4月前
|
安全 数据安全/隐私保护
|
4月前
|
存储 监控 安全
Linux存储安全:访问控制的实践与策略
【8月更文挑战第18天】Linux存储安全:访问控制的实践与策略
75 0
|
6月前
|
存储 安全 PHP
安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制&文件管理模块&包含&上传&遍历&写入&删除&下载&安全
安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制&文件管理模块&包含&上传&遍历&写入&删除&下载&安全
|
7月前
|
弹性计算 运维 安全
访问控制(RAM)|云上程序使用临时凭证的最佳实践
STS临时访问凭证是阿里云提供的一种临时访问权限管理服务,通过STS获取可以自定义时效和访问权限的临时身份凭证,减少长期访问密钥(AccessKey)泄露的风险。本文将为您介绍产品原理,以及具体的使用步骤。
151399 5
|
7月前
|
存储 安全 数据库
InfluxDB安全机制:用户认证与访问控制
【4月更文挑战第30天】InfluxDB的安全机制聚焦于用户认证和访问控制,包括启用默认禁用的用户认证,创建和管理加密密码的用户,以及实施细粒度的权限和角色管理。建议启用认证、设置强密码,合理分配权限,定期更新和审计,以及使用HTTPS确保数据传输安全,以增强数据库安全性。
|
6月前
|
敏捷开发 Web App开发 测试技术
阿里云云效产品使用问题之钉钉绑定主帐号和RAM 有什么区别么
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。