文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  使用 Oracle Cloud Infrastructure Vault 密钥环组件

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

注意

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

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

MySQL 密钥环已开始从插件过渡到使用组件基础设施。component_keyring_oci 的引入是该工作流程的延续。有关更多信息,请参阅 密钥环组件与密钥环插件.

注意

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

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

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

  2. 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”:Oracle Cloud Infrastructure 用户的 OCID,component_keyring_oci 使用该 OCID 进行连接。在使用 component_keyring_oci 之前,用户帐户必须存在,并且必须授予其访问已配置的 Oracle Cloud Infrastructure 租户、隔间和 Vault 资源的权限。要从控制台获取用户 OCID,请使用 必需的密钥和 OCID 中的说明。

      此值是必需的。

    • “tenancy”:Oracle Cloud Infrastructure 租户的 OCID,component_keyring_oci 使用该 OCID 作为 MySQL 隔间的所在位置。在使用 component_keyring_oci 之前,您必须创建一个租户(如果尚不存在)。要从控制台获取租户 OCID,请使用 必需的密钥和 OCID 中的说明。

      此值是必需的。

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

      此值是必需的。

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

      此值是必需的。

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

      此值是必需的。

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

      此值是必需的。

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

      此值是必需的。

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

      此值是必需的。

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

      此值是必需的。

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

      此值是必需的。

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

      openssl rsa -pubout -outform DER -in ~/.oci/oci_api_key.pem | openssl md5 -c

      或者,从控制台获取指纹,控制台在您上传 RSA 公钥时会自动显示指纹。有关获取密钥指纹的信息,请参阅 必需的密钥和 OCID

      此值是必需的。

    • “ca_certificate”:CA 证书捆绑文件的文件名,component_keyring_oci 组件使用该文件进行 Oracle Cloud Infrastructure 证书验证。该文件包含一个或多个证书,用于对等验证。如果未指定文件,则使用系统上安装的默认 CA 捆绑包。如果该值设置为 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 服务接口的功能。这些功能执行的 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 密钥类型和长度”