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加密的内容,感谢大家的观看,希望能够给大家带来帮助。

相关推荐
yeyuningzi2 分钟前
Debian 12环境里部署nginx步骤记录
linux·运维·服务器
EasyCVR1 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
明月看潮生2 小时前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
龙哥说跨境2 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我3 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023913 小时前
06 网络编程基础
java·网络
pk_xz1234564 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强4 小时前
Linux之sed命令详解
linux·运维·服务器
海绵波波1074 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
九河云6 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws