当前位置: 首页 > news >正文

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

如果因个人或者企业账号密码泄露引发了未经授权的访问,可能会出现非法用户对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

相关文章:

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

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

视频存储EasyCVR视频监控汇聚管理平台设备录像下载报错404是什么原因?

EasyCVR视频监控汇聚管理平台是一款针对大中型项目设计的跨区域网络化视频监控集中管理平台。该平台不仅具备视频资源管理、设备管理、用户管理、运维管理和安全管理等功能,还支持多种主流标准协议,如GB28181、RTSP/Onvif、RTMP、部标JT808、GA/T 1400协…...

在Spring项目中,两个实用的工具(生成类与映射文件、API自动生成)

尊贵的Spring玩家,是不允许动脑思考的,所以我们要学会复制粘贴 1.生成类与映射文件 背景:在项目编写初期,我们已经设计好了表,后面就需要根据表来撰写实体类(model)和对应的sql语句(dao和mapper)。如果一个项目中&…...

C#基础(16)实践:学生成绩管理系统

简介 通过基础部分的学习,我们已经能进行一些实际应用的开发,学生成绩系统我相信是大家基本在大学期间上程序课必定会经历的一个小项目。 这个小项目看上去简单,但是思考量却不少。 这里就不带着大家一步一步讲解了,因为里面涉…...

git常用命令(patch补丁和解决冲突)

diff/apply方案 使用diff命令生成patch文件,后使用apply命令应用patch到分支,从而实现修改复刻。 生成补丁 git diff > commit.patch 检查补丁 git apply --check commit.patch 应用补丁 git apply commit.patchgit diff --cached > commit.pa…...

数模方法论-整数规划

一、基本概念 非线性规划的应用包括工程设计、资源分配、经济模型等。在求解过程中,由于非线性特性,常用的方法有梯度法、牛顿法、启发式算法等。求解非线性规划问题时,解的存在性和唯一性通常较难保证,且可能存在多个局部最优解…...

【问题随记】在使用 AuthenticationManager 的时候,出现循环依赖问题 —— `java.lang.StackOverflowError`

问题随记 在使用 AuthenticationManager 的时候,出现循环依赖问题 —— java.lang.StackOverflowError,查资料查了两天半,终于找到原因。 2024-06-16T17:54:19.48708:00 ERROR 20672 --- [nio-8789-exec-1] o.a.c.c.C.[.[.[/].[dispatcherS…...

2024年华为杯-研赛F题论文问题一二讲解+代码分享

X射线脉冲星光子到达时间建模 摘要 脉冲星是一类高速自转的中子星,其自转形成规律性脉冲信号,类似于“宇宙中的灯塔”,因此被认为是极为精确的时钟。X射线脉冲星导航利用脉冲星信号为航天器提供时间和空间参考。通过比较脉冲信号到达航天器…...

代码随想录训练营第34天|dp前置转移

62. 不同路径 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,1));for(int i1; i<m;i){for(int j1; j<n; j){dp[i][j]dp[i-1][j]dp[i][j-1];}}return dp[m-1][n-1];} }; dp[i][j]:运动至(i,j)的方…...

乐观锁、悲观锁

一、悲观锁 悲观锁 (Pessimistic Locking)&#xff0c;具有强烈的独占和排他特性。它指的是对数据被外界修改持保守态度。因此&#xff0c;在整个执行过程中&#xff0c;将处于锁定状态。所以&#xff0c;悲观锁是一种悲观思想&#xff0c;它总认为最坏的情况可能会出现&#x…...

Java客户端SpringDataRedis(RedisTemplate使用)

文章目录 ⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码 ⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结 ⛄概述 SpringData是Spring中数据操作的模块&#xff0c;包含对各种数据库的集成&#xff0c;其中对Redis的集成模…...

wsl2桥接网络 ubuntu到弃坑到又跳坑

搜索Hyper-V image.png 如下图进入虚拟交换机管理器 image.png image.png C:\Users\Administrator下存放 ; 这是 WSL 2 的配置文件 [wsl2] processors4 ; 设置 WSL 2 可以使用的最大 CPU 核心数为 4&#xff0c;自行修改 memory4GB …...

WIFI路由器的套杆天线简谈

❝本次推文简单介绍下WIFI路由器的套杆天线。 路由器天线 路由器在这个万物互联的时代&#xff0c;想必大家对其都不陌生。随着科技的发展&#xff0c;常用的路由器上的天线也越来越多&#xff0c;那么问题来了&#xff1a;天线越多&#xff0c;信号越好吗&#xff1f;路由器…...

希尔排序(C语言实现)

目录 1.希尔排序( 缩小增量排序 ) 2.动图 ​编辑 3.代码实现 预排序实现 子序列排列实现 单趟排序实现 对整组数进行子排序 希尔排序代码 代码测试 时间复杂度分析 希尔排序的特性总结&#xff1a; 1.希尔排序( 缩小增量排序 ) 基本思想&#xff1a; 1.先选定一个…...

LLVM 中的Value、User、Use设计

概述 LLVM是一个强大的编译器基础设施&#xff0c;提供了一套丰富的库&#xff0c;用于构建编译器的前端和后端。在LLVM中&#xff0c;Value、User和Use是几个核心的概念&#xff0c;它们之间有着紧密的关系 Value Value是LLVM中表示所有可计算的值的基类&#xff0c;例如常…...

C++智能指针入门教程(C++11)

智能指针 1.定义 ​ C中的智能指针是一种用于自动管理动态分配的内存的模板类&#xff0c;它们通过封装原始指针来提供自动的内存管理功能&#xff0c;从而避免了内存泄漏和悬挂指针等问题。C标准库中提供了几种智能指针类型&#xff0c;其中最常用的是std::unique_ptr、std:…...

常用工具推荐!分享7款AI论文修改软件工具网站

在当今学术研究和写作领域&#xff0c;AI论文修改软件工具已经成为了不可或缺的助手。这些工具不仅能够帮助研究人员提高写作效率&#xff0c;还能确保论文的质量和原创性。以下是七款值得推荐的AI论文修改软件工具网站&#xff0c;其中特别推荐千笔-AIPassPaper。 1. 千笔-AI…...

怎么解除BitLocker对磁盘的加密?

BitLocker是一种Windows操作系统内置的加密功能&#xff0c;用于保护用户的数据安全。它通过对整个磁盘进行加密&#xff0c;防止数据被未经授权的用户访问。BitLocker主要用于保护笔记本电脑和台式机中的重要数据&#xff0c;尤其是在设备丢失或被盗的情况下。怎么解除BitLock…...

群晖使用Docker部署WPS Office并实现异地使用浏览器制作办公文档

文章目录 前言1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 前言 想象一下这个场景&#xff1a;如果遇到周末紧急需要改方案&#xff0c;但团队成员都在各自家中&#xff0c;这个时候如果大家能够轻松访问这个…...

Unity3d 以鼠标位置点为中心缩放视角(正交模式下)

思路整理&#xff1a; 缩放前&#xff1a; 缩放后&#xff1a; 记录缩放前鼠标的屏幕坐标 A&#xff0c;计算鼠标位置对应的世界坐标 A_world 缩放完成后&#xff0c;根据当前屏幕下A所对应的世界坐标A1_world 计算A1_world 和 A_world 的偏移量 移动摄像机 代码&#xff…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...