首页 > 解决方案 > JDBC 驱动程序连接需要什么权限?

问题描述

打包在jar文件中的外部代码。它包含以下简单代码

 Class.forName("com.teradata.jdbc.TeraDriver");
 Connection con = DriverManager.getConnection(url, user, password); 

这个 jar 从沙箱运行。

当我实施时效果很好AllPermission

Permissions permissions = new Permissions(); 
permissions.add(new AllPermission)); 

但是,当我施加限制时,它会引发错误

Caused by: java.lang.NullPointerException
at com.teradata.tdgss.jtdgss.TdgssConfigApi.GetMechanisms(Unknown Source)

这是我使用的权限列表

Permissions permissions = new Permissions(); 
permissions.add(new FilePermission(filePermission, "read,write,delete")); 
permissions.add(new PropertyPermission("*", "read,write")); 
permissions.add(new SocketPermission("*", "connect,resolve")); 
permissions.add(new NetPermission("setDefaultAuthenticator,requestPasswordAuthentication")); 
permissions.add(new SerializablePermission("enableSubstitution,enableSubclassImplementation")); 
permissions.add(new ReflectPermission("suppressAccessChecks")); 
// what permission is missing for the JDBC to work? 

JDBC 驱动程序需要哪些其他权限才能工作?

标签: javajdbcjava-security

解决方案


根据关于 JDBC 安全性的Oracle 博客,有很多权限需要设置。

可能丢失了SQLPermission,其他需要弄清楚。@Andreas 提供了一篇很棒的文章来解决安全问题


推荐阅读