Referência de permissão do Java

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

O que você precisa saber sobre as políticas de permissão do Java

Se você estiver desenvolvendo políticas do Java Callout, será necessário saber quais políticas de permissão estão em vigor na JVM da Apigee e como elas afetarão seu código. Por exemplo, seu código Java personalizado não tem acesso ilimitado ao sistema de arquivos. No entanto, no caso de acesso ao sistema de arquivos, é possível ler determinados arquivos, como arquivos de recursos de políticas. No entanto, a maioria dos outros acessos ao sistema de arquivos está bloqueada. Este tópico lista todos os tipos de permissão do JDK e os respectivos destinos ou ações. Para cada destino ou ação, especificamos a política de permissão e todas as exceções que você precisa saber.

Para saber mais sobre os tipos de permissão do JDK e o que cada uma permite, consulte Permissões no Java Development Kit (JDK).

Tipo de permissão Nome do destino ou da ação Permissão concedida
java.awt.AWTPermission
accessClipboard NÃO
accessEventQueue NÃO
accessSystemTray NÃO
createRobot NÃO
fullScreenExclusive NÃO
listenToAllAWTEvents NÃO
readDisplayPixels NÃO
replaceKeyboardFocusManager NÃO
setAppletStub NÃO
setWindowsAlwaysOnTop NÃO
showWindowWithoutWarningBanner NÃO
toolkitModality NÃO
watchMousePointer NÃO
java.io.FilePermission

Uma java.io.FilePermission representa o acesso a um arquivo ou diretório. Uma FilePermission consiste em um nome de caminho e um conjunto de ações válidas para esse nome de caminho.
read SIM, mas há restrições. Consulte Restrições.
write NÃO
run NÃO
delete NÃO
readLink SIM
java.io.SerializablePermission

Uma SerializablePermission contém um nome (também conhecido como "nome de destino"), mas nenhuma lista de ações. Você tem ou não a permissão nomeada.
enableSubclassImplementation SIM
enableSubstitution NÃO
java.lang.management.ManagementPermission

Métodos definidos na interface de gerenciamento da plataforma Java
controle NÃO
monitor NÃO
java.lang.reflect.ReflectPermission

Para operações reflexivas. Uma ReflectPermission é uma permissão nomeada e não tem ações
suppressAccessChecks NÃO
newProxyInPackage.{package name} NÃO
java.lang.RuntimePermission

Contém um nome (também conhecido como "nome de destino"), mas nenhuma lista de ações. Você tem ou não a permissão nomeada.
createClassLoader NÃO
getClassLoader SIM
setContextClassLoader SIM
enableContextClassLoaderOverride SIM
closeClassLoader NÃO
setSecurityManager NÃO
createSecurityManager NÃO
getenv.{variable name} NÃO
exitVM.{exit status} NÃO
shutdownHooks NÃO
setFactory NÃO
setIO NÃO
modifyThread SIM
stopThread SIM
modifyThreadGroup SIM
getProtectionDomain SIM
getFileSystemAttributes NÃO
readFileDescriptor SIM
writeFileDescriptor NÃO
loadLibrary.{library name} NÃO
accessClassInPackage. {package name} SIM
defineClassInPackage. {package name} NÃO
accessDeclaredMembers NÃO
queuePrintJob NÃO
getStackTrace NÃO
setDefaultUncaughtExceptionHandler NÃO
preferences NÃO
usePolicy NÃO
java.net.NetPermission

Uma NetPermission contém um nome, mas nenhuma lista de ações. Você tem ou não a permissão nomeada.
setDefaultAuthenticator NÃO
requestPasswordAuthentication NÃO
specifyStreamHandler SIM
setProxySelector NÃO
getProxySelector NÃO
setCookieHandler NÃO
getCookieHandler NÃO
setResponseCache NÃO
getResponseCache NÃO
getNetworkInformation NÃO
java.net.SocketPermission

Representa o acesso a uma rede por meio de soquetes. Uma SocketPermission consiste em uma especificação de host e um conjunto de "ações" que especificam maneiras de se conectar ao host.
host = (nomedohost | endereçoIP)[:intervalodeportas]
intervalodeportas = númerodaporta | -númerodaporta | númerodaporta-[númerodaporta]

As formas possíveis de se conectar ao host são

accept
connect
listen
resolve

A ação "listen" é útil apenas quando usada com "localhost". A ação "resolve" (resolver pesquisas de serviço de nome de host/IP) está implícita quando qualquer uma das outras ações está presente.
resolve SIM
conectar

SIM, mas há restrições. Consulte Restrições.

A Apigee restringe o acesso a endereços sitelocal, anylocal, loopback e linklocal.

listen,
accept
NÃO
java.net.URLPermission

Representa a permissão para acessar um recurso ou conjunto de recursos definidos por um determinado URL, e para um conjunto específico de métodos de solicitação e cabeçalhos de solicitação definidos pelo usuário. O nome da permissão é a string de URL. A string de ações é uma concatenação dos métodos e cabeçalhos de solicitação. O intervalo de nomes de métodos e cabeçalhos não é restrito por essa classe.
SIM
LinkPermission

A classe Permission para operações de criação de links.
hard NÃO
symbolic NÃO
java.security.SecurityPermission

