配置对 SecureData 的访问权限

Vertica 集成函数需要使用多条信息才能连接到 SecureData 并对其进行身份验证。

SecureData 全局配置设置

SecureData 集成具有一个必需的设置和两个可选设置,您可以使用 VoltageSecureConfigureGlobal 函数对其进行全局设置。此函数将设置保存到名为 /voltagesecure/conf.global 的配置文件中,该文件存储在 Vertica 分布式文件系统 (DFS) 中。Vertica 使用此文件系统来存储所有节点都可以访问的数据。在使用任何其他 SecureData 集成函数之前,必须使用此函数创建该文件。所有可以访问 SecureData 函数的用户都可以访问此文件中的设置。

必需设置的是 SecureData 策略文件的 URL。此文件为 SecureData 集成库提供有关如何配置 SecureData 设备的详细信息。此库还使用此 URL 来确定 SecureData 设备的地址。

两个可选设置是:

  • allow_short_fpe: 设置为 True 时,SecureData 将忽略编码 FPE 值的长度下限。通常,SecureData 不使用 FPE 来加密短于下限(通常为 8 位)的数据。有关详细信息,请参阅《SecureData 架构指南》的“数据长度限制”部分。

  • enable_file_cache: 设置为 True 时,Vertica 会将 SecureData 策略文件和加密密钥缓存到磁盘,而不仅仅是内存。默认为 false。

此示例将策略 URL 全局设置为 https://voltage-pp-0000.example.com/policy/clientPolicy.xml 并将网络超时设置为 200 秒。

=> SELECT VoltageSecureConfigureGlobal(USING PARAMETERS
                                       policy_url='https://voltage-pp-0000.example.com/policy/clientPolicy.xml',
                                       NETWORK_TIMEOUT=200)
                                       OVER ();

                           policy_url                            | allow_short_fpe | enable_file_cache | network_timeout
-----------------------------------------------------------------+-----------------+-------------------+-----------------
 https://voltage-pp-0000.example.com/policy/clientPolicy.xml     |                 |                   | 200
(1 row)

跨节点手动刷新客户端策略:

=> SELECT VoltageSecureRefreshPolicy() OVER ();
                                  PolicyRefresh
-------------------------------------------------------------------------------------
Successfully refreshed policy on node [v_sandbox_node0001]. Policy on other nodes
will be refreshed the next time a Voltage operation is run on them.
(1 row)

SecureData 用户配置设置

其余的 SecureData 设置用于定义 SecureData 用户信息。这些设置通常特定于访问集成函数的每个用户。但是,您可以让所有 Vertica 用户共享相同的 SecureData 用户配置。这些设置是:

  • SecureData 的身份验证凭据。所需的确切信息取决于 SecureData 设备的配置。可以使用以下四种设置:
    • username:用于标识自己的用户名。用户名由 LDAP(使用 LDAP 身份验证时)定义,或由 SecureData 设备(使用共享密钥身份验证时)定义。

    • identity:要使用的 SecureData 身份。有关 SecureData 中身份的详细信息,请参阅《SecureData 管理员指南》。身份通常采用电子邮件地址的形式。当 SecureData 设备使用 LDAP 身份验证时,LDAP 帐户必须具有对该身份的访问权限。

    • shared_secret:在 SecureData 中设置的密码。

    • password:使用 SecureData 进行身份验证时要使用的 LDAP 密码。

您可以同时提供用户名和身份,具体取决于 SecureData 设备的配置。可以将 SecureData 设备配置为根据 SecureData 用户名提供身份。

但是,只能使用 shared_secret 或密码。如果同时设置了这两个参数,Vertica SecureData 函数将退出并返回错误。

您可以使用以下两个选项来设置这些配置值:在用户定义的会话参数中进行设置,或者将值保存到存储在 Vertica 分布式文件系统中的配置文件中。

设置 SecureDate 用户会话参数

使用 ALTER SESSION 语句为 voltagesecurelib 库设置参数。此库包含所有 SecureData 函数。以下示例演示如何配置会话以使用共享密钥身份验证访问 SecureData。


=> ALTER SESSION SET UDPARAMETER FOR voltagesecurelib identity='alice@example.com';
ALTER SESSION
=> ALTER SESSION SET UDPARAMETER FOR voltagesecurelib username='alice';
ALTER SESSION
=> ALTER SESSION SET UDPARAMETER FOR voltagesecurelib shared_secret='my_shared_secret';
ALTER SESSION

设置后,这些参数仅在会话期间使用。

将参数保存到配置文件中

可以使用 VoltageSecureConfigure 函数将 SecureData 用户参数保存到 DFS 中的配置文件中。必须为配置文件提供文件名。可以选择将 SecureData 参数存储在用户特定的文件中,只需提供一个文件名,例如 securedata.conf。在后台,配置文件将存储在 DFS 中以您的用户名命名的目录下。此目录可防止您的配置文件与其他用户的文件发生冲突。访问配置文件时不需要使用此目录名称。

还可以将配置参数存储在名为 /voltagesecure/conf 的绝对文件中。所有有权访问 SecureData 集成函数的用户都可以在其函数调用中使用此配置文件。如果访问 SecureData 函数的所有用户共享相同的 SecureData 用户设置,则您也可以使用此文件。

会话参数中的值会覆盖配置文件中的值。

您可以使用要保存到配置文件的参数调用 VoltageSecureConfigure。未在此函数调用中设置的值也不会在配置文件中设置。必须使用会话参数将这些值提供给其他 SecureData 集成函数。

如果选择将密码或共享密钥保存到配置文件中,则不会直接将其传递给 VoltageSecureConfigure 函数。而是在适当的会话变量中设置值,然后将 VoltageSecureConfigure 的 store_passwordstore_shared_secret 参数设置为 true。当这些参数中的任何一个为 true 时,VoltageSecureConfigure 会从会话变量中读取值并将其保存到配置文件中。

示例:创建用户特定的配置文件

以下示例显示了如何创建用户特定的配置文件。此示例不存储密码或共享密钥等信息,因此仍必须为这些值设置会话参数,然后才能调用其他 SecureData 集成函数。

=> \x
Expanded display is on.
=> SELECT VoltageSecureConfigure(USING PARAMETERS config_dfs_path='voltage.conf',
                                 username='alice', identity='alice@example.com', store_password=false
                                ) OVER ();
-[ RECORD 1 ]-----+----------------------------------------------------------------
config_dfs_path   | voltage.conf
identity          | alice@example.com
username          | alice