AWS S3加密

Hello大家好。 在本课时我们将讨论S3加密相关的内容。

S3加密相关是认证考试的一个重要的主题考点,您需要了解亚马逊S3的几种不同类型的加密方式。|

首先是静态数据的加密,静态数据加密是指数据存储在亚马逊S3 数据中心的磁盘上时,对数据进行保护;这个很好理解,对存储在磁盘上静止的数据进行加密就是静态数据加密;

然后是传输过程中的数据加密,是指数据发往和离开Amazon S3时对数据进行加密保护。您可以使用安全套接字层/传输层安全性 (SSL/TLS) 或客户端加密来保护传输中的数据。

那对于静态数据加密,有几个不同的选项,我们一起来看一下。

首先大家要知道,这几种加密方式的不同之处主要取决于您选择如何管理加密密钥。

SSE-S3

首先,我们看下S3托管密钥的服务器端加密, 缩写为SSE-S3。

顾名思义这种方式密钥由亚马逊S3服务进行管理,每个对象均使用唯一密钥进行加密;然后作为额外的保护,将使用定期轮换的主密钥在加密这个唯一密钥本身。

使用256位高级加密标准AES-256来加密您的数据。

加密和解密的动作都是在S3进行的,当您的数据写入存储桶时,数据将会被加密;而当从存储桶读取数据时,数据将会被解密。但是这并不意味着数据会明文在网络中传输,因为我们在访问S3时是使用了证书通过HTTPS的方式,当数据通过网络传输时,其实是通过一个加密的隧道。但实际数据本身,一旦到达目的地仍然是明文的。

因此,如果我们有个客户端,客户端将一个对象上传到S3,S3将对其进行加密;然后当客户端从S3中读取该对象时,S3将对其进行解密。

SSE-KMS

第二种加密的选项是在AWS KMS中存储KMS密钥的服务器端加密,缩写为SSE-KMS。

这种方式密钥是由KMS服务进行管理的,KMS即亚马逊的密钥管理服务。您可以使用KMS的AWS托管密钥,或者您也可以创建客户托管密钥对数据进行加密。

加密和解密也是在存储桶上进行的,当客户端将数据写入S3,S3对该数据进行加密;当客户端读取数据时,S3对数据进行解密。

SSE-C

第三种加密的选项称为具有客户提供密钥的服务器端加密,缩写为SSE-C。

这种方式密钥是由客户也就是您进行管理,而不是存储在AWS上。但是加密和解密的动作仍然是在AWS上进行。这种方式提供给客户对于密钥更多的控制权。

以上三种是S3服务器端加密的3种选项。

客户端加密选项

那接下来的加密选项不是服务器端加密,而是客户端加密选项。

客户端加密意味着数据要在客户端完成加密,客户也就是您需要管理加密过程、加密密钥和密钥轮转等等;密钥不会存储在AWS上,你也可以使用KMS的CMK客户托管密钥,将其导出并使用。

客户端加密是在客户端进行,AWS对此一无所知,你自行在客户端加密数据,然后将其上传到S3,这样存储桶内存储的就是加密后的数据;

当您下载数据后,是在客户端侧进行解密。在AWS上无法解密这些数据,因为密钥是由您管理的,可能存储在您的数据中心的某个系统内。

默认加密配置

可以为S3存储桶配置默认加密,配置时可以选择我们想要使用的加密类型,就是前面讲的那些加密选项。

配置后,写入存储桶的所有新的对象将使用您指定的加密类型进行加密。

请注意,这里我重点提到了新的对象,之前在存储桶中已经存在的对象不会被加密。就是说当您启用了默认加密功能,如果您存储桶中在启用前已经存在的对象,他们将不会被加密。新的对象,也就是您启用默认加密后在上传的对象将会被加密。

这里提到的默认加密配置,是使用前面讨论的服务器端加密选项之一。

正如我前面讲到的,启用后S3将在您将对象上传到S3时进行加密,然后在您将其从S3中下载时对其进行解密。

在启用默认加密之前,存储桶中已经存在的对象的加密状态不会更改。

阻止上传未加密的对象

最后,我们来看下如何通过存储桶策略阻止上传未加密的对象。

我们看下这个策略的内容,首先,任何主体,对资源这里配置我们的存储桶的arn的putobject也就是上传对象的操作都是被拒绝的。存储桶ARN后面加上/*,代表我们放入存储桶中的所有对象。

然后注意condition配置,字符串不等于s3:x-amz-servrer-side-encryption的值为AES256。这个存储桶策略的意思是除非上传对象使用SSE-S3进行加密,才允许上传到这个指定的存储桶。如果您希望使用SSE-KMS,就可以用AWS:KMS替换这里的AES256。

然后下面这段策略,前面和上面内容一样,拒绝任何主体上传对象到我们指定的这个存储桶,然后condition配置,null对应s3:x-amz-server-side-encryption值为真。

这段策略的作用是在上传对象时,如果没有对其进行加密,那么就不允许进行上传。

这是一个PUT请求的例子,我们可以在这里看到服务器端加密标头值为AES256,因此这个对象将会被加密并允许上传到这个存储桶。

好的,以上就是本课时的内容,本课时我们讨论了S3加密的内容,感谢大家的观看,希望能够给大家带来帮助。

相关推荐
疯狂吧小飞牛3 小时前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈3 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
小饕4 小时前
苏格拉底式提问对抗315 AI投毒:实操指南
网络·人工智能
hjxu20164 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
斯安4 小时前
车载总线与网络总结
网络
czxyvX4 小时前
009-数据链路层
网络
源远流长jerry5 小时前
RDMA 基本操作类型详解:从双端通信到单端直访
linux·网络·tcp/ip·ip
森林猿5 小时前
java-modbus-读取-modbus4j
java·网络·python
csdn_aspnet5 小时前
AD域网络位置异常深度排错指南:从DNS到GPO的完整诊断链
网络·ad·dns··netlogon
Simon_lca5 小时前
突破合规瓶颈:ZDHC Supplier to Zero(工厂零排放 - 进阶型)体系全攻略
大数据·网络·人工智能·分类·数据挖掘·数据分析·零售