Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
O que você precisa saber sobre as políticas de permissão do Java
Se você estiver desenvolvendo políticas de Java Chamada, é necessário saber quais políticas de permissão estão em na JVM de borda 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).
Como ativar restrições de segurança
No Edge para a nuvem privada, as restrições de segurança estão desativadas por padrão. Isso significa que seu código de chamada Java personalizado pode acessar todos os recursos sem restrições. Para ativar restrições de segurança no Edge para instalação de nuvem privada, siga o procedimento abaixo:
- No primeiro nó do Processador de mensagens, abra o arquivo
$APIGEE_ROOT/customer/application/message-processor.properties
em um editor. Crie o arquivo se ele não existir. - Adicione a seguinte linha ao arquivo:
conf_security-policy_enable.security.manager=true
- Save the file and ensure the file is owned by the
apigee
user:chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
- Reinicie o processador de mensagens:
apigee-service message-processor restart
- Repita essas etapas em todos os processadores de mensagens restantes.
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 |