管理模型安全

您可以使用 GRANT 和 REVOKE 语句来管理模型的安全权限。以下示例展示了如何使用 faithful 表和 linearReg 模型更改 user1 和 user2 的权限。

  • 在以下示例中,dbadmin 将 SELECT 权限授予 user1:

    => GRANT SELECT ON TABLE faithful TO user1;
    
    GRANT PRIVILEGE
    
  • 然后,dbadmin 将公共架构的 CREATE 权限授予 user1:

    => GRANT CREATE ON SCHEMA public TO user1;
    GRANT PRIVILEGE
    
  • 以 user1 身份连接到数据库:

    => \c - user1
    
  • 以 user1 身份构建 linearReg 模型:

=> SELECT LINEAR_REG('linearReg', 'faithful', 'waiting', 'eruptions');
LINEAR_REG
---------------------------
Finished in 1 iterations
(1 row)
  • 以 user1 身份将 USAGE 权限授予 user2:
=> GRANT USAGE ON MODEL linearReg TO user2;
GRANT PRIVILEGE
  • 以 user2 身份连接到数据库:
=> \c - user2
  • 要确认权限已授予 user2,请运行 GET_MODEL_SUMMARY 函数。对模型具有 USAGE 权限的用户可以在该模型上运行 GET_MODEL_SUMMARY:
=> SELECT GET_MODEL_SUMMARY(USING PARAMETERS model_name='linearReg');

=======
details
=======
predictor|coefficient|std_err |t_value |p_value
---------+-----------+--------+--------+--------
Intercept| 33.47440  | 1.15487|28.98533| 0.00000
eruptions| 10.72964  | 0.31475|34.08903| 0.00000

==============
regularization
==============
type| lambda
----+--------
none| 1.00000

===========
call_string
===========
linear_reg('public.linearReg', 'faithful', '"waiting"', 'eruptions'
USING PARAMETERS optimizer='newton', epsilon=1e-06, max_iterations=100, regularization='none', lambda=1)

===============
Additional Info
===============
Name              |Value
------------------+-----
iteration_count   |  1
rejected_row_count|  0
accepted_row_count| 272
(1 row)
  • 以 user1 身份连接到数据库:
=> \c - user1
  • 然后,您可以使用 REVOKE 语句撤销 user2 的权限:
=> REVOKE USAGE ON MODEL linearReg FROM user2;
REVOKE PRIVILEGE
  • 要确认权限已撤销,请以用户 2 身份连接并运行 GET_MODEL_SUMMARY 函数:
=> \c - user2
=>SELECT GET_MODEL_SUMMARY('linearReg');
ERROR 7523:  Problem in get_model_summary.
Detail: Permission denied for model linearReg

另请参阅