由于发布的雷竞技下载官网MongoDB 3.6.13 Percona服务器(PSMDB),您可以使用库来存储数据的加密密钥加密。这是如何设置它。
首先,你需要有一个库服务器启动并运行。我的同事,耶利哥的时候,有一篇文章标题为Percona设置库服务器上雷竞技下载官网用keyring_vault插件Percona MySQL 5.7服务器雷竞技下载官网。在这篇文章中,我将提供相同的指令安装和设置Hashicorp库进行测试(谢谢你耶利哥!)。
库安装(作为根用户运行或使用sudo):
1。下载,提取并安装库:
|
1
2
3
|
# wget https://releases.hashicorp.com/vault/1.3.2/vault_1.3.2_linux_amd64.zip
#解压vault_1.3.2_linux_amd64.zip
# mv拱顶/usr/sbin
|
确保你的某个地方路径
2。地方在/etc/vault初始库配置
|
1
2
3
4
5
6
7
8
9
10
11
12
|
# mkdir /etc/vault
# cd /etc/vault
#猫vault.hcl
侦听器
“tcp”
{
地址
=
“192.168.0.114:8200”
tls_cert_file
=
“/ etc /库/ vault.crt”
tls_key_file
=
“/ etc /库/ vault.key”
}
存储
“文件”
{
路径
=
“/ var / lib /库”
}
disable_mlock
=
真正的
|
您可以使用一个端口不同于8200。禁用- - - - - -mlock=真正的如果你想启动库服务器需要作为非根用户。
3所示。生成SSL证书。能够创建SSL证书不经过提示,我们将这些条目在配置文件:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
|
# cd /etc/vault
#猫ssl.conf
(
要求的事情
]
distinguished_name
=
req_distinguished_name
x509_extensions
=
v3_req
提示
=
没有
(
req_distinguished_name
]
C
=
我们
圣
=
数控
l
=
R
O
=
雷竞技下载官网
CN
=
*
(
v3_req
]
subjectKeyIdentifier
=
哈希
authorityKeyIdentifier
=
keyid
,
发行人
basicConstraints
=
CA
:
真正的
subjectAltName
=
@
alt
_的名字
(
alt_names
]
知识产权
=
192.168.0.114
|
4所示。运行下面的命令来生成证书在/etc/vault.并存储它们
|
1
2
3
|
# cd /etc/vault
# openssl要求配置ssl。参看x509天3650批节点newkey rsa: 2048 -keyout金库。主要治疗vault.crt
#猫金库。关键的金库。crt > vault.pem
|
5。确保密钥只能由所有者来访问。
|
1
2
3
|
# chmod 400 vault.key
# chmod 400 vault.pem
# chmod 400 vault.crt
|
6。设置环境变量需要访问库。
|
1
2
|
#出口VAULT_CACERT = / etc /库/ vault.crt
#出口VAULT_ADDR = ' https://192.168.0.114:8200 '
|
7所示。开始在后台库。
|
1
2
|
#库服务器配置= / etc /库/库。hcl > > /var/log/vault.日志2 > & 1 &
(
1
]
7336年
|
8。初始化库和储存开封密钥和初始根生成令牌在此步骤:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#库操作员初始化
开封
关键
1
:
Gdu0HtSSctKUvn0ssi
+
GWhKEDZBWMAmulKfiAroCt
+
信息战
开封
关键
2
:
UEf61dpqPvjD
+
ftFaCJTy
+
KzKlSTIsT75qwe4gVLR9w4
开封
关键
3
:
我
/
vq6P
/
SNs7aIKiLr7gEkeV8Pn
/
ilkV5r
+
HbwTpn7Vk
开封
关键
4
:
aZYbiu2C3zrDklyWxf0JaqAouGRM95g0a9vz1JIk6jHD
开封
关键
5
:
IApVQeN6kxCU1dr
/
H
/
直流
+
1 afn6cj5vvhgdapnc1tggvl
最初的
根
令牌
:
年代
.AqVdpn2C4NVJgtkZkRrKeFtm
库
初始化
与
5
关键
股票
和
一个
关键
阈值
的
3所示。
请
安全
分发
的
关键
股票
印刷
以上
。
当
的
库
是
再保险
- - - - - -
密封
,
重新启动
,
或
停止
,
你
必须
供应
在
至少
3
的
这些
键
来
开封
它
之前
它
可以
开始
维修
请求
。
库
做
不
商店
的
生成的
主
关键
。
没有
在
至少
3
关键
来
重建
的
主
关键
,
库
将
保持
永久
密封
!
它
是
可能的
来
生成
新
开封
键
,
提供
你
有
一个
法定人数
的
现有的
开封
键
股票
。
看到
“穹窿运营商再续键”
为
更多的
信息
。
|
9。开封的库提供上面的三个开启键生成。你需要开启金库每次库服务器已启动。
|
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日
32
33
34
35
36
37
38
|
#库运营商开封Gdu0HtSSctKUvn0ssi + GWhKEDZBWMAmulKfiAroCt +信息战
关键
价值
- - -
- - - - - -
- - -
- - -
- - - - - -
密封
类型
沙密
初始化
真正的
密封
真正的
总
股票
5
阈值
3
开封
进步
1
/
3
开封
现时标志
6 be37706
- - - - - -
61年cb
- - - - - -
b372
- - - - - -
cc88
- - - - - -
b0e89e651aff
版本
1.3.2
哈
启用
假
#库运营商开封UEf61dpqPvjD + ftFaCJTy + KzKlSTIsT75qwe4gVLR9w4
关键
价值
- - -
- - - - - -
- - -
- - -
- - - - - -
密封
类型
沙密
初始化
真正的
密封
真正的
总
股票
5
阈值
3
开封
进步
2
/
3
开封
现时标志
6 be37706
- - - - - -
61年cb
- - - - - -
b372
- - - - - -
cc88
- - - - - -
b0e89e651aff
版本
1.3.2
哈
启用
假
#库运营商开封am / vq6P / SNs7aIKiLr7gEkeV8Pn ilkV5r + HbwTpn7Vk
关键
价值
- - -
- - - - - -
- - -
- - -
- - - - - -
密封
类型
沙密
初始化
真正的
密封
假
总
股票
5
阈值
3
版本
1.3.2
集群
的名字
库
- - - - - -
集群
- - - - - -
752年be70f
集群
ID
32 ebb89d
- - - - - -
2583年
- - - - - -
23 b6
- - - - - -
513 d
- - - - - -
c44220e12ac0
哈
启用
假
|
10。现在库和使用最初的根用户登录令牌。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#库登录s.AqVdpn2C4NVJgtkZkRrKeFtm
成功
!
你
是
现在
通过身份验证
。
的
令牌
信息
显示
下面
是
已经
存储
在
的
令牌
助手
。
你
做
不
需要
来
运行
“库登录”
再一次
。
未来
库
请求
将
自动
使用
这
令牌
。
关键
价值
- - -
- - - - - -
- - -
- - -
- - - - - -
令牌
年代
.AqVdpn2C4NVJgtkZkRrKeFtm
token_accessor
EZo7M0JbZjicINWMLee573qL
令牌
_持续时间∞
token_renewable
假
令牌
_政策
(
“根”
]
身份
_政策
(
]
政策
(
“根”
]
|
11。在这一点上,库,您需要启用KV秘密引擎版本2,唯一PSMDB引擎支持。为此,您将需要运行以下:
|
1
2
|
#库启用路径秘密kv-v2秘密
成功
!
启用
的
kv
- - - - - -
v2
秘密
引擎
在
:
秘密
/
|
12。接下来,您将需要创建一个库政策来访问这个数据存储。按https://www.vaultproject.io/docs/secrets/kv/kv-v2/,阅读和写作版本和路径数据/需要前缀。
|
1
2
3
4
|
#猫mongodb.hcl
路径
“秘密/数据/ dc / *”
{
功能
=
(
“创造”
,
“读”
,
“更新”
,
“删除”
]
}
|
13。上传政策库服务器,运行:
|
1
2
|
#库政策写mongodb-policy mongodb.hcl
成功
!
上传
政策
:
mongodb
- - - - - -
政策
|
14。最后,您将需要创建一个访问令牌使用MongoDB。记得要创建一个令牌/ MongoDB实例。
|
1
2
3
4
5
6
7
8
9
10
|
#库令牌创建政策= mongodb-policy
关键
价值
- - -
- - - - - -
- - -
- - -
- - - - - -
令牌
年代
.cFy5NxA72Wk7VhVH45VJ4Rib
token_accessor
yoVBWgUVtDpzIomIRGTvBRd6
令牌
_持续时间
768 h
token_renewable
真正的
令牌
_政策
(
“默认”
“mongodb-policy”
]
身份
_政策
(
]
政策
(
“默认”
“mongodb-policy”
]
|
您将需要使用上面的令牌连接MongoDB金库。
15。完成了。
在MongoDB中加入库
在MongoDB中,您将需要创建一个基于生成的令牌,令牌生成这个文件拱顶。让我们将它们放在/etc/mongodb:
1。创建一个mongodb配置目录将存储标记和文件。
|
1
2
|
mkdir - p /etc/mongodb号
#乔恩mongod: mongod /etc/mongodb
|
2。令牌的值在令牌文件和复制的内容库。crt库服务器。
|
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
|
# cd /etc/mongodb
#猫令牌
年代
.cFy5NxA72Wk7VhVH45VJ4Rib
#猫vault.crt
- - -
- - -
- - - - - -
开始
证书
- - -
- - -
- - - - - -
MIIDbDCCAlSgAwIBAgIJAOsptGVHJfKYMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNV
BAYTAlVTMQswCQYDVQQIDAJOQzEKMAgGA1UEBwwBUjEQMA4GA1UECgwHUGVyY29u
YTEKMAgGA1UEAwwBKjAeFw0yMDAzMzAxODE4NDlaFw0zMDAzMjgxODE4NDlaMEQx
CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOQzEKMAgGA1UEBwwBUjEQMA4GA1UECgwH
UGVyY29uYTEKMAgGA1UEAwwBKjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAKSRMI4
/
rbiWitDZtnDzlCVi0BDalmn4ieG93mt1Vn0IfN4NOmQeZ5fVRBve
Y26ugAT7Nq92puvV6vLk3ky8K8dkNPLe4wPEMPWnrHJIS4zqcmJWbw618yymVufm
h59cI
/
jyYCPMyLXkcZLuOnSZszoKnN
/
jEZq6WKNxgFuc6evzfxN4AbM7ffRk2mj5
FfMbtpToBgJS
/
U9UMS7EvzXYslUyq4bgBx3ygcmUyas7Ej7aie2fb0tzW
/
dMJ6
/
F
M2kYnHTM
+
pxr
+
Eq5QndBcjgptv
/
iqdnmIbNHogY
+
4 tocqwyke83sphgiwti9mcln
xUDN5nZEeRY8RINk3
+
irL
/
Kq0ocCAwEAAaNhMF8wHQYDVR0OBBYEFFS
+
R00NplQg
c6XFyYNLmrMJFa4lMB8GA1UdIwQYMBaAFFS
+
R00NplQgc6XFyYNLmrMJFa4lMAwG
A1UdEwQFMAMBAf8wDwYDVR0RBAgwBocEwKgAcjANBgkqhkiG9w0BAQsFAAOCAQEA
h9dKQoTILcv43mVbowCENm0ujPCW74CM
/
VXc
+
k8s3A5
+
h2tHtrO6NYATQBA07L
+
k
dwuethgqaqzbaEJqF766UiKv00hCkY8fMSyptLRtYG3WtxDWN
/
kGGvSjkzbYYqDP
RK1X5eI7PT7rtyu
+
FMWEiFLgQE6e5pz8MOITvdtQviJ35jUD1FfCpzTWppqeCc0g
9 dvhzej1kdytpotcukglydf1amwedxxqi77zdbhzqfmslt1hajgbkjfvagtm2xhb
vd0QhgGbfzryv1b
+
eDTL7wWsYckNEcADpizHinxBpKC9
/
cnJZZtt6D35NvVAMkjy
+
8 wuoopsb6pcjrxvaz75fa
= =
- - -
- - -
- - - - - -
结束
证书
- - -
- - -
- - - - - -
|
3所示。确保文件由mongod只可读,MongoDB将抱怨失败在启动和宽松的权限。
|
1
2
3
4
|
#乔恩mongod: mongod /etc/mongodb/token
#乔恩mongod: mongod /etc/mongodb/vault.crt
# chmod 400 /etc/mongodb/token
# chmod 400 /etc/mongodb/vault.crt
|
4所示。在/etc/mongod.配置库的配置下的安全部分。作为一个样本的命名约定,因为这个服务器的主机名是psmongodb1,秘密的路径将秘密/数据/ dc / psmongodb1:
|
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
|
#猫/etc/mongod.conf
# mongod。相依,Per雷竞技下载官网cona MongoDB服务器
#文档的所有选项,请参阅:
# http://docs.mongodb.org/manual/reference/configuration-options/
*
*
*
修订
*
*
*
processManagement
:
叉
:
真正的
pidFilePath
:
/
var
/
运行
/
mongod
.pid
#网络接口
净
:
港口
:
27017年
bindIp
:
127.0.0.1
#安全:
安全
:
enableEncryption
:
真正的
库
:
serverName
:
192.168.0.114
港口
:
8200年
秘密
:
秘密
/
数据
/
直流
/
psmongodb1
tokenFile
:
/
等
/
mongodb
/
令牌
serverCAFile
:
/
等
/
mongodb
/
库
.crt
*
*
*
修订
*
*
*
|
5。然后启动MongoDB:
|
1
|
# systemctl开始mongod
|
你只能在一个空数据库上启用加密。对现有的是不可能的,之前未加密数据库。一个方法是创建一个备份,停止mongod,删除数据文件,启用加密,mongod开始,从备份恢复数据库。如果你有一个副本,您可以应用变化以滚动的方式(一个成员)。从其他节点数据将自动同步。每个节点必须单独加密。
6。检查日志如果使用关键是成功的:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.929
+
0000年
我
访问
(
主要
]
初始化
外部
身份验证
会话
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
MongoDB
开始
:
pid
=
8026年
港口
=
27017年
dbpath
=
/
var
/
自由
/
蒙戈
64年
- - - - - -
位
主机
=
psmongodb1
.example
com
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
db
版本
v3
。
6.17
- - - - - -
4.0
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
git
版本
:
96年e9c7218eebc2995dd847d6185f20f102a86055
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
OpenSSL
版本
:
OpenSSL
1.0.2k
- - - - - -
fips
26
1月
2017年
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
分配器
:
tcmalloc
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
模块
:
没有一个
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
构建
环境
:
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
distarch
:
x86
_64年
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
target_arch
:
x86
_64年
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
选项
:
{
配置
:
“/ etc / mongod.conf”
,
净
:
{
bindIp
:
“127.0.0.1”
,
港口
:
27017年
}
,
processManagement
:
{
叉
:
真正的
,
pidFilePath
:
“/ var /跑步/ mongod.pid”
}
,
安全
:
{
enableEncryption
:
真正的
,
库
:
{
disableTLSForTesting
:
假
,
港口
:
8200年
,
秘密
:
“秘密/数据/ dc / psmongodb1”
,
serverCAFile
:
“/ etc / mongodb / vault.crt”
,
serverName
:
“192.168.0.114”
,
tokenFile
:
“/ etc / mongodb /令牌”
}
}
,
存储
:
{
dbPath
:
“/ var / lib / mongo”
,
杂志
:
{
启用
:
真正的
}
}
,
systemLog
:
{
目的地
:
“文件”
,
logAppend
:
真正的
,
路径
:
" / var / log / mongo / mongod.log”
}
}
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
49.024
+
0000年
我
存储
(
initandlisten
]
主
关键
是
缺席
在
的
库
。
生成
和
写作
一个
。
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
49.076
+
0000年
我
存储
(
initandlisten
]
初始化
KeyDB
与
wiredtiger_open
配置
:
创建
,
config_base
=
假
,
扩展
=
(
当地的
=
(
条目
=
雷竞技下载官网percona_encryption_extension_init
,
early_load
=
真正的
,
配置
=
(
密码
=
AES256
- - - - - -
加拿大广播公司
,
旋转
=
假
)
)
]
,
加密
=
(
的名字
=
雷竞技下载官网
,
keyid
=
”“
)
,
日志
=
(
启用
,
file_max
=
5 mb
)
,
transaction_sync
=
(
启用
=
真正的
,
方法
=
fsync
)
,
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
49.556
+
0000年
我
存储
(
initandlisten
]
加密
键
DB
是
初始化
成功
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
49.556
+
0000年
我
存储
(
initandlisten
]
wiredtiger_open
配置
:
创建
,
cache_size
=
256米
,
cache_overflow
=
(
file_max
=
0米
)
,
session_max
=
20000年
,
驱逐
=
(
threads_min
=
4
,
threads_max
=
4
)
,
config_base
=
假
,
统计数据
=
(
快
)
,
兼容性
=
(
释放
=
“3.0”
,
require_max
=
“3.0”
)
,
日志
=
(
启用
=
真正的
,
存档
=
真正的
,
路径
=
杂志
,
压缩机
=
时髦的
)
,
file_manager
=
(
close_idle_time
=
100000年
)
,
statistics_log
=
(
等待
=
0
)
,
详细的
=
(
recovery_progress
)
,
加密
=
(
的名字
=
雷竞技下载官网
,
keyid
=
“/违约”
)
,
扩展
=
(
当地的
=
(
条目
=
雷竞技下载官网percona_encryption_extension_init
,
early_load
=
真正的
,
配置
=
(
密码
=
AES256
- - - - - -
加拿大广播公司
)
)
,
当地的
=
(
条目
=
雷竞技下载官网percona_encryption_extension_init
,
early_load
=
真正的
,
配置
=
(
密码
=
AES256
- - - - - -
加拿大广播公司
)
)
,
]
,
|
根据日志,它能够产生一个主密钥,使用Percona加密。雷竞技下载官网在这一点上,数据加密已经配置在这个服务器。
7所示。完成了。
注意,如果库服务器,您将无法启动服务器。鉴于这种新获得的主密钥库的依赖,一定要为容错设计架构。
加密密钥轮换
每个加密密钥可以只在有限的时间内使用。旋转主密钥对密钥存储库使用一个新的主键。新生成的主键然后存储在库中。不是对整个数据集。
1。在/etc/mongod.配置一个额外的线在安全部分:
|
1
2
3
4
5
6
7
8
9
10
|
#猫/etc/mongod.conf
安全
:
enableEncryption
:
真正的
库
:
serverName
:
192.168.0.114
港口
:
8200年
秘密
:
秘密
/
数据
/
直流
/
psmongodb1
tokenFile
:
/
等
/
mongodb
/
令牌
serverCAFile
:
/
等
/
mongodb
/
库
.crt
rotateMasterKey
:
真正的
|
2。然后重新启动MongoDB:
|
1
|
# systemctl重启mongod
|
你会得到一个错误消息(但这是预期,mongod过程才开始成功)。您可以检查日志如果加密密钥被成功地旋转:
|
1
2
3
4
5
6
7
|
#尾/var/log/mongo/mongod.log
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.929
+
0000年
我
存储
(
initandlisten
]
加密
键
DB
是
初始化
成功
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
存储
(
initandlisten
]
异常
在
initAndListend
性病
::
异常
:
主
关键
旋转
完成了
成功
,
终止
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
网络
(
initandlisten
]
关闭
:
会
来
关闭
听
套接字
。
。
。
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
- - - - - -
(
initandlisten
]
停止
进一步
流
控制
票
收购
。
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
现在
退出
2020年
- - - - - -
03
- - - - - -
30 t19
:
05年
:
48.933
+
0000年
我
控制
(
initandlisten
]
关闭
下来
与
代码
:
One hundred.
|
3所示。在/etc/mongod.移除多余的线conf配置rotateMasterKey:真正的
4所示。完成了。你又可以开始mongod,关键是旋转。
请注意,这是一个简单的指南如何建立一个基本的库服务器上,不应该被用作生产使用的模板。我们建议使用雷竞技下载官网Percona咨询服务协助你。






致命的断言50944在src / mongo / db /存储/ wiredtiger / wiredtiger_kv_engine。cpp 1073我得到这一个
由于Jaime和米甲的文章。我有一个评论关于库令牌创建但是——如果你使用上面的命令,你会得到一个令牌,将在768年到期h,无法更新。
我建议这样:
#库令牌创建时期= 768 h可再生政策= mongodb-policy
你将能够定期更新标记(只要它没有过期)curl命令:
# curl - s筒式水管“X-Vault-Token: s。cFy5NxA72Wk7VhVH45VJ4Rib”请求后https://192.168.0.114:8200 / v1 /认证/令牌/ renew-self
您可以使用访问令牌或者更新。
谢谢你,克雷格有价值的输入!我们的目的是使它尽可能的简单,提供安装测试这个功能。也可能有许多其他值得考虑在配置生产工作负载。