Documentation Home
MySQL 8.0 参考手册  / 第 4 章 MySQL 程序  / 4.6 管理和实用程序  / 4.6.8 mysql_migrate_keyring — 密钥环密钥迁移实用程序  /  6.4.4.11 使用 Oracle Cloud Infrastructure Vault 密钥环组件

6.4.4.11 使用 Oracle Cloud Infrastructure Vault 密钥环组件

笔记

Oracle Cloud Infrastructure Vault 密钥环组件包含在商业产品 MySQL 企业版中。要了解有关商业产品的更多信息,请参阅https://www.mysql.com/products/

component_keyring_oci是与 Oracle Cloud Infrastructure Vault 通信以进行后端存储的组件基础设施的一部分。没有关键信息永久存储在 MySQL 服务器本地存储中。所有密钥都存储在 Oracle Cloud Infrastructure Vault 中,使该组件非常适合 Oracle Cloud Infrastructure MySQL 客户管理其 MySQL 企业版密钥。

在 MySQL 8.0.24 中,MySQL Keyring 开始从插件过渡到使用组件基础设施。MySQL 8.0.31 中的引入 component_keyring_oci是这一努力的延续。有关详细信息,请参阅 密钥环组件与密钥环插件

笔记

一次只能启用一个密钥环组件或插件。不支持启用多个密钥环组件或插件,结果可能与预期不同。

component_keyring_oci用于密钥库管理,您必须:

  1. 编写一个清单,告诉服务器加载 component_keyring_oci,如 第 6.4.4.2 节“密钥环组件安装”中所述。

  2. 为 编写配置文件 component_keyring_oci,如此处所述。

编写清单和配置文件后,您应该能够访问使用 keyring_oci插件创建的密钥,前提是您指定相同的配置选项集来初始化密钥环组件。内置的向后兼容性 component_keyring_oci简化了从密钥环插件到组件的迁移。

配置注意事项

初始化时,component_keyring_oci 读取全局配置文件或与本地配置文件配对的全局配置文件:

  • 组件尝试从安装组件库文件的目录(即服务器插件目录)读取其全局配置文件。

  • 如果全局配置文件指示使用本地配置文件,则组件会尝试从数据目录中读取其本地配置文件。

  • 尽管全局和本地配置文件位于不同的目录中,但文件名 component_keyring_oci.cnf在两个位置中。

  • 没有配置文件存在是错误的。 component_keyring_oci没有有效的配置无法初始化。

本地配置文件允许设置多个服务器实例以使用component_keyring_oci,这样每个服务器实例的组件配置特定于给定的数据目录实例。这使得相同的密钥环组件可以与每个实例的不同 Oracle Cloud Infrastructure Vault 一起使用。

假设您熟悉 Oracle Cloud Infrastructure 概念,但以下文档在设置资源时可能会有所帮助 component_keyring_oci

