的keyring_hashicorp
插件是一个扩展包括在MySQL企业版,一个商业产品。更多地了解商业产品,请参阅https://www.10bet靠谱mysql.com/products/。
的keyring_hashicorp
密匙环插件与HashiCorp库的后端存储。插件支持HashiCorp拱顶AppRole身份验证。没有关键信息永久存储在MySQL服务器本地存储。(一个可选的内存缓存键可以用作中间存储。)随机密钥生成是在MySQL服务器端执行的,与键随后存储Hashicorp拱顶。
的keyring_hashicorp
插件支持的功能包括MySQL密匙环服务接口的标准。密匙环操作执行的这些功能可从两个层面:
SQL接口:在SQL语句中,调用函数中描述部分6.4.4.14,“通用的密匙环密钥管理功能”。
C接口:在C语言代码,调用描述的密匙环的服务功能部分5.6.9.2”,密匙环服务”。
示例(使用SQL接口):
选择keyring_key_generate (MyKey, AES, 32);选择keyring_key_remove (“MyKey”);
为键值允许的特征信息keyring_hashicorp
,请参阅部分6.4.4.12,“支持密匙环键类型和长度”。
安装keyring_hashicorp
中发现,使用一般的指令6.4.4.3部分,“密匙环插件安装”,具体的配置信息keyring_hashicorp
在这里找到。Plugin-specific配置包括制备所需的证书和密钥文件连接到HashiCorp库,以及配置HashiCorp库本身。以下部分提供必要的指导。
的keyring_hashicorp
插件需要一个安全的连接到HashiCorp库服务器,使用HTTPS协议。一个典型的设置包括一组证书和密钥文件:
company.crt
:一个定制的CA证书属于组织。这个文件是由HashiCorp库服务器和使用keyring_hashicorp
插件。vault.key
的私钥HashiCorp库服务器实例。这个文件是HashiCorp库所使用的服务器。vault.crt
:HashiCorp库服务器实例的证书。这个文件必须组织CA签署的证书。
下面的说明描述了如何使用OpenSSL创建证书和密钥文件。(如果你已经有了这些文件,过程HashiCorp库设置)。适用于Linux平台上所示的指令和其他平台可能需要调整。
由这些指令生成自签名证书,这可能不是很安全。使用这些文件后获得经验,考虑获得证书/注册证书颁发机构的关键材料。
准备公司和HashiCorp库服务器密钥。
使用以下命令生成的关键文件:
openssl genrsa aes256两级公司。4096年关键openssl genrsa aes256治疗。关键的2048
控股公司的私钥产生的命令文件(
company.key
)和库服务器私钥(vault.key
)。这些键是随机生成的4096和2048位的RSA密钥,分别。每个命令提示输入密码。出于测试目的,不需要密码。禁用它,省略了
aes256
论点。关键文件保存敏感信息,应该存储在一个安全的位置。需要密码(也敏感)之后,所以把它写下来,并将它存储在一个安全的位置。
(可选)检查密钥文件内容和有效性,使用以下命令:
openssl rsa——公司。键—openssl rsa -in vault.key -check
创建公司的CA证书。
使用以下命令创建一个公司CA证书文件命名
company.crt
这是有效期为365天(输入命令在一行):openssl点播x509 -节点关键的公司。关键-sha256治疗company.crt 365天
如果你使用了
aes256
参数执行密钥加密密钥生成过程中,提示您为公司关键在CA证书创建密码。你也提示证书持有人的信息(即你或你的公司),如下所示:国家名称(2字母代码)(非盟):州或省的名字(全名)[状态]:本地名称(如城市)[]:组织名称(如公司)(互联网Widgits Pty Ltd):组织单元名称(例如,部分)[]:常见的名称(例如,服务器FQDN或你的名字)[]:电子邮件地址[]:
回答提示适当的值。
创建一个证书签名请求。
创建一个HashiCorp库服务器证书,证书签名请求(CSR)必须准备好新创建的服务器密钥。创建一个配置文件命名
request.conf
包含以下行。如果HashiCorp库服务器并不在本地主机上运行,用适当的CN和IP值,需要进行其他更改。[要求]distinguished_name =拱顶x509_entensions = v3_req提示=没有(拱顶)C =我们圣公司= CA L = RWC O = CN = 127.0.0.1 (v3_req) subjectAltName = @alternatives authorityKeyIdentifier = keyid,发行人basicConstraints = CA:真正的(替代品)IP = 127.0.0.1
使用此命令来创建签名的要求:
openssl点播以及密钥库。关键配置要求。设计两级request.csr
输出文件(
request.csr
)是一个中间文件作为输入创建的服务器证书。创建HashiCorp库服务器证书。
签署了联合信息从HashiCorp库服务器密钥(
vault.key
)和CSR (request.csr
)与公司证书(company.crt
()来创建HashiCorp库服务器证书vault.crt
)。使用以下命令这样做(输入命令在一行):openssl x509要求——要求。csr ca公司。crt凝固了的公司。关键-CAcreateserial治疗库。crt -sha256 365天
为了使
vault.crt
服务器证书有用,附加的内容company.crt
公司证书。这是必需的,这样公司证书交付请求的服务器证书。猫的公司。crt > > vault.crt
如果你显示的内容
vault.crt
文件时,它应该是这样的:- - - - - - - - - - -开始证书……HashiCorp库服务器证书的内容…- - - - - - - - - - - - - - - -端证书开始证书- - - - - -…公司证书内容…- - - - - - - - - - -端证书
下面的说明描述了如何创建一个HashiCorp库设置,便于测试keyring_hashicorp
插件。
测试设置类似于生产设置,但生产使用HashiCorp库需要额外的安全注意事项,如使用non-self-signed证书和存储系统中的公司证书信任存储区中。你必须实现任何需要额外的安全措施来满足您的业务需求。
这些说明假设中创建的证书和密钥文件的可用性证书和关键制备。发现部分如果你没有这些文件。
获取HashiCorp二进制。
下载HashiCorp拱顶二进制适合您的平台https://www.vaultproject.io/10bet手机中文版downloads.html。
提取档案的内容来产生可执行文件库命令,用于执行HashiCorp库操作。如果有必要,你安装的目录命令添加到系统路径。
(可选)HashiCorp库支持自动完成选项,使它更容易使用。有关更多信息,请参见https://learn.hashicorp.com/vault/getting-started/install命令完成。
创建HashiCorp库服务器配置文件。
准备一个配置文件命名
config.hcl
用下面的内容。为tls_cert_file
,tls_key_file
,路径
值,替代路径名适合您的系统。侦听器“tcp”{地址= " 127.0.0.1:8200 " tls_cert_file = " / home /用户名/证书/库。crt " tls_key_file = " / home /用户名/证书/库。关键文件“存储}={路径“/ home /用户名/ vaultstorage /存储”}ui = true
启动HashiCorp库服务器。
库服务器开始,使用以下命令,其中
配置
选项指定配置文件刚刚创建的路径:库服务器配置= config.hcl
在这个步骤中,您可能会提示输入密码库服务器私钥存储在
vault.key
文件。服务器应该开始,显示一些信息在控制台上(IP、端口、等等)。
这样你就可以进入剩余命令,把库服务器命令在后台或打开另一个终端在继续之前。
初始化HashiCorp库服务器。
请注意这个步骤中描述的操作只在启动时所需的库第一次获得开启键和根令牌。随后库实例重启只需要使用开启键开启。
发出以下命令(假设Bourne shell语法):
出口VAULT_SKIP_VERIFY = 1库运营商init - n - t 1
第一个命令允许库命令暂时忽略了一个事实,那就是没有公司证书添加到系统信任存储区中。它可以弥补这一事实我们的签名CA不是添加到那家商店。(用于生产使用,这样的证书应该添加。)
第二个命令创建一个开封关键,要求一个开封未密封存在的关键。(生产使用,会有多个实例开启键有很多键需要进入开封。开启键应该传递给公司内部关键托管人。使用一个单一的关键可能被认为是一个安全问题,因为允许拱顶由单一键启封托管人)。
库应该回复开启键和根令牌的信息,加上一些额外的文本(实际开启键和根令牌值不同于那些所示):
…开封关键1:I2xwcFQc892O0Nt2pBiRNlnkHzTUrWS + JybL39BjcOE =初始根令牌:s。vTvXeo3tPEYehfcd9WH7oUKz……
开启键和根令牌存储在一个安全的位置。
开封HashiCorp库服务器。
使用此命令来开启金库服务器:
库操作符开封
当提示输入开启键,使用期间获得过库初始化的关键。
库应该生成输出表明设置已经完成和地下室启封。
登录到HashiCorp库服务器并验证其状态。
准备所需要的环境变量作为根用户登录:
库登录s.vTvXeo3tPEYehfcd9WH7oUKz
对于命令的令牌值,替代根令牌的内容获得以前在库初始化。
验证库服务器状态:
库状态
输出应该包含这些线(其他):
…初始化对密封的错……
设置HashiCorp库验证和存储。
请注意在这一步中所描述的操作都只需要第一次库实例运行。他们不需要被重复。
使AppRole身份验证方法和验证的认证方法列表:
库鉴定使approle库鉴定列表
使拱顶KeyValue存储引擎:
地下室的秘密使- version = 1 kv
创建和设置的角色使用
keyring_hashicorp
插件(输入命令在一行):库编写认证/ approle /角色/ mysql token_num_uses = 0 token_ttl = 20 m token_max_ttl = 30 m secret_id_num_uses = 0
添加一个AppRole安全政策。
请注意在这一步中所描述的操作都只需要第一次库实例运行。他们不需要被重复。
准备一个政策,允许之前创建的角色访问适当的秘密。创建一个新文件命名
mysql.hcl
用下面的内容:路径”kv / mysql / *”{能力=[“创造”、“读”、“更新”,“删除”,“名单”)}
请注意kv / mysql /
在这个例子中,可能需要调整每你的本地安装政策和安全需求。如果是这样,无论其他犯同样的调整kv / mysql /
出现在这些指令。导入策略文件的库服务器创建一个策略命名
mysql-policy
新角色,然后分配政策:库政策写mysql-policy mysql。hcl库编写认证/ approle /角色/ mysql = mysql-policy政策
获得新创建的角色的ID,并将它存储在一个安全的地点:
库读取认证/ / mysql / role-id approle /作用
为角色生成一个秘密ID,并将它存储在一个安全的位置:
库编写- f身份验证/ approle /角色/ mysql / secret-id
在这些AppRole角色ID和秘密ID生成凭证,他们预计将无限期地有效。他们不需要再次生成,
keyring_hashicorp
插件可以配置与他们使用的一个正在进行的基础。关于AuthRole认证的更多信息,请访问https://www.vaultproject.io/docs/auth/approle.html。
插件库文件包含keyring_hashicorp
插件和一个可加载的函数,keyring_hashicorp_update_config ()
。在插件初始化和终止时,它会自动加载和卸载的功能。不需要手动加载和卸载功能。
的keyring_hashicorp
插件支持的配置参数如下表所示。指定这些参数,相应的系统变量赋值。
配置参数 | 系统变量 | 强制性的 |
---|---|---|
HashiCorp服务器URL | keyring_hashicorp_server_url |
没有 |
AppRole角色ID | keyring_hashicorp_role_id |
是的 |
AppRole秘密ID | keyring_hashicorp_secret_id |
是的 |
存储路径 | keyring_hashicorp_store_path |
是的 |
授权路径 | keyring_hashicorp_auth_path |
没有 |
CA证书文件路径 | keyring_hashicorp_ca_path |
没有 |
缓存控制 | keyring_hashicorp_caching |
没有 |
在服务器启动过程中可用,keyring_hashicorp
必须加载使用吗——early-plugin-load
选择。的前面的桌子,几个plugin-related系统变量是强制性的,也必须设置。例如,在服务器使用这些线my.cnf
文件,调整所以
为您的平台必要的后缀和文件位置:
(mysqld) early-plugin-load = keyring_hashicorp。所以keyring_hashicorp_role_id = ' ee3b495c d0c9 - 11 e9 - 8881 - 8444 - c71c32aa”keyring_hashicorp_secret_id = ' 0512 af29 - d0ca - 11 e9 - 95 ee - 0010 e00dd718”keyring_hashicorp_store_path = / v1 / kv / mysql的keyring_hashicorp_auth_path = ' / v1 /认证/ approle /登录的
根据HashiCorp文10bet官方网站档API的路线都是前缀,协议版本(在前面的示例中可以看到/ v1 /
在keyring_hashicorp_store_path
和keyring_hashicorp_auth_path
值)。如果HashiCorp开发新的协议版本,可能需要改变/ v1 /
别的东西在你的配置。
MySQL服务器验证HashiCorp库使用AppRole身份验证。成功的身份验证要求提供给库两个秘密,一个角色ID和一个秘密ID,类似的概念到用户名和密码。角色使用ID和秘密ID值获得HashiCorp库安装过程之前执行。指定两个id,分配各自的值keyring_hashicorp_role_id
和keyring_hashicorp_secret_id
系统变量。安装过程也导致存储路径/ v1 / kv / mysql
,这是价值分配keyring_hashicorp_commit_store_path
。
在插件初始化时,keyring_hashicorp
试图连接到HashiCorp库服务器使用配置值。如果连接成功,则插件存储在相应的系统变量的值_commit_
在他们的名字。例如,成功连接之后,插件存储的值keyring_hashicorp_role_id
和keyring_hashicorp_store_path
在keyring_hashicorp_commit_role_id
和keyring_hashicorp_commit_store_path
。
重新配置在运行时可以执行的援助keyring_hashicorp_update_config ()
功能:
使用
集
语句来分配所需的新值配置系统变量前表所示。这些作业本身没有影响正在进行的插件操作。调用
keyring_hashicorp_update_config ()
使插件重新配置和重新连接到HashiCorp库服务器使用新的变量值。如果连接成功,插件将更新后的配置值存储在相应的系统变量
_commit_
在他们的名字。
例如,如果你有重新配置HashiCorp拱顶监听端口8201,而不是默认的8200年,重新配置keyring_hashicorp
是这样的:
mysql >集全球keyring_hashicorp_server_url = ' https://127.0.0.1:8201 ';查询好,0行影响(0.00秒)mysql >选择keyring_hashicorp_update_config ();+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | keyring_hashicorp_update_config() | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |配置更新成功。| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 1行组(0.03秒)
如果不能够连接插件HashiCorp拱顶在初始化期间或重新配置和没有现有连接,_commit_
系统变量设置没有提交的
为值为string变量和从
Boolean-valued变量。如果插件不能连接,但有一个现有的连接,该连接仍然是活跃的和_commit_
变量反映使用的值。
如果你不设置在服务器启动时强制系统变量,或者其他一些插件初始化错误发生时,初始化失败。在这种情况下,您可以使用运行时重新配置程序初始化插件而不需要重新启动服务器。
提供更多的信息keyring_hashicorp
plugin-specific系统变量和函数,看看部分6.4.4.18,“密匙环系统变量”,部分6.4.4.15,“Plugin-Specific密匙环密钥管理功能”。