PostgreSQL透明数据加密 Cybertec为PG提供了一个透明数据加密(TDE)的补丁。是目前唯一支持透明加密数据(集群)级的实现,独立于操作系统或文件系统加密。 透明数据加密如何工作 补丁背后的思想是:以加密格式(静态加密)安全存储组成PG集群的所有文件到磁盘上,从磁盘读取时解密数据块。数据在内存中未加密。 任何有兴趣使用次功能的人都应该考虑以下特征: 1)从应用程序的角度来看,加密是透明的。 2)使用单一密钥对整个集群进行加密 细节 由于数据存储在磁盘上,我们的方法自然基于“磁盘加密理论”。 AES密码本身以最有效的方式加密/解密单个块(加密块)。数据在磁盘上是安全的。 幸运的是,英特尔和AMD为AES加密提供了卓越的硬件支持。这确保了PG TDE对性能影响最小。 PG TDE不仅提供静态数据加密,还确保整个生态系统的加密,包括: 通过SSL传输加密(客户端/服务器)、加密复制、完全安全的副本 PG TDE完美的整合到了SELinux中,为您整个基础架构提供了坚实的基础
PolarDB for PostgreSQL透明加密 简介 透明加密TDE(Transparent Data Encryption)通过在数据库层执行静止数据加密,阻止可能的攻击者绕过数据库直接从存储读取敏感信息 经过数据库身份认证的应用和用户可以继续透明地访问数据,而尝试读取数据库文件中敏感数据的操作系统用户或者未经认证的用户将不允许访问数据。 PolarDB for PG透明加密使用方法 1)编译代码时需要指定--with-openssl 2)initdb初始化集群时需要指定密码短语和加密算法。 的过程 1)initdb首先读取外部参数,得到加密算法以及加密短语,并将加密短语写入postgresql.con文件中,以供后续使用。 2、加密算法的选用 加密算法: 加密算法的选用: 加密模式使用CTR(技术器模式),因为CTR加密可以保证明文和密文长度相等。这是由数据块的大小决定的,内存和磁盘上块大小默认是8KB。
热卖云产品年终特惠,2核2G轻量应用服务器7.33元/月起,更多上云必备产品助力您轻松上云
目前PostgreSQL官方并未推出透明加密功能,但是cybertec开源了一个分支,支持透明加密。 https://www.cybertec-postgresql.com/en/products/postgresql-transparent-data-encryption/ 它支持对数据和WAL进行透明加密 本文主要介绍WAL的透明加密功能及原理。 WAL透明加密架构 WAL加密主要由一个缓冲来完成,该缓冲未encrypt_buf_xlog,该缓冲大小是8个页大小,在启动时创建,由函数setup_encryption完成,其堆栈如下: PostgresMain 加密到加密缓冲encrypt_buf_xlog中,然后将加密缓冲中的WAL刷写磁盘。
HDFS支持端到端的透明加密,启用以后,对于一些需要加密的HDFS目录里的文件可以实现透明的加密和解密,而不需要修改用户的业务代码。端到端是指加密和解密只能通过客户端。 HDFS的透明加密属于数据库层和文件系统层的加密。它有很多好处,比如不错的性能,对于现有的应用程序是透明的。在制定策略时,HDFS也比传统的文件系统有更多的选择。 4.架构 4.1概述 ---- HDFS的透明加密有一个新的概念,加密区域(the encryption zone)。 加密区域是一个特殊的目录,写入文件的时候会被透明加密,读取文件的时候又会被透明解密。当加密区域被创建时,都会有一个加密区域秘钥(encryption zone key)与之对应。 后面Fayson会通过实操来说明如何实现HDFS数据透明加密。
1.文档编写目的 ---- 在前面文章Fayson介绍过《什么是HDFS透明加密》,要实现HDFS的透明加密,首先你需要一个KMS,KMS可以用CDH自带的Java KeyStore KMS也可以使用企业版工具 本文主要介绍如何通过Cloudera Manager安装Java KeyStore KMS服务,并且实现HDFS的透明加密。 “继续” [t77gfh6x9g.jpeg] [p90dpp1016.jpeg] 输入秘钥管理员用户和用户组,注意hdfs超级用户已经被禁止设置为秘钥管理员,具体可以参考Fayson在《什么是HDFS透明加密 [zqn5qbuazs.jpeg] 4.总结 ---- 1.通过HDFS的透明加密可以实现HDFS底层文件的加密,如本文前面所述,对于非加密区域/user1下的文件a.tx可以直接通过block ID查找到该 具体可以参考Fayson前面的文章《什么是HDFS透明加密》。
数据库当前面临的威胁模型 加密策略描述,当前PostgreSQL社区目前的设计状态以及其他数据库TDE方案对比 未来的数据安全畅想 那什么是透明数据加密? 透明数据加密,从字面上来说,可以分为三部分,数据,加密,透明。 数据,这里不用过多解释,用户需要保护的明文数据。 加密,相信大家也清楚,信息安全一直伴随着世界的发展,加密是信息安全的一种重要手段,常用加密方法目前可以分为流密码加密、分组加密以及公钥加密3种。 透明,指的是用户无感知,这是对加密行为的描述。 透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。是指对使用者来说是无感知的。当使用者在打开或编辑指定文件时,系统将自动对未加密的文件进行加密,对已加密的文件自动解密。 DB2 加密等级:Database-level 加密算法:AES,3DES 密钥管理:主密钥和数据加密密钥 MySQL 加密等级:Tablespace-level,Column-level 加密算法
通过内部API实现的最快的加密模式是堆成密钥加密。这种模式适合处理大量的数据。对称加密密钥通过X509.v3证书被加密存储。 SQL Server 2005 支持一些对称加密的算法。 具体参见http://www.microsoft.com/china/technet/prodtechnol/sql/2005/sql2005cls.mspx SQL Server 2008中的透明数据加密 (TDE),可以选择同SQL Server 2005中一样使用单元级的加密,或者是使用TDE进行完全数据库级加密、或者是由Windows提供的文件级加密。 透明数据加密可以为加密数据提供更高的灵活性,因为对其而言加密是数据库的一个属性,而非仅仅是代码行中的函数结果。这样在数据级执行加密时,管理员就无需对其数据库结构和应用程序代码进行大量的改动。 下面的代码显示的是如何使用透明数据加密方法来加密数据库。
01透明数据加密(TDE)简介 透明数据加密(Transparent Data Encryption (简称TDE))是指可以在文件层对数据和文件进行实时加密和解密,落盘的文件是加密后的内容,而对于上层应用系统和开发人员而言 ,加解密过程是无感知的,写入和读取的内容是明文内容,所以叫做透明数据加密。 以使用密码机进行透明数据加密的为例,长安链的存储模块在收到存储Key-Value键值对的请求时,先将Value内容以二进制形式发送到密码机,密码机使用内置的密钥对收到的数据进行对称加密,并将密文返回给长安链存储模块 3.1.3 配置透明数据加密 在完成了node配置节点下的pkcs11配置后,接下来需要进行storage配置节点下关于TDE加密算法和密钥的配置,对于密码机,我们并不知道对应的密钥内容,只有密钥的ID 3.2基于软件实现的TDE配置 3.2.1 创建对称密钥 长安链的透明数据加密默认支持AES和国密SM4两种对称加密算法。
Mysql加密解密 https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_aes-encrypt 函数定义 AES_ENCRYPT(str,key) 返回用密钥key对字符串str利用高级加密标准算法加密后的结果,调用AES_ENCRYPT的结果是一个二进制字符串,使用 VARBINARY or BLOB 存储 AES_DECRYPT(str,key) 返回用密钥key对字符串str利用高级加密标准算法解密后的结果 常用法 mysql> SELECT HEX(AES_ENCRYPT('test','key -----------------------+ | 9E9CE44CD9DF2B201F51947E03BCCBE2 | +----------------------------------+ mysql ---------------+ | npzkTNnfKyAfUZR+A7zL4g== | +--------------------------------------+ mysql
数据库服务器运行定时备份脚本,加密备份文件,同时每日将加密后的备份文件同步到本地。 备份内容只能在备份服务器上解密和查看 6.10.1. 创建密钥对 过程 6.1. 数据库备份 在 /etc/cron.daily/ 目录下创建 mysql 脚本,然后赋予执行权限 root@production:~# cat /etc/cron.daily/mysql #! /netkiller.github.com ################################### # SELECT `user`, `host`, `password` FROM `mysql ########### BACKUP_HOST="172.188.122.155" BACKUP_USER="dba" BACKUP_PASS="" BACKUP_DIR=/opt/database/mysql 数据库还原 定时同步 [root@netkiller ~]# cat /etc/cron.daily/mysql rsync -auzv www@db.netkiller.cn:/opt/database
从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 。此功能为物理表空间数据文件提供静态加密。 1 配置加密插件 1.1 修改配置文件 在mysql配置文件【mysqld】x项中添加如下内容 plugin_dir=/usr/local/mysql5.7/lib/mysql/plugin 2 测试加密表空间 2.1 创建加密的新表 创建一张新表,并添加ENCRYPTION='Y' ,加密表空间 mysql> create table test1( id int primary key 另外,keyring_file_data也是可以动态调整的,比较简单,就不演示了 2.4 统计表空间加密的表 想要知道哪些表的表空间加密了,可以通过数据字典表里查看 mysql> SELECT TABLE_SCHEMA mysql 155 Aug 16 09:10 keyring.bak 3.3 查看数据是否正常 查看数据及新建加密表是否成功 mysql> select * from test1; +----+--
TLS与SSL在传输层对网络连接进行加密。 二、mysql5.7SSL配置和使用 注意:这种方法只使用5.7,mysql5.6也支持ssl加密连接,但是配置过程比较复杂,需要用到openssl命令来创建各类共秘钥。 本地客户端登陆,没指定IP,默认是不需要SSL加密: [root@Darren1 ~]# mysql -uroot -p147258 -hlocalhost mysql>\s mysql Ver 14.14 用户连接默认是使用ssl加密的,也可以用--ssl=0(mysql5.7也可以用--ssl-mode=dibaled)强制用户不使用ssl加密: [root@Darren1 ~]# mysql -ucdhu4 ): Access denied for user 'cdhu5'@'Darren1' (using password: YES) 三、ssl加密连接对性能的影响 开启ssl加密连接是性能必然会下降,
加密与解密函数 加密与解密函数主要用于对数据库中的数据进行加密和解密处理,以防止数据被他人窃取。这些函数在保证数据库安全时非常有用。 加密结果不可逆,常用于用户的密码加密 MD5(str) 返回字符串str的md5加密后的值,也是一种加密方式。 SHA加密算法比MD5更加安全。 > SELECT ENCODE('mysql', 'mysql'); +--------------------------+ | ENCODE('mysql', 'mysql') | +------- (ENCODE('mysql','mysql'),'mysql') | +-----------------------------------------+ | mysql
# 前言 MySQL支持对InnoDB单表空间、通用表空间、系统表空间和Redo、Undo文件进行静态加密。 从8.0.16开始支持对Schema和通用表空间设置加密默认值,这就允许对在这些Schema和表空间中的表是否加密进行统一控制;静态加密功能依赖于Keyring组件或插件,MySQL社区版提供的Keyring MySQL会自动加密属于加密表的双写文件页。 支持通过配置innodb_redo_log_encrypt选项对Redo日志进行加密,默认禁用。 每次轮换主加密密钥时,MySQL 实例中的所有表空间密钥都会重新加密并保存回各自的表空间表头。如果轮换操作被服务器故障中断,重启后将会做前滚操作。 07 通过Performance Schema监控加密进度 打开stage/innodb/alter tablespace (encryption) instrument: mysql> system
()和AES_DECRYPT() 可以被看作MySQL中普遍通用的密码最安全的加密函数。 若 crypt_str 参数看起来不是一个加密字符串, MySQL 会返回给定的 crypt_str。 注意,这个函数只有当MySQL 在SSL的支持下配置完毕后才会运行。 这个函数用于用户授权表的Password列中的加密MySQL密码存储 mysql> SELECT PASSWORD('badpwd'); -> '7f84554057dd964b' PASSWORD PASSWORD() 执行密码加密与Unix 密码被加密的方式不同。请参见ENCRYPT()。 注释:PASSWORD()函数在MySQL服务器中的鉴定系统使用;你不应将它用在你个人的应用程序中。
设置透明效果 大概有三种 1、用android系统的透明效果 Java代码 android:background="@android:color/transparent" 例如 设置按钮 Java代码 android:layout_height="wrap_content" android:textColor="#ffffff" /> 2、用ARGB来控制 Java代码 半透明 //0~255透明度值 android 窗体透明的,黑暗度等的设置技巧 设置透明度(这是窗体本身的透明度,非背景) WindowManager.LayoutParams lp=getWindow 1.0完全不透明,0.0f完全透明 设置黑暗度 WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.dimAmount=0.5f 00--99(透明--不怎么透明), //后6位是颜色的设置 manifest.xml <activity android:name=".TransparentActivity" android:theme
前言 从 Oracle 无法直接访问 Mysql 数据库,需要配置透明网关后通过 DBLink 实现访问。 废话不多说,直接实战走起~ 一、环境准备 本次环境准备了 3 台主机,分别是 Oracle 数据库,MySQL 数据库,透明网关。 * rpm -ivh mysql-connector-odbc-8.0.27-1.el7.x86_64.rpm 注意: 透明网关的安装到这里就全都结束了,接下来就是配置部分了。 数据库: isql lucifer 成功连接 MySQL 数据库,至此透明网关配置完成! order by "id"; delete from "lucifer"@lucifer where "id"=1; 至此,整个 Oracle 配置透明网关访问 MySQL 就完成了!
一个片元透明度符合条件(透明度小于某个阈值),直接被舍弃。否则就会按照普通的片元进行深度测试、深度写入等。因此我们不需要关闭深度写入。 我们在片元着色器中使用clip函数进行透明度测试 Shader "Unlit/AlphaTest" { Properties{ _Color("Main Color",Color Cutoff 0 将Cutoff的值设置为0.65,图中透明度在0.65以下的直接被舍弃了 ?
腾讯云数据库MySQL是一种高性能、高可靠、高安全、可灵活伸缩的数据库托管服务,其不仅经济实惠,而且提供备份回档、监控、快速扩容、数据传输等数据库运维全套解决方案,为您简化 IT 运维工作,让您能更加专注于业务发展。
扫码关注腾讯云开发者
领取腾讯云代金券