【OSS安全最佳实践】降低因账号密码泄露带来的未授权访问风险

news2024/9/21 11:02:27

如果因个人或者企业账号密码泄露引发了未经授权的访问,可能会出现非法用户对OSS资源进行违法操作,或者合法用户以未授权的方式对OSS资源进行各类操作,这将给数据安全带来极大的威胁。为此,OSS提供了在实施数据安全保护时需要考虑的多种安全最佳实践。

重要

以下最佳实践遵循一般准则,并不等同完整的安全解决方案。这些最佳实践可能不适合您的环境或不满足您的环境要求,仅建议将其视为参考因素。请您在日常使用中提高数据安全意识并时刻做好内容安全防范措施。

修改ACL为私有访问权限

除非您明确要求包括匿名访问者在内的任何人都能读写您的OSS资源,包括存储空间(Bucket)以及文件(Object),否则请勿将Bucket或者Object的读写权限ACL设置为公共读(public-read)或者公共读写(public-read-write)。设置公共读或者公共读写权限后,对访问者的权限说明如下:

  • 公共读写:任何人(包括匿名访问者)都可以对该Bucket内的Object进行读写操作。

    警告

    互联网上任何用户都可以对该Bucket内的Object进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。

  • 公共读:只有该Bucket的拥有者可以对该Bucket内的Object进行写操作,任何人(包括匿名访问者)都可以对该Bucket内的Object进行读操作。

    警告

    互联网上任何用户都可以对该Bucket内的Object进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。

鉴于公共读或者公共读写权限对OSS资源带来的数据安全风险考虑,强烈建议您将Bucket或者Object的读写权限设置为私有(private)。设置为私有权限后,只有该Bucket拥有者可以对该Bucket以及Bucket内的Object进行读写操作,其他人均无访问权限。因此,在修改ACL为私有访问权限之前,请自行确认业务本身不受影响。

您可以通过多种方式将Bucket或者Object的读写权限设置为私有,具体步骤请参见设置存储空间读写权限ACL和设置文件读写权限ACL。

避免代码明文使用AccessKey或本地加密存储AccessKey

代码中明文使用AccessKey会由于各种原因的代码泄露导致AccessKey泄露。而本地加密存储AccessKey也并不安全,原因是数据的加解密内容会存放在内存中,而内存中的数据可以被转储。尤其是移动App和PC桌面应用极易出现此类问题,攻击者只需要使用某些注入、API HOOK、动态调试等技术,就可以获取到加解密后的数据。

服务端可以通过阿里云SDK托管凭据插件的方式规避代码明文使用AccessKey,解决因源码或编译产物泄露而导致的AccessKey泄露问题。有关阿里云SDK托管凭据插件的工作原理及使用方式的更多信息,请参见多种阿里云SDK的托管凭据插件。

重要

此方案不适用于客户端,请不要以任何方式在客户端内置任意形式的AccessKey。

以RAM用户的方式访问OSS

阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。

创建RAM用户后,您可以控制这些RAM用户对资源的操作权限。当您的企业存在多用户协同操作资源的场景时,可以让您避免与其他用户共享阿里云账号密钥,按需为用户分配最小权限,从而降低企业的信息安全风险。创建RAM用户的具体步骤,请参见创建RAM用户。

RAM用户创建完成后,您可以通过RAM Policy为RAM用户授权的方式来集中管理您的用户(例如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限。例如,您可以通过以下RAM Policy阻止指定RAM用户访问目标存储空间examplebucket及examplebucket内的文件或目录。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "oss:*",
            "Resource": [
                "acs:oss:*:*:examplebucket",
                "acs:oss:*:*:examplebucket/*"
            ]
        }
    ]
}

您还可以通过RAM Policy拒绝RAM用户删除某个Bucket下任意文件、或者授权RAM用户仅拥有读取某个Bucket资源的权限等。有关RAM Policy常见场景的授权示例,请参见RAM Policy常见示例。

启用多因素认证

多因素认证MFA(Multi Factor Authentication)是一种简单有效的最佳安全实践。启用MFA后,登录阿里云控制台时需要输入账号密码和MFA设备实时生成的动态验证码,在账号密码泄露时也可以阻止未授权访问,提高账号安全性。

您可以选择为阿里云账号启用MFA,具体步骤请参见为阿里云账号绑定多因素认证设备。您还可以选择为RAM用户启用MFA,具体步骤请参见为RAM用户绑定多因素认证设备。

STS临时授权访问OSS

您可以通过STS服务给其他用户颁发一个临时访问凭证。该用户可使用临时访问凭证在规定时间内访问您的OSS资源。临时访问凭证无需透露您的长期密钥,使您的OSS资源访问更加安全。

