GRANT(密钥)
将加密密钥权限授予用户或角色。
重要
因为证书依赖于它们的底层密钥,所以当与 DROP KEY...CASCADE 一起使用时,对密钥的 DROP 权限有效地充当其关联证书的 DROP 权限。要撤销授予的权限,请参阅 REVOKE(密钥)。
对于自己未拥有的加密对象,超级用户的访问权限有限。有关详细信息,请参阅数据库对象权限。
语法
GRANT { privilege[,...] | ALL [ PRIVILEGES ] [ EXTEND ] } ON KEY
key_name[,...]
TO grantee[,...]
[ WITH GRANT OPTION ]
参数
- privilege
权限,可为以下之一:
-
USAGE:允许用户执行以下操作:
密钥的 USAGE 还为将其用作私钥的证书提供了隐式 USAGE 权限。用户还可以从密钥或证书的所有权中获取此类权限。证书的 USAGE 权限允许用户执行以下操作:
-
- 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;