GRANT(密钥)

将加密密钥权限授予用户或角色。

要撤销授予的权限,请参阅 REVOKE(密钥)

对于自己未拥有的加密对象,超级用户的访问权限有限。有关详细信息,请参阅数据库对象权限

语法

GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] } ON KEY
    key_name[,...]
    TO grantee[,...]
    [ WITH GRANT OPTION ]

参数

privilege

权限,可为以下之一:

  • USAGE:允许用户执行以下操作:

    密钥的 USAGE 还为将其用作私钥的证书提供了隐式 USAGE 权限。用户还可以从密钥或证书的所有权中获取此类权限。证书的 USAGE 权限允许用户执行以下操作:

    • 查看证书的内容。

    • 将证书添加(通过使用 CREATEALTER)到 TLS 配置。

    • 导入由 CA 签名的证书时重复使用 CA 证书。例如,如果用户导入证书链 A > B > C 且具有 B 的 USAGE,则数据库会重用 B(而不是创建 B 的副本)。

    • 指定 CA 证书已签署导入的证书。例如,如果证书 B 已签署证书 C,则 B 的 USAGE 允许用户导入 C 并指定它是 SIGNED BYB

  • DROP

  • ALTER:允许用户在各自的系统表中查看密钥及其关联的证书,但不能查看其内容。

key_name
目标密钥
grantee

指定向谁授予权限,可以为以下值之一:

WITH GRANT OPTION

授予被授予者权限,以便将相同权限授予其他用户或角色的,也可以撤销它们。有关详细信息,请参阅授予权限

特权

非超级用户:

  • 所有者

  • 权限被授予者可以选择 (WITH GRANT OPTION) 将权限授予其他用户或角色。

示例

以下示例将私钥的 USAGE 权限授予用户,该权限允许用户将自签名 CA 证书添加到 server TLS 配置:

=> CREATE KEY new_ca_key TYPE 'RSA' LENGTH 2048;
=> CREATE CA CERTIFICATE new_ca_cert
    SUBJECT '/C=US/ST=Massachusetts/L=Cambridge/O=Micro Focus/OU=Vertica/CN=Vertica example CA'
    VALID FOR 3650
    EXTENSIONS 'authorityKeyIdentifier' = 'keyid:always,issuer', 'nsComment' = 'new CA'
    KEY new_ca_key;

=> CREATE USER u1;
=> GRANT USAGE ON KEY new_ca_key TO u1;
=> GRANT ALTER ON TLS CONFIGURATION data_channel TO u1;

=> \c - u1

=> ALTER TLS CONFIGURATION data_channel ADD CA CERTIFICATES new_ca_cert;

-- clean up:
=> \c
=> ALTER TLS CONFIGURATION data_channel REMOVE CA CERTIFICATES new_ca_cert;
=> DROP KEY new_ca_key CASCADE;
=> DROP USER u1;