Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
Cosa devi sapere sui criteri di autorizzazione Java
Se stai sviluppando criteri di callout Java, devi sapere quali criteri di autorizzazione sono applicati nella JVM perimetrale e come influenzeranno il codice. Ad esempio, il codice Java personalizzato non ha accesso illimitato al file system. Tuttavia, nel caso di accesso al file system, puoi leggere determinati file, ad esempio i file delle risorse dei criteri. Tuttavia, la maggior parte degli altri accessi al file system è bloccata. In questo argomento sono elencati tutti i tipi di autorizzazione JDK e i rispettivi target o azioni. Per ogni target o azione specifichiamo il criterio di autorizzazione e le eventuali eccezioni che devi conoscere.
Per scoprire di più sui tipi di autorizzazioni JDK e su ciò che ciascuna autorizzazione consente, consulta la pagina relativa alle autorizzazioni in JDK (Java Development Kit).
Attivazione delle limitazioni di sicurezza
In Edge per il cloud privato, le limitazioni di sicurezza sono disabilitate per impostazione predefinita. Ciò significa che il codice callout Java personalizzato può accedere a tutte le risorse senza limitazioni. Per attivare le limitazioni di sicurezza nell'installazione Edge per il cloud privato, segui la procedura riportata di seguito:
- Sul primo nodo del processore di messaggi, apri il file
$APIGEE_ROOT/customer/application/message-processor.properties
in un editor. Se il file non esiste, crealo. - Aggiungi la seguente riga al file:
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
- Riavvia il processore di messaggi:
apigee-service message-processor restart
- Ripeti questi passaggi su tutti gli altri processori di messaggi.
Tipo di autorizzazione | Target o nome azione | Autorizzazione concessa |
java.awt.AWTPermission | ||
accessClipboard | NO | |
accessEventQueue | NO | |
accessSystemTray | NO | |
createRobot | NO | |
fullScreenExclusive | NO | |
listenToAllAWTEvents | NO | |
readDisplayPixels | NO | |
replaceKeyboardFocusManager | NO | |
setAppletStub | NO | |
setWindowsAlwaysOnTop | NO | |
showWindowWithoutWarningBanner | NO | |
toolkitModality | NO | |
watchMousePointer | NO | |
java.io.FilePermission Un java.io.FilePermission rappresenta l'accesso a un file o a una directory. Un'autorizzazione FilePermission è composta da un nome di percorso e da un insieme di azioni valide per tale percorso. |
leggere | SÌ, ma si applicano limitazioni. Consulta la sezione Restrizioni. |
write | NO | |
execute | NO | |
elimina | NO | |
readLink | SÌ | |
java.io.SerializablePermission Un oggetto SerializablePermission contiene un nome (chiamato anche "nome destinazione") ma nessun elenco di azioni. Hai l'autorizzazione denominata oppure no. |
enableSubclassImplementation | SÌ |
enableSubstitution | NO | |
java.lang.management.ManagementPermission Metodi definiti nell'interfaccia di gestione per la piattaforma Java |
controllo | NO |
monitora | NO | |
java.lang.reflect.ReflectPermission Per operazioni relative a riflessioni. Un'autorizzazione ReflectPermission è un'autorizzazione denominata e non ha azioni |
suppressAccessChecks | NO |
newProxyInPackage.{nome pacchetto} | NO | |
java.lang.RuntimePermission Contiene un nome (chiamato anche "nome destinazione"), ma non un elenco di azioni; o hai l'autorizzazione denominata oppure non ce l'hai. |
createClassLoader | NO |
getClassLoader | SÌ | |
setContextClassLoader | SÌ | |
enableContextClassLoaderOverride | SÌ | |
closeClassLoader | NO | |
setSecurityManager | NO | |
createSecurityManager | NO | |
getenv.{nome variabile} | NO | |
exitVM.{exit status} | NO | |
shutdownHooks | NO | |
setFactory | NO | |
setIO | NO | |
modifyThread | SÌ | |
stopThread | SÌ | |
modifyThreadGroup | SÌ | |
getProtectionDomain | SÌ | |
getFileSystemAttributes | NO | |
readFileDescriptor | SÌ | |
writeFileDescriptor | NO | |
LoadLibrary.{nome libreria} | NO | |
accessClassInPackage. {nome pacchetto} | SÌ | |
defineClassInPackage. {nome pacchetto} | NO | |
accessDeclaredMembers | NO | |
queuePrintJob | NO | |
getStackTrace | NO | |
setDefaultUncaughtExceptionHandler | NO | |
preferenze | NO | |
usePolicy | NO | |
java.net.NetPermission Un NetPermission contiene un nome, ma non un elenco di azioni; o hai l'autorizzazione denominata o no. |
setDefaultAuthenticator | NO |
requestPasswordAuthentication | NO | |
specifyStreamHandler | SÌ | |
setProxySelector | NO | |
getProxySelector | NO | |
setCookieHandler | NO | |
getCookieHandler | NO | |
setResponseCache | NO | |
getResponseCache | NO | |
getNetworkInformation | NO | |
java.net.SocketPermission Rappresenta l'accesso a una rete tramite socket. Un SocketPermission è costituito da una specifica host e da un insieme di "azioni" che specificano i modi per connettersi a quell'host. host = (nome host | indirizzo IP)[:portrange] portrange = numero porta | -portnumber | portnumber-[portnumber] I modi possibili per connettersi all'host sono accetta connetti ascolta resolve L'azione "listen" è significativa solo se utilizzata con "localhost". L'azione "resolve" (risoluzione di ricerche del servizio dei nomi host/ip) è implicita quando è presente una delle altre azioni. |
resolve | SÌ |
connessione |
SÌ, ma si applicano limitazioni. Consulta la sezione Restrizioni. Apigee limita l'accesso a indirizzi sitelocal, anylocal, loopback e linklocal. |
|
ascolta, accetta |
NO | |
java.net.URLPermission Rappresenta l'autorizzazione ad accedere a una risorsa o a un insieme di risorse definiti da un determinato URL e per un determinato insieme di metodi di richiesta e intestazioni delle richieste impostabili dall'utente. Il nome dell'autorizzazione è la stringa dell'URL. La stringa delle azioni è una concatenazione dei metodi e delle intestazioni della richiesta. L'intervallo di nomi di metodo e intestazioni non è limitato da questa classe. |
SÌ | |
LinkPermission La classe Permission per le operazioni di creazione di link. |
difficile | NO |
simbolico | NO | |
java.security.SecurityPermission Un'autorizzazione SecurityPermission contiene un nome (chiamato anche "nome destinazione") ma non un elenco di azioni. Hai l'autorizzazione denominata oppure no. Il nome della destinazione è il nome di un parametro di configurazione di sicurezza (vedi di seguito). Attualmente l'oggetto SecurityPermission viene utilizzato per proteggere l'accesso agli oggetti Policy, Security, Provider, Signer e Identity. |
createAccessControlContext | NO |
getDomainCombiner | NO | |
getPolicy | NO | |
setPolicy | NO | |
createPolicy.{policy type} | NO | |
getProperty.{key} | NO | |
setProperty.{key} | NO | |
insertProvider | NO | |
removeProvider.{nome fornitore} | NO | |
clearProviderProprietà.{nome provider} | NO | |
putProviderProperty.{nome fornitore} | NO | |
removeProviderProperty.{nome fornitore} | NO | |
SQLPermission | setLog | NO |
callAbort | NO | |
setSyncFactory | NO | |
setNetworkTimeout | NO | |
deregisterDriver | NO | |
java.util.logging.LoggingPermission Un SecurityManager controllerà l'oggetto java.util.logging.LoggingPermission quando il codice in esecuzione con un SecurityManager chiama uno dei metodi di controllo del logging (ad esempio Logger.setLevel). |
controllo | NO |
java.util.PropertyPermission Il nome è il nome della proprietà ("java.home", "os.name" e così via). La convenzione di denominazione segue la convenzione di denominazione gerarchica delle proprietà. Inoltre, può essere visualizzato un asterisco alla fine del nome, seguito da un punto (.) o da solo, per indicare una corrispondenza con caratteri jolly. Ad esempio: "java.*" o "*" sono validi, "*java" o "a*b" non sono validi. Le azioni da concedere vengono passate al costruttore in una stringa contenente un elenco di zero o più parole chiave separate da virgole. |
leggere | SÌ |
write | NO | |
javax.xml.ws.WebServicePermission
|
publishEndpoint | NO |
javax.xml.bind.JAXBPermission | setDatatypeConverter | NO |
javax.sound.sampled.AudioPermission Diritti di accesso alle risorse del sistema audio. |
riproduci | NO |
disco | NO | |
javax.security.auth.PrivateCredentialPermission Proteggi l'accesso alle credenziali private appartenenti a un oggetto specifico. Il soggetto è rappresentato da un insieme di entità. Il nome target di questa autorizzazione specifica un nome di classe delle credenziali e un set di entità. L'unico valore valido per le azioni di questa Autorizzazione è "read". |
CredentialClass {PrincipalClass "PrincipalName"}* | NO |
javax.security.auth.kerberos.ServicePermission Proteggi i servizi Kerberos e le credenziali necessarie per accedervi. |
initiate | NO |
accetta | NO | |
javax.security.auth.kerberos.DelegationPermission Utilizzata per limitare l'utilizzo del modello di delega Kerberos, ad esempio ticket di inoltro e proxy. Il nome target di questa autorizzazione specifica una coppia di entità di servizio kerberos. Il primo è l'entità di servizio subordinata a cui viene affidato l'utilizzo del Ticket Granting Ticket (TGT). La seconda entità di servizio indica il servizio di destinazione con cui l'entità di servizio subordinata deve interagire per conto dell'avvio KerberosPrincipal. |
initiate | NO |
accetta | NO | |
javax.security.auth.AuthPermission Attualmente l'oggetto AuthPermission viene utilizzato per proteggere l'accesso agli oggetti Subject, SubjectDomainBundler, LoginContext e Configuration. |
doAs | NO |
doAsPrivileged | NO | |
getSubject | NO | |
getSubjectFromDomainCombiner | NO | |
setReadOnly | NO | |
modifyPrincipals | NO | |
modifyPublicCredentials | NO | |
modifyPrivateCredentials | NO | |
refreshCredential | NO | |
destroyCredential | NO | |
createLoginContext.{name} | NO | |
getLoginConfiguration | NO | |
setLoginConfiguration | NO | |
createLoginConfiguration.{configuration type} | NO | |
refreshLoginConfiguration | NO | |
javax.net.ssl.SSLPermission |
setHostnameVerifier | NO |
getSSLSessionContext | NO | |
setDefaultSSLContext | NO | |
javax.management.MBeanPermission Autorizzazione che controlla l'accesso alle operazioni MBeanServer. Se è stato impostato un gestore di sicurezza utilizzando System.setSecurityManager(java.lang.SecurityManager), la maggior parte delle operazioni sul MBeanServer richiede che le autorizzazioni del chiamante suggeriscano un'autorizzazione MBeanPermission appropriata per l'operazione. action className#member[objectName] Se disponi di un'autorizzazione MBeanPermission, questa autorizzazione consente le operazioni solo se tutti e quattro gli elementi corrispondono. |
addNotificationListener | NO |
getAttribute | NO | |
getClassLoader | NO | |
getClassLoaderFor | NO | |
getClassLoaderRepository | NO | |
getDomains | NO | |
getMBeanInfo | NO | |
getObjectInstance | NO | |
instantiate | NO | |
richiamare | NO | |
isInstanceOf | NO | |
queryMBeans | NO | |
queryNames | NO | |
registerMBean | NO | |
removeNotificationListener | NO | |
setAttribute | NO | |
unregisterMBean | NO | |
javax.management.MBeanServerPermission |
createMBeanServer | NO |
findMBeanServer | NO | |
newMBeanServer | NO | |
releaseMBeanServer | NO | |
javax.management.MBeanTrustPermission Questa autorizzazione rappresenta l'attendibilità in un firmatario o in un codebase. |
register | NO |
* | NO | |
javax.management.remote.SubjectDelegationPermission
|
NO |