Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Using the Oracle Cloud Infrastructure Vault Keyring Component

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

Note

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

component_keyring_oci 是组件基础结构的一部分,用于与 Oracle Cloud Infrastructure Vault 进行后端存储通信。在 MySQL 服务器本地存储中不永久存储密钥信息。所有密钥都存储在 Oracle Cloud Infrastructure Vault 中,使得该组件非常适合 Oracle Cloud Infrastructure MySQL 客户管理他们的 MySQL Enterprise Edition 密钥。

MySQL 密钥环开始从插件转换为使用组件基础结构。component_keyring_oci 的引入是该努力的继续。有关更多信息,请参阅 密钥环组件与密钥环插件

Note

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

要使用 component_keyring_oci 进行密钥库管理,您必须:

  1. 编写一个清单,告诉服务器加载 component_keyring_oci,如 第 8.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" 项在全局配置文件中存在,组件将首先检查该项的值:

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

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

    • “user”:Oracle Cloud Infrastructure 用户的 OCID,component_keyring_oci 用于连接。在使用 component_keyring_oci 之前,用户账户必须存在并被授予访问配置的 Oracle Cloud Infrastructure 租户、compartment 和 vault 资源的权限。要从控制台获取用户 OCID,请按照 Required Keys and OCIDs 中的说明操作。

      该值是必需的。

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

      该值是必需的。

    • “compartment”:Oracle Cloud Infrastructure compartment 的 OCID,component_keyring_oci 用于 MySQL 键的位置。在使用 component_keyring_oci 之前,您必须创建一个 MySQL compartment 或子 compartment,如果它不存在。该 compartment 应该不包含任何 vault 键或 vault 秘密。它不应该被其他系统以外的 MySQL Keyring 使用。有关管理 compartment 和获取 OCID 的信息,请参阅 Managing Compartments

      该值是必需的。

    • “virtual_vault”:Oracle Cloud Infrastructure Vault 的 OCID,component_keyring_oci 用于加密操作。在使用 component_keyring_oci 之前,您必须在 MySQL compartment 中创建一个新的 vault,如果它不存在。(或者,您可以重用一个已经存在的 vault,该 vault 位于 MySQL compartment 的父 compartment 中。)compartment 用户只能看到和使用他们各自 compartment 中的键。有关创建 vault 和获取 vault OCID 的信息,请参阅 Managing Vaults

      该值是必需的。

    • “encryption_endpoint”:Oracle Cloud Infrastructure 加密服务器的端点,component_keyring_oci 用于生成新的加密或编码信息(密文)。加密端点是 vault 特定的,Oracle Cloud Infrastructure 在 vault 创建时分配它。要获取端点 OCID,请查看您的 keyring_oci vault 的配置详细信息,使用 Managing Vaults 中的说明。

      该值是必需的。

    • "management_endpoint":Oracle Cloud Infrastructure 密钥管理服务器的端点,component_keyring_oci 用于列出现有的密钥。密钥管理端点是 vault 特定的,Oracle Cloud Infrastructure 在 vault 创建时分配它。要获取端点 OCID,请查看您的 keyring_oci vault 的配置详细信息,使用 Managing Vaults 中的说明。

      该值是必需的。

    • “vaults_endpoint”:Oracle Cloud Infrastructure vaults 服务器的端点,component_keyring_oci 用于获取秘密的值。vaults 端点是 vault 特定的,Oracle Cloud Infrastructure 在 vault 创建时分配它。要获取端点 OCID,请查看您的 keyring_oci vault 的配置详细信息,使用 Managing Vaults 中的说明。

      该值是必需的。

    • “secrets_endpoint”: Oracle Cloud Infrastructure 秘密服务器的端点,component_keyring_oci 用于列出、创建和退休秘密。该秘密端点是 vault 特定的,Oracle Cloud Infrastructure 在 vault 创建时分配它。要获取端点 OCID,请查看您的 keyring_oci vault 配置详细信息,按照 管理 Vault 中的说明。

      该值是必需的。

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

      该值是必需的。

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

      该值是必需的。

    • “key_fingerprint”: component_keyring_oci 用于 Oracle Cloud Infrastructure 身份验证的 RSA 私钥指纹。要获取密钥指纹,请执行以下命令:

      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 证书 bundle 文件路径。该文件包含一个或多个用于对等验证的证书。如果未指定文件,将使用系统上安装的默认 CA bundle。如果值设置为 disabled(区分大小写),component_keyring_oci 将不执行证书验证。

根据前面的配置文件属性,为了配置 component_keyring_oci,请在 component_keyring_oci 库文件安装的目录中创建一个名为 component_keyring_oci.cnf 的全局配置文件,并可选地在数据目录中创建一个名为 component_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-<...>                                  |
| 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 服务器以获取现有密钥的列表。要查看哪些密钥存在,请检查 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 Keyring 组件使用

component_keyring_oci 支持标准 MySQL Keyring 服务接口的函数。这些函数的密钥操作可以在两个级别上访问:

示例(使用 SQL 接口):

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

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