Per雷竞技下载官网cona,与我们合作的客户数量,需要强有力的安全措施对PCI, HIPAA和φ合规,MySQL管理的数据需要加密”在休息的时候。“万物与开源,几个选项满足MySQL加密在休息的要求。在这个分为三部分的系列文章中,我们将介绍几个热门选择加密数据和现在的每个解决方案的优缺点。你可能想要评估这些教程的哪些部分最适合您的情况之前在生产中使用它们。
本系列的第一部分是实现磁盘级别加密使用地下室+陆。
在MySQL 5.7中,InnoDB内置的加密功能。然而,这种解决方案也有一些缺点。具体来说,InnoDB表空间加密不包括undo日志,重做日志或主ibdata1表空间。此外,binary-logs和slow-query-logs不介绍下InnoDB加密。
使用地下室+举例,我们可以加密所有(数据+日志)在一个伞下,提供所有文件驻留在相同的磁盘。如果你单独的各种登录不同的分区,你将不得不对每个分区重复下面的教程。
陆教程
Linux安装(陆)统一的关键是当前磁盘加密标准。在下面的例子中,块设备/dev/sda4在CentOS 7是使用生成的密钥进行加密,然后作为默认安装MySQL数据目录/var/lib/mysql。
警告!损失的关键意味着完整的数据丢失!一定要备份的关键。
安装所需的工具:
|
1
|
# yum安装cryptsetup
|
创建、格式化和安装一个加密的磁盘
的cryptsetup命令初始化音量,并设置一个初始键/密码。请注意,关键是不可恢复的,因此不要忘记它。现在花点时间来决定你可以安全地存储这个密钥的一个副本。LastPass安全记录是一个很好的选择,因为它们允许文件附件。这增强了我们的备份。
创建一个密码加密。选择一些高的熵(即。,很多随机性)。这里有两个选项(选择一个):
|
1
2
3
|
32 # openssl兰德base64
# |日期md5 | |头牧师24 | md5 | tail - c - c 32
|
接下来,我们需要初始化和格式与陆分区使用。任何使用这个块设备挂载点必须预先卸载。
警告!这个命令将删除设备上的所有数据!一定要完成任何备份在你运行这个!
|
1
|
# cryptsetup - c aes-xts-plain - v luksFormat /dev/sda4
|
系统将提示您输入密码。提供你在上面生成的短语。在你提供一个密码,你现在需要“开放”加密的磁盘和提供设备映射器名称(即。一个别名)。它可以是任何东西,但是对于我们的目的,我们将称之为“mysqldata”:
|
1
|
# cryptsetup luksOpen /dev/sda4 mysqldata
|
系统将提示您为你上面使用的密码。成功,您应该看到设备出现:
|
1
2
|
# ls /dev/mapper/
lrwxrwxrwx
1
根
根
7
小君
2
11
:
50
mysqldata
- >
。
。
/
dm
- - - - - -
0
|
现在您可以加密格式这个块设备,创建一个文件系统:
|
1
|
# mkfs。ext4 /dev/mapper/mysqldata
|
现在你可以挂载加密块设备你格式化:
|
1
|
#山/dev/mapper/mysqldata /var/lib/mysql
|
遗憾的是你不能添加这个挂载加载服务器上重新启动,因为关键是需要“开放”的设备。请牢记这一点,如果你的服务器重新启动MySQL不会开始以来数据目录不可用,直到打开并安装(我们将看看如何使用脚本使这项工作在本系列的第二部分)。
创建一个备份加密信息
陆的头块设备包含有关当前的信息加密密钥(年代)。这有损坏,或如果你需要恢复,因为你忘记新密码,你可以恢复这头信息:
|
1
|
# cryptsetup luksHeaderBackup——header-backup-file ${主机名}_“日期+ % Y % m % d ' _header。dat /dev/sda4
|
现在继续做这个文件的SHA1,以确认它不会损坏稍后在存储:
|
1
|
# sha1sum ${主机名}_“日期+ % Y % m % d ' _header.dat
|
GZip的头文件。SHA1和. gz文件存储在一个安全的位置(例如,将其附加到安全注意上面创建)。现在你有一个备份所使用的密钥和一个备份关键的头使用。
卸载和关闭一个磁盘
如果你知道你将存储磁盘,或只是想确保内容(即是不可见的。、安装),可以卸载和“关闭”加密的设备:
|
1
2
|
# umount /var/lib/mysql/来
# cryptsetup luksClose mysqldata
|
为了再次安装这个设备,你必须“开放”,并提供的关键之一。
旋转钥匙(添加/移除键)
各种法规遵循和执行规则规定多长时间你需要旋转钥匙。你不能直接旋转或改变一个关键。陆最多支持8键/设备。首先你必须添加一个新的关键任何插槽(除了槽目前占据关键您要删除的),然后删除旧的关键。
看看现有的头信息:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
|
# cryptsetup luksDump /dev/sda4
陆
头
信息
为
/
dev
/
sda4
版本
:
1
密码
的名字
:
aes
密码
模式
:
加拿大广播公司
- - - - - -
essiv
:
sha256
哈希
规范
:
sha1
有效载荷
抵消
:
4096年
可
位
:
256年
可
消化
:
81年
37
51
6摄氏度
d5
c8
32
f1
7一个
二维
47
7 c
83年
62年
70年
d9
f7
ce
5
6 e
可
盐
:
ae
4 b
e8
09年
c8
7一个
5 d
89年
b0
f0
达
85年
7 e
ce
7 b
7 f
47
c7
艾德
51
c1
71年
bb
b5
77年
18
0 d
9 d
e2
95年
98年
男朋友
可
迭代
:
44500年
UUID
:
92年ed3e8e
- - - - - -
a9ac
- - - - - -
4 e59
- - - - - -
afc3
- - - - - -
39 cc7c63e7f6
关键
槽
0
:
启用
迭代
:
181059年
盐
:
9 c
a9
f6
12
d2
a4
2
3 d
a4
08年
b2
32
b0
b4
20.
3 b
69年
13
8 d
36
99年
47
42
9 c
d5
41
35
8 c
b3
d0
ff
0 e
关键
材料
抵消
:
8
房颤
条纹
:
4000年
关键
槽
1
:
禁用
关键
槽
2
:
禁用
关键
槽
3
:
禁用
关键
槽
4
:
禁用
关键
槽
5
:
禁用
关键
槽
6
:
禁用
关键
槽
7
:
禁用
|
在这里我们可以看到一个关键目前占据“键槽0”。我们可以添加任何的关键禁用关键的位置。让我们用槽# 1:
|
1
2
3
4
5
6
7
|
# cryptsetup luksAddKey——1 - v /dev/sda4键槽
输入
任何
密码
:
关键
槽
0
解锁
。
输入
新
密码
为
关键
槽
:
验证
密码
:
命令
成功的
。
|
陆要求“任何”密码进行身份验证。在其他时段有钥匙,我们可以使用任何其中之一。作为目前唯一保存,我们必须使用它。我们可以添加一个新的密码槽1。
现在,我们已经拯救了新的密钥在插槽1中,我们可以删除的关键位置0。
|
1
2
3
|
# cryptsetup luksKillSlot /dev/sda4 0
输入
任何
剩下的
陆
密码
:
没有
关键
可用
与
这
密码
。
|
在上面的示例中,使用了现有的密码存储在位置0。这是不允许的。你不能提供相同的密码您正试图删除。
重复这个命令并提供密码槽1,这是补充道。我们现在能够移除密码存储在位置0:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
29日
30.
31日
|
# cryptsetup luksKillSlot /dev/sda4 0
输入
任何
剩下的
陆
密码
:
# cryptsetup luksDump /dev/sda4
陆
头
信息
为
/
dev
/
sda4
版本
:
1
密码
的名字
:
aes
密码
模式
:
加拿大广播公司
- - - - - -
essiv
:
sha256
哈希
规范
:
sha1
有效载荷
抵消
:
4096年
可
位
:
256年
可
消化
:
81年
37
51
6摄氏度
d5
c8
32
f1
7一个
二维
47
7 c
83年
62年
70年
d9
f7
ce
5
6 e
可
盐
:
ae
4 b
e8
09年
c8
7一个
5 d
89年
b0
f0
达
85年
7 e
ce
7 b
7 f
47
c7
艾德
51
c1
71年
bb
b5
77年
18
0 d
9 d
e2
95年
98年
男朋友
可
迭代
:
44500年
UUID
:
92年ed3e8e
- - - - - -
a9ac
- - - - - -
4 e59
- - - - - -
afc3
- - - - - -
39 cc7c63e7f6
关键
槽
0
:
禁用
关键
槽
1
:
启用
迭代
:
229712年
盐
:
5 d
71年
b2
3
58
d7
f8
6
36
4 f
32
d1
23
1
df
df
cd
2 b
68年
ee
18
f7
90年
cf
58
32
37
b9
02
e1
42
d6
关键
材料
抵消
:
264年
房颤
条纹
:
4000年
关键
槽
2
:
禁用
关键
槽
3
:
禁用
关键
槽
4
:
禁用
关键
槽
5
:
禁用
关键
槽
6
:
禁用
关键
槽
7
:
禁用
|
你改变了密码后,这是一个好主意重复上面的头我们执行转储步骤和存储新的密码在你的地下室。
结论
恭喜,您已经学会了如何加密和挂载一个分区使用陆!您现在可以使用这个安装设备就像任何其他。你也可以恢复备份和启动MySQL。
在两个部分中,我们将介绍使用InnoDB表空间加密。







这是尴尬的HIPAA和两个Ps 2017年。
只是想知道,有没有性能影响如果我使用其他加密使用以上方法生产环境吗?
嗨Vidyadhar。我们发现没有明显的性能影响。重要的是要有一个CPU与AES硬件加速。
增加迭代时间,使用sha512应该考虑对任何严重的加密。默认值是不够的。