您可以创建一个授权对象,用于以加密形式存储用户的 Teradata 连接器凭据。授权对象存储用户凭据,并在外部服务器中用于将这些凭据传递到远程系统进行身份验证。
- 当相应用户使用 AS INVOKER TRUSTED 创建授权时,授权缺省存储在用户数据库上。
- 不需向其他人透露安全系统的凭据,仅具有该数据库权限的用户可以访问授权对象。
您可以在多个 Teradata 系统用户和远程系统上的一个用户之间建立多对一映射,从而简化管理。只有授权的创建者需要知道远程安全系统上的用户的凭据。使用 AS DEFINER TRUSTED 创建授权时,缺省情况下会将授权存储在 TD_SERVER_DB 数据库中,这样可全局使用授权。
对于 Teradata 到 Presto 连接,创建授权对象并在外部服务器的 USING 子句中使用。Teradata 将授权对象中的凭据传递到 Presto 连接器,Presto 连接器会对用户进行身份验证,然后再将查询发送到数据源。
外部服务器查找授权对象的位置
使用 INVOKER 时,授权存储在用户的数据库中;每个用户都可以使用自己的凭据登录到远程系统。如果使用 INVOKER 关键字配置外部服务器,且不指定数据库名称 (dbname) 的值,则 Presto 或 Hive 连接器会自动在会话用户的用户数据库中查找授权。
使用 INVOKER
本示例在创建者的用户数据库中创建 remote_presto1 授权对象。如果创建者是 td_user,则 td_user.remote_presto1 是完全限定的对象名称。
create authorization remote_presto1 as invoker trusted user 'active_user' password 'active_pass';
本示例创建使用 remote_presto1 授权对象的外部服务器对象。
create foreign server Presto_1 external security invoker trusted remote_presto1 using link('td1_presto1') version('active') DO IMPORT WITH TD_SYSFNLIB.QGInitiatorImport, DO EXPORT WITH TD_SYSFNLIB.QGInitiatorExport;
link值 td1_presto1 在 QueryGrid 门户组件中创建。该链接定义发起和目标网络,指定定义连接器之间数据传输规则的通信策略以及其他属性。
当使用 DEFINER 关键字配置外部服务器且未指定数据库名称 (dbname) 的值时,Teradata 连接器会自动在 TD_SERVER_DB 数据库中查找授权。
使用 DEFINER
本示例创建 remote_presto1 授权对象。
create authorization td_server_db.remote_presto1 as definer trusted user 'active_proxy_user' password 'active_proxy_pass';
本示例创建一个使用 remote_presto1 授权对象的外部服务器对象。
create foreign server Presto_1 external security definer trusted remote_presto1 using link('td1_presto1') version('active') DO IMPORT WITH TD_SYSFNLIB.QGInitiatorImport, DO EXPORT WITH TD_SYSFNLIB.QGInitiatorExport;
link值 td1_presto1 在 QueryGrid 门户组件中创建。该链接定义发起和目标网络,指定定义连接器之间数据传输规则的通信策略以及其他属性。
有关详细信息,请参阅CREATE AUTHORIZATION 和 REPLACE AUTHORIZATION。