有关STS临时授权访问OSS的具体步骤,请参见开发指南中的使用STS临时访问凭证访问OSS。

Bucket Policy

Bucket Policy是阿里云OSS推出的针对Bucket的授权策略,您可以通过Bucket Policy授权其他用户访问您指定的OSS资源。通过Bucket Policy,您可以授权另一个账号访问或管理整个Bucket或Bucket内的部分资源,或者对同账号下的不同RAM用户授予访问或管理Bucket资源的不同权限。

配置Bucket Policy时,请遵循以下权限最小化原则,从而降低数据安全风险。

  • 避免授权整个Bucket

    资源授权过大容易导致其他用户数据被非法访问,所以在实际生产业务中请限制指定资源途径,避免授权整个Bucket。

  • 不授权匿名访问

    允许匿名访问意味着用户只需要知道Endpoint和Bucket名称就可以正常访问OSS,而EndPoint是可以枚举的,Bucket名称也可以从已授权的访问文件URL中提取。由此可见,授权允许匿名访问会带来极大的安全风险。

  • 设置合理的Action

    通过控制台的图形化配置Bucket Policy时,简单设置中的四类授权操作(Action)仅为用户提供了一种便捷的Policy设置方法,每类Action并不一定完全符合您的业务需求,建议您结合业务需求并通过高级设置的方式给予授权用户最小的权限。例如,生成只读权限往往会包含oss:ListObjectsoss:GetObject等。但是一般场景下的文件下载只需要oss:GetObject权限即可。

  • 启用HTTPS访问

    启用HTTPS访问可以解决网络中间人攻击以及域名劫持等问题。另外Chrome浏览器也对HTTP协议进行干预,例如HTTPS站点默认无法加载HTTP资源。基于以上原因,请务必开启HTTPS,以最低成本解决多种风险问题。

  • 限定来源的IP地址

    如果访问OSS资源的IP地址是固定可枚举的,强烈建议配置IP地址。

例如,通过Bucket Policy授予名为Test的RAM用户通过SDK或者命令行工具ossutil下载目标存储空间examplebucket下指定目录log下所有文件的权限:

policy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2152145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6. Python 输出长方形,直角三角形,等腰三角形

使用Python输出长方形,直角三角形,等腰三角形 这里主要使用python语言里的循环知识,具体说是Python语言里的循环嵌套, 注意,在实际使用中,循环嵌套一般最多到达3层,嵌套太多会影响到程序执行。…

JavaWeb - 5 - 前端工程化