component_keyring_oci配置文件具有以下属性:

  • 配置文件必须采用有效的 JSON 格式。

  • 配置文件允许这些配置项:

    • "read_local_config":此项仅在全局配置文件中允许。如果该项不存在,则组件仅使用全局配置文件。如果该项存在,则其值为truefalse,指示组件是否应从本地配置文件读取配置信息。

      如果该"read_local_config"项目与其他项目一起出现在全局配置文件中,则组件 "read_local_config"首先检查项目值:

      • 如果值为false,则组件处理全局配置文件中的其他项并忽略本地配置文件。

      • 如果值为true,组件将忽略全局配置文件中的其他项并尝试读取本地配置文件。

    • “user”component_keyring_oci 用于连接的 Oracle Cloud Infrastructure 用户的 OCID。在使用 之前 component_keyring_oci,用户帐户必须存在并被授予访问权限才能使用配置的 Oracle Cloud Infrastructure 租赁、隔离区和保管库资源。要从控制台获取用户 OCID,请使用 Required Keys and OCIDs中的说明。

      该值是强制性的。

    • “tenancy”component_keyring_oci:用作 MySQL 隔间位置的Oracle Cloud Infrastructure 租赁的 OCID 。在使用 之前 component_keyring_oci,您必须创建一个租赁(如果不存在)。要从控制台获取租赁 OCID,请使用 Required Keys and OCIDs中的说明。

      该值是强制性的。

    • “compartment”component_keyring_oci用作 MySQL 密钥位置的租户隔离区的 OCID。在使用 之前 component_keyring_oci,您必须创建一个 MySQL 隔离区或子隔离区(如果不存在)。此隔间不应包含保管库密钥或保管库机密。它不应该被 MySQL Keyring 以外的系统使用。有关管理隔离区和获取 OCID 的信息,请参阅 管理隔离区。

      该值是强制性的。

    • “virtual_vault”component_keyring_oci用于加密操作的 Oracle Cloud Infrastructure Vault 的 OCID。在使用 之前 component_keyring_oci,您必须在 MySQL 区间中创建一个新的保管库(如果它不存在)。(或者,您可以重用 MySQL 隔间的父隔间中的现有保险库。)隔间用户只能查看和使用其各自隔间中的密钥。有关创建保管库和获取保管库 OCID 的信息,请参阅 管理保管库

      该值是强制性的。

    • “encryption_endpoint”component_keyring_oci用于为新密钥生成加密或编码信息(密文)的 Oracle Cloud Infrastructure 加密服务器端点。加密端点特定于保管库,Oracle 云基础设施在创建保管库时分配它。要获取端点 OCID,请使用管理保管库中的说明查看 keyring_oci 保管库的配置详细信息 。

      该值是强制性的。

    • "management_endpoint"component_keyring_oci用于列出现有密钥的 Oracle Cloud Infrastructure 密钥管理服务器端点。密钥管理端点特定于保管库,Oracle 云基础设施在创建保管库时分配它。要获取端点 OCID,请使用管理保管库中的说明查看 keyring_oci 保管库的配置详细信息 。

      该值是强制性的。

    • “vaults_endpoint”component_keyring_oci用于获取机密值的 Oracle Cloud Infrastructure 保险库服务器端点。保险库端点是特定于保险库的,Oracle 云基础设施在创建保险库时分配它。要获取端点 OCID,请使用管理保管库中的说明查看 keyring_oci 保管库的配置详细信息 。

      该值是强制性的。

    • “secrets_endpoint”component_keyring_oci用于列出、创建和停用机密的 Oracle Cloud Infrastructure 机密服务器端点。机密端点是特定于保管库的,Oracle 云基础设施在创建保管库时分配它。要获取端点 OCID,请使用管理保管库中的说明查看 keyring_oci 保管库的配置详细信息 。

      该值是强制性的。

    • “master_key”:用于机密加密的 Oracle Cloud Infrastructure 主加密密钥的 OCID component_keyring_oci。在使用 之前 component_keyring_oci,您必须为 Oracle Cloud Infrastructure 区间创建一个加密密钥(如果它不存在)。为生成的密钥提供 MySQL 特定的名称,不要将其用于其他目的。有关密钥创建的信息,请参阅 管理密钥

      该值是强制性的。

    • “key_file”component_keyring_oci:包含用于 Oracle Cloud Infrastructure 身份验证的 RSA 私钥的文件的路径名 。您还必须使用控制台上传相应的 RSA 公钥。控制台显示密钥指纹值,您可以使用它来设置 "key_fingerprint"值。有关生成和上传 API 密钥的信息,请参阅 Required Keys and OCIDs

      该值是强制性的。

    • “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 公钥时自动显示指纹。有关获取密钥指纹的信息,请参阅 Required Keys and OCIDs

      该值是强制性的。

    • “ca_certificate”component_keyring_oci组件用于 Oracle Cloud Infrastructure 证书验证的 CA 证书包文件的路径名。该文件包含一个或多个用于对等验证的证书。如果未指定文件,则使用系统上安装的默认 CA 捆绑包。如果该值设置为disabled (区分大小写), component_keyring_oci则不执行证书验证。

鉴于上述配置文件属性,要配置,在安装库文件的目录中component_keyring_oci创建一个名为的全局配置文件 ,并可选择 在数据目录中创建一个本地配置文件,也命名为。 component_keyring_oci.cnfcomponent_keyring_ocicomponent_keyring_oci.cnf

验证组件安装

执行任何特定于组件的配置后,启动服务器。通过检查 Performance Schema 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-ashburn-1.oraclecloud.com              |
| management_endpoint | bbo5xyzkaaeuk-management.kms.us-ashburn-1.oraclecloud.com          |
| vaults_endpoint     | vaults.us-ashburn-1.oci.oraclecloud.com                            |
| secrets_endpoint    | secrets.vaults.us-ashburn-1.oci.oraclecloud.com                    |
| 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 服务器查询现有键的列表。要查看存在哪些键,请检查 Performance Schema 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 |                |
+-----------------------------+--------------+----------------+
Vault 密钥环组件使用

component_keyring_oci支持构成标准 MySQL Keyring 服务接口的功能。可以在两个级别访问由这些函数执行的密钥环操作:

示例(使用 SQL 接口):

SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');

有关 允许的密钥值特征的信息component_keyring_oci,请参阅 第 6.4.4.13 节,“支持的密钥环密钥类型和长度”