各知名云平台对于 MySQL TDE的支持汇总和对比

embedded/2025/1/8 18:55:26/
MySQL Community TDE功能介绍:

TDE: Transparent Data Encryption, 也就是透明传输加密。在MySQL community官网上有这样原文介绍:With MySQL version 5.7.12 and up, Oracle continues to improve MySQL’s security features by adding MySQL Enterprise Transparent Data Encryption (TDE) for InnoDB tables stored in innodb_file_per_table tablespaces.

因此,对于TDE功能,其实社区版MySQL5.7是不支持的,只有Enterprise版本才支持。

而后到了MySQL 8.0版本,社区版也支持TDE插件了: All MySQL editions provide a component_keyring_file component and keyring_file plugin, each of which stores keyring data in a file local to the server host.【1】

那么,对于各大云厂商,对这个MySQL TDE的支持都如何呢?

1. AWS:

根据参考文档【2】【3】【4】,很遗憾的是,只有RDS Oracle和 RDS SQL Server支持TDE。 AWS RDS MySQL是不支持TDE的。RDS MySQL仅支持存储层面启用KMS Key进行 data at rest的加密,也就是RDS实例底层EBS卷的加密。

 RDS Oracle 和 RDS SQL Server 都是通过选项组的方式来启用透明传输加密的。

2. Azure SQL:

Azure SQL很有意思,它是支持MySQL TDE的。而且Azure云上SQL TDE功能的实现,跟社区版MySQL不同,不同在如下方式:

官方文档【5】中写到:“在 Azure SQL 数据库客户启用 TDE 后,系统会自动为其创建和管理密钥。 可以在数据库和服务器级别启用静态加密。 从 2017 年 6 月开始,会在新创建的数据库上默认启用透明数据加密 (TDE)。” 

后续可以通过alter database,在database级别启用TDE:

ALTER DATABASE(Azure SQL 数据库SET ENCRYPTION ON/OFF 会加密或解密数据库
3. 阿里云:

阿里云官方文档【6】中有如下说明:

"RDS提供MySQL、PostgreSQL和SQL Server的透明数据加密(Transparent Data Encryption,简称TDE)功能。 MySQL和PostgreSQL版的TDE由阿里云自研,SQL Server版的TDE是基于SQL Server企业版的功能改造而来。 当RDS实例开启TDE功能后,您可以指定参与加密的数据库或者表。"

而启用 RDS MySQL的 TDE功能以后,后续创建的table,需要手动启用加密:

create table xxx ENCRYPTION='Y';

只有在Table级别启用TDE,没有在database级别控制的

MySQL community有个参数来控制:

default_table_encryption system variable defines the default encryption setting for schemas and general tablespaces. 

但是这个参数在阿里云中没有暴露,也就是不允许RDS MySQL来进行更改。(截至2025年1月3日)

后续不知道是否会有database级别自动启用TDE的改进,大家感兴趣的可以多关注一下官网和官方文档。

参考文档:

【1】MySQL :: MySQL 8.0 Reference Manual :: 17.13 InnoDB Data-at-Rest Encryption

【2】https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.TDE.html

【3】Oracle 透明数据加密 - Amazon Relational Database Service

【4】加密 Amazon RDS 资源 - Amazon Relational Database Service

【5】https://learn.microsoft.com/zh-cn/azure/security/fundamentals/encryption-atrest

【6】RDS提供的数据加密功能_云数据库 RDS(RDS)-阿里云帮助中心


http://www.ppmy.cn/embedded/152350.html

相关文章

vulnhub靶场-potato(至获取shell)

arp-scan -l 扫描IP 使用御剑端口扫描扫描端口,扫到了80和7120两个端口,其中7120为ssh端口 使用dirb http://192.168.171.134 扫描目录 发现info.php 访问为phpinfo界面 访问192.168.171.134为一个大土豆,没什么用 所以我们从ssh入手 盲…

Couchbase 和数据湖技术的区别、联系和相关性分析

Couchbase 和数据湖技术(如 Delta Lake、Apache Hudi、Apache Iceberg)分别是两类不同的数据存储与管理系统,但它们也可以在特定场景中结合使用,以下是它们的区别、联系和相关性分析: 区别: 1. 核心用途&a…

Docker: 教程07 - ( 如何对 Docker 进行降级和升级)

如果我们使用 docker 来管理容器,那么保持 docker 引擎的更新将会是十分重要的,这一篇文章我们将会讨论如何对Docker 进行降级和升级。 准备工作 - docker 环境 我们需要拥有一个安装好 docker 的运行环境。 如果你需要了解如何安装 docker 可以通过如…

Go语言的数据库交互

Go语言的数据库交互 引言 在现代软件开发中,数据库是应用程序不可或缺的组成部分。无论是处理用户数据、管理资产信息,还是记录日志,数据库都发挥着重要作用。Go语言以其简洁的语法和优异的并发性能,逐渐成为开发高效、可扩展应…

iOS - 线程与AutoreleasePoolPage

1. AutoreleasePoolPage 结构 struct AutoreleasePoolPage {static pthread_key_t key; // 只占用一份内存空间magic_t const magic;id *next;pthread_t const thread;AutoreleasePoolPage *parent;AutoreleasePoolPage *child;// ...其他成员变量 } pthread 的 TLS (Th…

博客标题:使用Go和RabbitMQ构建高效的消息队列系统

引言 在现代分布式系统中,消息队列扮演着至关重要的角色。它们允许不同组件之间异步通信,从而提高系统的可扩展性和可靠性。今天我们将探讨如何利用Go语言和流行的开源消息代理RabbitMQ来创建一个简单但功能强大的消息队列系统。 环境准备 为了确保你能够…

如何二次封装组件(vue3版本)

在开发 Vue 项目中我们一般使用第三方组件库进行开发,如 Element-Plus, 但是这些组件库提供的组件并不一定满足我们的需求,这时我们可以通过对组件库的组件进行二次封装,来满足我们特殊的需求。 对于封装组件有一个大原则就是我们应该尽量保…

Cursor 实战技巧:好用的提示词插件Cursor Rules

你好啊,见字如面。感谢阅读,期待我们下一次的相遇。 最近在小红书发现了有人分享这款Cursor提示词的插件,下面给各位分享下使用教程。简单来说Cursor Rules就是可以为每一个我们自己的项目去配置一个系统级别的提示词,这样在我们…