Customize this policy if you run Derby tools against an embedded Derby engine.
This policy grants essential permissions to the tools, engine, and shared modules.
grant codeBase "${derby.install.url}derbyshared.jar"
{
// Needed to determine whether the JVM was booted with a module path.
permission java.util.PropertyPermission "jdk.module.path", "read";
// Need in order to read message localizations from other derby jars
// when running with a module path.
permission java.io.FilePermission "${derby.install.path}${/}-", "read";
// Gives permission for JMX to be used against Derby
// but only if JMX authentication is not being used.
// In that case the application would need to create
// a whole set of fine-grained permissions to allow specific
// users access to MBeans and actions they perform.
permission org.apache.derby.shared.common.security.SystemPermission "engine", "monitor";
permission org.apache.derby.shared.common.security.SystemPermission "server", "monitor";
};
grant codeBase "${derby.install.url}derby.jar"
{
// These permissions are needed for everyday, embedded Derby usage.
permission java.lang.RuntimePermission "createClassLoader";
permission java.util.PropertyPermission "derby.*", "read";
permission java.util.PropertyPermission "user.dir", "read";
permission org.apache.derby.shared.common.security.SystemPermission "engine", "usederbyinternals";
permission java.io.FilePermission "${derby.system.home}","read,write";
permission java.io.FilePermission "${derby.system.home}${/}-", "read,write,delete";
permission java.io.FilePermission "${derby.system.home}${/}derby.properties", "read";
permission java.io.FilePermission "${derby.system.home}${/}derby.log", "read,write,delete";
// Properties needed to determine if the VM is 32 or 64 bit.
permission java.util.PropertyPermission "sun.arch.data.model", "read";
permission java.util.PropertyPermission "os.arch", "read";
// Gives permission for JMX to be used against Derby
// but only if JMX authentication is not being used.
// In that case the application would need to create
// a whole set of fine-grained permissions to allow specific
// users access to MBeans and actions they perform.
permission org.apache.derby.shared.common.security.SystemPermission "jmx", "control";
permission org.apache.derby.shared.common.security.SystemPermission "engine", "monitor";
permission org.apache.derby.shared.common.security.SystemPermission "server", "monitor";
// Permissions needed for JMX based management and monitoring.
permission javax.management.MBeanServerPermission "createMBeanServer";
// Allows access to Derby's built-in MBeans, within the domain
// org.apache.derby. Derby must be allowed to register and unregister these
// MBeans. To fine tune this permission, see the javadoc of
// javax.management.MBeanPermission or the JMX Instrumentation and Agent Specification.
permission javax.management.MBeanPermission "org.apache.derby.*#[org.apache.derby:*]", "registerMBean,unregisterMBean";
// Trusts Derby code to be a source of MBeans and to register these in the MBean server.
permission javax.management.MBeanTrustPermission "register";
// Optional permission needed for printing classpath information to derby.log.
permission java.lang.RuntimePermission "getProtectionDomain";
// The following permission must be granted for Connection.abort(Executor) to work.
// Note that this permission must also be granted to outer (application) code domains.
permission java.sql.SQLPermission "callAbort";
// Needed by FileUtil#limitAccessToOwner.
permission java.lang.RuntimePermission "accessUserInformation";
permission java.lang.RuntimePermission "getFileStoreAttributes";
};
grant codeBase "${derby.install.url}derbytools.jar"
{
// Access all properties using System.getProperties -
// ij enumerates the properties in order to open connections
// for any property set in ij.connection.* and set protocols
// for any property in ij.protocol.*
permission java.util.PropertyPermission "*", "read,write";
// Needed by sysinfo. The file permission is needed to check the existence
// of jars on the classpath. You can limit this permission to just the locations
// which hold your jar files.
permission java.util.PropertyPermission "user.*", "read";
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "java.class.path", "read";
permission java.util.PropertyPermission "java.runtime.version", "read";
permission java.util.PropertyPermission "java.fullversion", "read";
permission java.lang.RuntimePermission "getProtectionDomain";
permission org.apache.derby.shared.common.security.SystemPermission "engine", "usederbyinternals";
permission java.io.FilePermission "<<ALL FILES>>", "read";
};