Uma SecurityPermission contém um nome (também chamado de "nome de destino"), mas nenhuma lista de ações. Você tem ou não a permissão nomeada.
O nome do destino é o nome de um parâmetro de configuração de segurança (veja abaixo). Atualmente, o objeto SecurityPermission é usado para proteger o acesso aos objetos de política, segurança, provedor, signatário e identidade.
createAccessControlContext NÃO
getDomainCombiner NÃO
getPolicy NÃO
setPolicy NÃO
createPolicy.{policy type} NÃO
getProperty.{key} NÃO
setProperty.{key} NÃO
insertProvider NÃO
removeProvider.{provider name} NÃO
clearProviderProperties.{provider name} NÃO
putProviderProperty.{provider name} NÃO
removeProviderProperty.{provider name} NÃO
SQLPermission setLog NÃO
callAbort NÃO
setSyncFactory NÃO
setNetworkTimeout NÃO
deregisterDriver NÃO
java.util.logging.LoggingPermission

Um SecurityManager verificará o objeto java.util.logging.LoggingPermission quando o código em execução com um SecurityManager chamar um dos métodos de controle de geração de registros (como Logger.setLevel).
controle NÃO
java.util.PropertyPermission
O nome é o nome da propriedade ("java.home", "os.name" etc.). A convenção de nomenclatura segue a convenção de nomenclatura da propriedade hierárquica. Além disso, um asterisco pode aparecer no final do nome, após um "." ou sozinho, para indicar uma correspondência de caractere curinga. Por exemplo: "java.*" ou "*" é válido, "*java" ou "a*b" não é válido.

As ações a serem concedidas são transmitidas para o construtor em uma string que contém uma lista de zero ou mais palavras-chave separadas por vírgulas.
read SIM
write NÃO
javax.xml.ws.WebServicePermission
publishEndpoint NÃO
javax.xml.bind.JAXBPermission setDatatypeConverter NÃO
javax.sound.sampled.AudioPermission

Direitos de acesso aos recursos do sistema de áudio.
play NÃO
record NÃO
javax.security.auth.PrivateCredentialPermission

Proteger o acesso a credenciais particulares pertencentes a um assunto específico. O assunto é representado por um conjunto de principais. O nome de destino dessa permissão especifica um nome de classe de credencial e um conjunto de principais. O único valor válido para as ações dessa permissão é "read".
CredentialClass {PrincipalClass "PrincipalName"}* NÃO
javax.security.auth.kerberos.ServicePermission

Proteger os serviços do Kerberos e as credenciais necessárias para acessar esses serviços.
initiate NÃO
accept NÃO
javax.security.auth.kerberos.DelegationPermission

Usado para restringir o uso do modelo de delegação do Kerberos, ou seja, tíquetes que podem ser encaminhados e usados como proxy.

O nome de destino desta permissão especifica um par de principais de serviço do Kerberos. O primeiro é o principal de serviço subordinado de confiança para usar o tíquete de concessão de tíquete (TGT, na sigla em inglês). O segundo principal de serviço designa o serviço de destino com o qual o principal de serviço subordinado interage em nome do KerberosPrincipal de inicialização.
initiate NÃO
accept NÃO
javax.security.auth.AuthPermission

Atualmente, o objeto AuthPermission é usado para proteger o acesso aos objetos Subject, SubjectDomainCombiner, LoginContext e Configuration.
doAs NÃO
doAsPrivileged NÃO
getSubject NÃO
getSubjectFromDomainCombiner NÃO
setReadOnly NÃO
modifyPrincipals NÃO
modifyPublicCredentials NÃO
modifyPrivateCredentials NÃO
refreshCredential NÃO
destroyCredential NÃO
createLoginContext.{name} NÃO
getLoginConfiguration NÃO
setLoginConfiguration NÃO
createLoginConfiguration.{configuration type} NÃO
refreshLoginConfiguration NÃO
javax.net.ssl.SSLPermission
setHostnameVerifier NÃO
getSSLSessionContext NÃO
setDefaultSSLContext NÃO
javax.management.MBeanPermission

Permissão que controla o acesso a operações do MBeanServer. Se um gerenciador de segurança foi definido com System.setSecurityManager(java.lang.SecurityManager), a maioria das operações no MBeanServer exige que as permissões do chamador impliquem no MBeanPermission apropriado para a operação.

ação className#member[objectName]

Se você tiver uma MBeanPermission, ela permitirá operações somente se todos os quatro itens corresponderem.
addNotificationListener NÃO
getAttribute NÃO
getClassLoader NÃO
getClassLoaderFor NÃO
getClassLoaderRepository NÃO
getDomains NÃO
getMBeanInfo NÃO
getObjectInstance NÃO
instantiate NÃO
invocar NÃO
isInstanceOf NÃO
queryMBeans NÃO
queryNames NÃO
registerMBean NÃO
removeNotificationListener NÃO
setAttribute NÃO
unregisterMBean NÃO
javax.management.MBeanServerPermission
createMBeanServer NÃO
findMBeanServer NÃO
newMBeanServer NÃO
releaseMBeanServer NÃO
javax.management.MBeanTrustPermission

Essa permissão representa a "confiança" em um signatário ou base do código.
register NÃO
* NÃO
javax.management.remote.SubjectDelegationPermission
NÃO