一.前后端分离开发 前后端混合开发 缺点:沟通成本高,分工不明确,不便管理,不便维护拓展 前后端分离开发 当前最为主流的开发模式:前后端分离 前后端分离开发中很重要的是API接口文档(如:YApi&…

蓝队技能-应急响应篇Web内存马查杀JVM分析Class提取诊断反编译日志定性

知识点: 1、应急响应-Web内存马-定性&排查 2、应急响应-Web内存马-分析&日志 注:传统WEB类型的内存马只要网站重启后就清除了。 演示案例-蓝队技能-JAVA Web内存马-JVM分析&日志URL&内存查杀 0、环境搭建 参考地址:http…

C++函数重载完成日期类相关计算

本文内容如下: 1.创建类以及函数的声明2.日期加减天数1.月份天数2.函数实现 3.日期比较大小4.日期减日期1.日期的前置和后置加加2.日期减日期的实现 5.内置类型的cout和cin本文代码如下: 要完成日期类的相关计算要创建自定义的类型,然后用函数…

Java制作拼图小游戏——基础编程实战(详细代码注释与流程讲解)

目录 前言 涉及知识点 准备工具 Java开发环境 图片资源 最终效果 ——需求分析 登录界面 功能描述 需求分析 功能需求 游戏主界面 功能描述 需求分析 功能需求 游戏菜单 游戏胜利界面 框架搭建 总结 编码 编码顺序 搭建App实现程序的入口 完成User用户类和…

计算总体方差statistics.pvariance()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 计算总体方差 statistics.pvariance() [太阳]选择题 根据给定的Python代码,运行结果为? import statistics data [1, 2, 3, 4, 5] print(f"【显示】data{…

【C++掌中宝】深入解析C++命名空间:有效管理代码的利器

文章目录 前言1. namespace 的价值2. namespace 的定义3. 命名空间的本质4. 嵌套的命名空间5. 命名空间的使用6. using 指令7. 补充结语 前言 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外&am…

2.Seata 1.5.2 集成Springcloud-alibaba

一.Seata-server搭建已完成前提下 详见 Seata-server搭建 二.Springcloud 项目集成Seata 项目整体测试业务逻辑是创建订单后(为了演示分布式事务,不做前置库存校验),再去扣减库存。库存不够的时候,创建的订单信息数…

攻防世界Web新手练习区题目(view_source到simple_php)WP

目录 view_source​ robots​ Training-WWW-Robots PHP2​ get_post​ backup​ cookie​ disabled_button​ simple_js​ xff_referer​ weak_auth​ command_execution​ simple_php​ view_source 获取在线场景后访问题目场景 在右键不管用的情况下&#xff0…

尚品汇-秒杀成功下单接口、秒杀结束定时任务-清空缓存数据(五十四)

目录: (1)下单页面 (2)service-activity-client添加接口 (3)web-all 编写去下单控制器 (4)service-order模块提供秒杀下单接口 (5)service-or…

1份可以派上用场丢失数据恢复的应用程序列表

无论如何,丢失您的宝贵数据是可怕的。您的 Android 或 iOS 设备可能由于事故、硬件损坏、存储卡问题等而丢失了数据。这就是为什么我们编制了一份可以派上用场以恢复丢失数据的应用程序列表。 如果您四处走动,您大多会随身携带手机或其他移动设备。这些…

豆包Python SDK接入流程

模型与价格 豆包的模型介绍可以看豆包大模型介绍,模型价格可以看豆包定价文档里的“模型推理” - “大语言模型” - “字节跳动”部分。 推荐使用以下模型: Doubao-lite-32k:每百万 token 的输入价格为 0.3 元,输出价格为 0.6 元…

vue组件($refs对象,动态组件,插槽,自定义指令)

一、ref 1.ref引用 每个vue组件实例上&#xff0c;都包含一个$refs对象&#xff0c;里面存储着对应dom元素或组件的引用。默认情况下&#xff0c;组件的$refs指向一个空对象。 2.使用ref获取dom元素的引用 <template><h3 ref"myh3">ref组件</h3&g…

手机切换IP简单方法:掌握技巧,轻松实现IP变换‌

在当今的数字化时代&#xff0c;IP地址作为网络身份的重要标识&#xff0c;对于网络访问、数据传输等方面都起着至关重要的作用。然而&#xff0c;在某些特定场景下&#xff0c;我们可能需要切换手机的IP地址&#xff0c;以满足不同的网络需求。本文将为大家介绍几种手机切换IP…

Linux —— 多线程

一、本篇重点 1.了解线程概念&#xff0c;理解线程与进程区别与联系 2.理解和学会线程控制相关的接口和操作 3.了解线程分离与线程安全的概念 4.学会线程同步。 5.学会互斥量&#xff0c;条件变量&#xff0c;posix信号量&#xff0c;以及读写锁 6.理解基于读写锁的读者写…

Kafka 3.0.0集群部署教程

1、集群规划 主机名 ip地址 node.id process.roles kafka1 192.168.0.29 1 broker,controller Kafka2 192.168.0.30 2 broker,controller Kafka3 192.168.0.31 3 broker,controller 将kafka包上传以上节点/app目录下 mkdir /app 解压kafka包 tar -zxvf kafka_…

BLE 协议之链路层

目录 一、前言二、状态和角色三、Air Interface Packets1、Preamble 字段2、Access Address 字段2.1 静态地址2.2 私有地址 3、PDU 字段3.1 Advertising Channel PDU3.1.1 Header 字段3.1.2 Payload 字段 3.2 Data Channel PDU3.2.1 Header 字段3.2.2 Payload 字段 4、CRC 字段…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第一篇-原理】

如果想直接制作&#xff0c;请看【第二篇】内容 这次做一个这样的东西&#xff0c;通过在2DRT上实时绘制&#xff0c;生成动态的体积纹理&#xff0c;也就是可以runtime的VDB 设想的文章流程: 对原理进行学习制作体积渲染制作实时绘制 第一篇&#xff08;本篇&#xff09;是对“…

Spring MVC 基础 : 文件、cookies的接收 ,REST响应

一、接受文件 在 Spring MVC 中&#xff0c;可以使用 RequestPart 注解来接收文件。这个注解常用于处理复杂的请求&#xff0c;如同时发送 JSON 数据和文件。RequestPart 非常适用于多部分请求&#xff08;multipart requests&#xff09;&#xff0c;这在单个请求中同时发送文…

法定退休年龄计算器,看看你还有多少年退休?

最近延迟退休上了微博热搜&#xff0c;从2025年开始实行。 分享个法定退休年龄计算器&#xff0c;看看你还有多少年退休&#xff1f; 官方出品的计算器&#xff0c;网站地址 https://si.12333.gov.cn/304647.jhtml 输入出生日期和性别就可以。 当然也可以在微信的城市服务。…