Oracle 云基础设施 Vault 密钥环组件包含在 MySQL 企业版中,这是一款商业产品。要了解更多关于商业产品的資訊,请参阅 https://www.mysqlserver.cn/products/.
component_keyring_oci
是组件基础设施的一部分,它与 Oracle 云基础设施 Vault 进行通信以进行后端存储。密钥信息不会永久存储在 MySQL 服务器本地存储中。所有密钥都存储在 Oracle 云基础设施 Vault 中,这使得该组件非常适合 Oracle 云基础设施 MySQL 客户管理其 MySQL 企业版密钥。
MySQL 密钥环已开始从插件过渡到使用组件基础设施。component_keyring_oci
的引入是这一努力的延续。有关更多信息,请参阅 密钥环组件与密钥环插件.
一次只应启用一个密钥环组件或插件。启用多个密钥环组件或插件不受支持,结果可能与预期不符。
要使用 component_keyring_oci
进行密钥库管理,您必须
编写一个清单,告知服务器加载
component_keyring_oci
,如 第 8.4.4.2 节,“密钥环组件安装” 中所述。编写
component_keyring_oci
的配置文件,如这里所述。
当 component_keyring_oci
初始化时,它会读取全局配置文件,或者读取全局配置文件和本地配置文件。
该组件尝试从安装组件库文件(即服务器插件目录)的目录读取其全局配置文件。
如果全局配置文件指示使用本地配置文件,该组件将尝试从数据目录读取其本地配置文件。
虽然全局和本地配置文件位于不同的目录中,但这两个位置的文件名都是
component_keyring_oci.cnf
。如果不存在配置文件,则会发生错误。
component_keyring_oci
无法在没有有效配置的情况下初始化。
本地配置文件允许设置多个服务器实例以使用 component_keyring_oci
,这样每个服务器实例的组件配置都特定于给定数据目录实例。这使得相同的密钥环组件可以与每个实例的 Oracle 云基础设施 Vault 一起使用。
假设您熟悉 Oracle 云基础设施的概念,但以下文档可能对设置 component_keyring_oci
要使用的资源有所帮助。
component_keyring_oci
配置文件具有以下属性。
配置文件必须采用有效的 JSON 格式。
配置文件允许以下配置项。
"read_local_config"
: 此项仅在全局配置文件中允许。如果此项不存在,则该组件仅使用全局配置文件。如果此项存在,其值是true
或false
,指示该组件是否应该从本地配置文件读取配置信息。如果全局配置文件中存在
"read_local_config"
项以及其他项,则该组件会先检查"read_local_config"
项的值。如果值为
false
,组件将处理全局配置文件中的其他项,并忽略本地配置文件。如果值为
true
,组件将忽略全局配置文件中的其他项,并尝试读取本地配置文件。
“user”
:component_keyring_oci
用于连接的 Oracle Cloud Infrastructure 用户的 OCID。在使用component_keyring_oci
之前,用户帐户必须存在,并被授予访问配置的 Oracle Cloud Infrastructure 租户、区隔和 Vault 资源的权限。要从控制台获取用户 OCID,请使用以下说明:必需的密钥和 OCID。此值是必需的。
“tenancy”
:component_keyring_oci
用作 MySQL 区隔位置的 Oracle Cloud Infrastructure 租户的 OCID。在使用component_keyring_oci
之前,您必须创建租户(如果它不存在)。要从控制台获取租户 OCID,请使用以下说明:必需的密钥和 OCID。此值是必需的。
“compartment”
:component_keyring_oci
用作 MySQL 密钥位置的租户区隔的 OCID。在使用component_keyring_oci
之前,您必须创建一个 MySQL 区隔或子区隔(如果它不存在)。此区隔不应包含任何 Vault 密钥或 Vault 机密。它不应被 MySQL Keyring 以外的系统使用。有关管理区隔和获取 OCID 的信息,请参见 管理区隔。此值是必需的。
“virtual_vault”
:component_keyring_oci
用于加密操作的 Oracle Cloud Infrastructure Vault 的 OCID。在使用component_keyring_oci
之前,您必须在 MySQL 区隔中创建一个新的 Vault(如果它不存在)。(或者,您可以重用 MySQL 区隔父区隔中现有的 Vault。)区隔用户只能看到和使用其各自区隔中的密钥。有关创建 Vault 和获取 Vault OCID 的信息,请参见 管理 Vault。此值是必需的。
“encryption_endpoint”
:component_keyring_oci
用于为新密钥生成加密或编码信息(密文)的 Oracle Cloud Infrastructure 加密服务器的端点。加密端点是特定于 Vault 的,Oracle Cloud Infrastructure 在创建 Vault 时分配它。要获取端点 OCID,请查看您的 keyring_oci Vault 的配置详细信息,使用以下说明:管理 Vault。此值是必需的。
"management_endpoint"
:component_keyring_oci
用于列出现有密钥的 Oracle Cloud Infrastructure 密钥管理服务器的端点。密钥管理端点是特定于 Vault 的,Oracle Cloud Infrastructure 在创建 Vault 时分配它。要获取端点 OCID,请查看您的 keyring_oci Vault 的配置详细信息,使用以下说明:管理 Vault。此值是必需的。
“vaults_endpoint”
:component_keyring_oci
用于获取机密值的 Oracle Cloud Infrastructure Vault 服务器的端点。Vault 端点是特定于 Vault 的,Oracle Cloud Infrastructure 在创建 Vault 时分配它。要获取端点 OCID,请查看您的 keyring_oci Vault 的配置详细信息,使用以下说明:管理 Vault。此值是必需的。
“secrets_endpoint”
:component_keyring_oci
用于列出、创建和停用机密的 Oracle Cloud Infrastructure 机密服务器的端点。机密端点是特定于 Vault 的,Oracle Cloud Infrastructure 在创建 Vault 时分配它。要获取端点 OCID,请查看您的 keyring_oci Vault 的配置详细信息,使用以下说明:管理 Vault。此值是必需的。
“master_key”
:component_keyring_oci
用于加密机密的 Oracle Cloud Infrastructure 主加密密钥的 OCID。在使用component_keyring_oci
之前,您必须为 Oracle Cloud Infrastructure 区隔创建一个加密密钥(如果它不存在)。为生成的密钥提供一个特定于 MySQL 的名称,不要将其用于其他目的。有关密钥创建的信息,请参见 管理密钥。此值是必需的。
“key_file”
: 包含component_keyring_oci
用于 Oracle Cloud Infrastructure 身份验证的 RSA 私钥的文件的路径名。您还必须使用控制台上传相应的 RSA 公钥。控制台将显示密钥指纹值,您可以使用它来设置"key_fingerprint"
值。有关生成和上传 API 密钥的信息,请参见 必需的密钥和 OCID。此值是必需的。
“key_fingerprint”
:component_keyring_oci
用于 Oracle Cloud Infrastructure 身份验证的 RSA 私钥的指纹。要获取创建 API 密钥时的密钥指纹,请执行以下命令openssl rsa -pubout -outform DER -in ~/.oci/oci_api_key.pem | openssl md5 -c
或者,从控制台获取指纹,控制台在您上传 RSA 公钥时会自动显示指纹。有关获取密钥指纹的信息,请参见 必需的密钥和 OCID。
此值是必需的。
“ca_certificate”
:component_keyring_oci
组件用于 Oracle Cloud Infrastructure 证书验证的 CA 证书捆绑文件路径名。该文件包含一个或多个用于对等验证的证书。如果未指定文件,则使用系统上安装的默认 CA 捆绑包。如果将该值设置为disabled
(区分大小写),则component_keyring_oci
将不执行证书验证。
鉴于上述配置文件属性,要配置 component_keyring_oci
,请在安装 component_keyring_oci
库文件的目录中创建一个名为 component_keyring_oci.cnf
的全局配置文件,并在数据目录中创建一个名为 component_keyring_oci.cnf
的本地配置文件(可选)。
执行任何特定于组件的配置后,启动服务器。通过检查性能架构 keyring_component_status
表来验证组件安装
mysql> SELECT * FROM performance_schema.keyring_component_status;
+---------------------+--------------------------------------------------------------------+
| STATUS_KEY | STATUS_VALUE |
+---------------------+--------------------------------------------------------------------+
| Component_name | component_keyring_oci |
| Author | Oracle Corporation |
| License | PROPRIETARY |
| Implementation_name | component_keyring_oci |
| Version | 1.0 |
| Component_status | Active |
| user | ocid1.user.oc1..aaaaaaaasqly<...> |
| tenancy | ocid1.tenancy.oc1..aaaaaaaai<...> |
| compartment | ocid1.compartment.oc1..aaaaaaaah2swh<...> |
| virtual_vault | ocid1.vault.oc1.iad.bbo5xyzkaaeuk.abuwcljtmvxp4r<...> |
| master_key | ocid1.key.oc1.iad.bbo5xyzkaaeuk.abuwcljrbsrewgap<...> |
| encryption_endpoint | bbo5xyzkaaeuk-crypto.kms.us-<...> |
| management_endpoint | bbo5xyzkaaeuk-management.kms.us-<...> |
| vaults_endpoint | vaults.us-<...> |
| secrets_endpoint | secrets.vaults.us-<...> |
| key_file | ~/.oci/oci_api_key.pem |
| key_fingerprint | ca:7c:e1:fa:86:b6:40:af:39:d6<...> |
| ca_certificate | disabled |
+---------------------+--------------------------------------------------------------------+
如果 Component_status
值为 Active
,则表示组件已成功初始化。
如果无法加载组件,则服务器启动失败。检查服务器错误日志以获取诊断消息。如果组件加载但由于配置问题而无法初始化,则服务器启动但 Component_status
值为 Disabled
。检查服务器错误日志,更正配置问题,并使用 ALTER INSTANCE RELOAD KEYRING
语句重新加载配置。
您可以查询 MySQL 服务器以获取现有密钥列表。要查看哪些密钥存在,请检查性能架构 keyring_keys
表。
mysql> SELECT * FROM performance_schema.keyring_keys;
+-----------------------------+--------------+----------------+
| KEY_ID | KEY_OWNER | BACKEND_KEY_ID |
+-----------------------------+--------------+----------------+
| audit_log-20210322T130749-1 | | |
| MyKey | me@localhost | |
| YourKey | me@localhost | |
+-----------------------------+--------------+----------------+
component_keyring_oci
支持构成标准 MySQL Keyring 服务接口的功能。这些功能执行的 Keyring 操作可以在 SQL 语句中访问,如 第 8.4.4.12 节“通用 Keyring 密钥管理功能” 中所述。
示例
SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');
有关 component_keyring_oci
允许的密钥值的特征的信息,请参见 第 8.4.4.10 节“支持的 Keyring 密钥类型和长度”。