Java-Berechtigungsreferenz

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Wissenswertes über Java-Berechtigungsrichtlinien

Wenn Sie Java-Callout-Richtlinien entwickeln, müssen Sie wissen, welche Berechtigungsrichtlinien in der Edge-JVM gelten und wie sie sich auf Ihren Code auswirken. Zum Beispiel kann Ihr benutzerdefinierter Java-Code nicht unbegrenzt auf das Dateisystem zugreifen. Im Fall des Dateisystemzugriffs können Sie jedoch bestimmte Dateien wie Richtlinienressourcendateien lesen. Der meiste andere Dateisystemzugriff ist jedoch blockiert. In diesem Thema werden alle JDK-Berechtigungstypen und ihre jeweiligen Ziele oder Aktionen aufgelistet. Für jedes Ziel oder jede Aktion legen wir die Berechtigungsrichtlinie sowie eventuelle Ausnahmen fest.

Weitere Informationen zu den JDK-Berechtigungstypen und den einzelnen Berechtigungen finden Sie unter Berechtigungen im Java Development Kit (JDK).

Sicherheitsbeschränkungen aktivieren

In Edge for Private Cloud sind die Sicherheitsbeschränkungen standardmäßig deaktiviert. Das bedeutet, dass Ihr benutzerdefinierter Java-Callout-Code uneingeschränkt auf alle Ressourcen zugreifen kann. Führen Sie die folgenden Schritte aus, um Sicherheitsbeschränkungen in Ihrer Edge für die Private Cloud-Installation zu aktivieren:

  1. Öffnen Sie auf dem ersten Message Processor-Knoten die Datei $APIGEE_ROOT/customer/application/message-processor.properties in einem Editor. Wenn die Datei nicht vorhanden ist, erstellen Sie sie.
  2. Fügen Sie der Datei die folgende Zeile hinzu:
    conf_security-policy_enable.security.manager=true
  3. Save the file and ensure the file is owned by the apigee user:
    chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
  4. Starten Sie den Message Processor neu:
    apigee-service message-processor restart
  5. Wiederholen Sie diese Schritte auf allen verbleibenden Message Processorn.
Berechtigungstyp Name des Ziels oder der Aktion Berechtigung erteilt
java.awt.AWTPermission
accessClipboard NEIN
accessEventQueue NEIN
accessSystemTray NEIN
createRobot NEIN
fullScreenExclusive NEIN
listenToAllAWTEvents NEIN
readDisplayPixels NEIN
replaceKeyboardFocusManager NEIN
setAppletStub NEIN
setWindowsAlwaysOnTop NEIN
showWindowWithoutWarningBanner NEIN
toolkitModality NEIN
watchMousePointer NEIN
java.io.FilePermission

Eine java.io.FilePermission repräsentiert den Zugriff auf eine Datei oder ein Verzeichnis. Eine FilePermission enthält einen Pfadnamen und eine Reihe von für diesen Pfadnamen gültigen Aktionen.
read JA, aber es gelten Einschränkungen. Siehe Einschränkungen.
write NEIN
execute NEIN
delete NEIN
readLink JA
java.io.SerializablePermission

Eine SerializablePermission enthält einen Namen (auch als "Zielname" bezeichnet), aber keine Aktionsliste. Sie haben entweder die benannte Berechtigung oder nicht.
enableSubclassImplementation JA
enableSubstitution NEIN
java.lang.management.ManagementPermission

Methoden, die in der Verwaltungsoberfläche für die Java-Plattform definiert sind.
control NEIN
monitor NEIN
java.lang.reflect.ReflectPermission

Für reflektive Vorgänge. Eine ReflectPermission ist eine benannte Berechtigung ohne Aktionen.
suppressAccessChecks NEIN
newProxyInPackage.{Paketname} NEIN
java.lang.RuntimePermission

Enthält einen Namen (auch als "Zielname" bezeichnet), aber keine Aktionsliste. Sie haben entweder die benannte Berechtigung oder nicht.
createClassLoader NEIN
getClassLoader JA
setContextClassLoader JA
enableContextClassLoaderOverride JA
closeClassLoader NEIN
setSecurityManager NEIN
createSecurityManager NEIN
getenv.{Variablenname} NEIN
exitVM.{Exit-Status} NEIN
shutdownHooks NEIN
setFactory NEIN
setIO NEIN
modifyThread JA
stopThread JA
modifyThreadGroup JA
getProtectionDomain JA
getFileSystemAttributes NEIN
readFileDescriptor JA
writeFileDescriptor NEIN
loadLibrary.{Bibliotheksname} NEIN
accessClassInPackage. {Paketname} JA
defineClassInPackage. {Paketname} NEIN
accessDeclaredMembers NEIN
queuePrintJob NEIN
getStackTrace NEIN
setDefaultUncaughtExceptionHandler NEIN
preferences NEIN
usePolicy NEIN
java.net.NetPermission

Eine NetPermission enthält einen Namen, aber keine Aktionenliste. Sie haben entweder die genannte Berechtigung oder nicht.
setDefaultAuthenticator NEIN
requestPasswordAuthentication NEIN
specifyStreamHandler JA
setProxySelector NEIN
getProxySelector NEIN
setCookieHandler NEIN
getCookieHandler NEIN
setResponseCache NEIN
getResponseCache NEIN
getNetworkInformation NEIN
java.net.SocketPermission

Stellt den Zugriff auf ein Netzwerk über Sockets bereit. Eine SocketPermission besteht aus einer Hostspezifikation und einer Reihe von "Aktionen", die Möglichkeiten zum Herstellen einer Verbindung zu diesem Host angeben.
host = (hostname | IPaddress)[:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]

Möglichkeiten zum Herstellen einer Verbindung mit dem Host sind:

accept
connect
listen
resolve

Die Aktion "listen" ist nur sinnvoll, wenn sie mit "localhost" verwendet wird. Die Aktion "resolve" (Host/IP-Dienst-Lookups zuordnen) wird impliziert, wenn eine der anderen Aktionen vorhanden ist.
resolve JA
Kommunikation

JA, aber es gelten Einschränkungen. Siehe Einschränkungen.

Apigee beschränkt den Zugriff auf sitelocal-, anylocal-, loopback- und linklocal-Adressen.

listen,
accept
NEIN
java.net.URLPermission

Berechtigung zum Zugriff auf eine Ressource oder eine Gruppe von Ressourcen, die durch eine bestimmte URL definiert sind, sowie für eine Reihe benutzerdefinierter Anfragemethoden und Anfrageheader. Der Name der Berechtigung ist der URL-String. Der Aktionsstring ist eine Verkettung der Anfragemethoden und -header. Der Bereich der Methoden- und Headernamen ist von dieser Klasse nicht eingeschränkt.
JA
LinkPermission

Die Berechtigungsklasse für Vorgänge zur Linkerstellung.
hard NEIN
symbolic NEIN
java.security.SecurityPermission

Eine SecurityPermission enthält einen Namen (auch als "Zielname" bezeichnet), aber keine Aktionsliste. Sie haben entweder die benannte Berechtigung oder nicht.
Der Zielname ist der Name eines Sicherheitskonfigurationsparameters (siehe unten). Derzeit wird das Objekt "SecurityPermission" verwendet, um den Zugriff auf die Objekte "Policy", "Security", "Provider", "Signer" und "Identity" zu steuern.
createAccessControlContext NEIN
getDomainCombiner NEIN
getPolicy NEIN
setPolicy NEIN
createPolicy.{Richtlinientyp} NEIN
getProperty.{Schlüssel} NEIN
setProperty.{Schlüssel} NEIN
insertProvider NEIN
removeProvider.{Name des Anbieters} NEIN
clearProviderProperties.{Name des Anbieters} NEIN
putProviderProperty.{Name des Anbieters} NEIN
removeProviderProperty.{Name des Anbieters} NEIN
SQLPermission setLog NEIN
callAbort NEIN
setSyncFactory NEIN
setNetworkTimeout NEIN
deregisterDriver NEIN
java.util.logging.LoggingPermission

Ein SecurityManager prüft das java.util.logging.LoggingPermission-Objekt, wenn Code, der mit einem SecurityManager ausgeführt wird, eine der Logging-Steuerungsmethoden aufruft (z. B. Logger.setLevel).
control NEIN
java.util.PropertyPermission
Der Name ist der Name des Attributs ("java.home", "os.name" usw.). Diese Namenskonvention entspricht der hierarchischen Namenskonvention für Attribute. Außerdem kann am Ende des Namens ein Sternchen stehen: nach einem "." oder für sich selbst, um eine Platzhalterübereinstimmung anzuzeigen. Beispiel: "java.*" oder "*" ist gültig, "*java" oder "a*b" ist ungültig.

Die zu gewährenden Aktionen werden in einem String mit null oder mehreren durch Kommas getrennten Keywords an den Konstruktor übergeben.
read JA
write NEIN
javax.xml.ws.WebServicePermission
publishEndpoint NEIN
javax.xml.bind.JAXBPermission setDatatypeConverter NEIN
javax.sound.sampled.AudioPermission

Gewährt Zugriffsrechte auf die Audiosystemressourcen.
play NEIN
record NEIN
javax.security.auth.PrivateCredentialPermission

Der Zugriff auf private Anmeldedaten, die zu einem bestimmten Subjekt gehören, wird geschützt. Das Subjekt wird durch eine Reihe von Prinzipalen dargestellt. Der Zielname dieser Berechtigung gibt einen Namen der Anmeldedatenklasse und eine Reihe von Prinzipalen an. Der einzige gültige Wert für die Aktionen dieser Berechtigung ist "Lesen".
CredentialClass {PrincipalClass "PrincipalName"}* NEIN
javax.security.auth.kerberos.ServicePermission

Kerberos-Dienste und die für den Zugriff auf diese Dienste erforderlichen Anmeldedaten werden geschützt.
initiate NEIN
accept NEIN
javax.security.auth.kerberos.DelegationPermission

Wird verwendet, um die Nutzung des Kerberos-Delegierungsmodells einzuschränken, d. h. weiterleitbare und Proxy-Tickets.

Der Zielname dieser Berechtigung gibt ein Paar von Kerberos-Diensthauptkonten an. Das erste ist das untergeordnete Diensthauptkonto, das mit der Verwendung des Ticket Granting Tickets (TGT) beauftragt ist. Der zweite Diensthauptkonto bestimmt den Zieldienst, mit dem das untergeordnete Diensthauptkonto im Auftrag des initiierenden KerberosPrincipal interagiert.
initiate NEIN
accept NEIN
javax.security.auth.AuthPermission

Derzeit wird das AuthPermission-Objekt verwendet, um den Zugriff auf die Objekte "Subject", "SubjectDomainCombiner", "LoginContext" und "Configuration" zu schützen.
doAs NEIN
doAsPrivileged NEIN
getSubject NEIN
getSubjectFromDomainCombiner NEIN
setReadOnly NEIN
modifyPrincipals NEIN
modifyPublicCredentials NEIN
modifyPrivateCredentials NEIN
refreshCredential NEIN
destroyCredential NEIN
createLoginContext.{Name} NEIN
getLoginConfiguration NEIN
setLoginConfiguration NEIN
createLoginConfiguration.{Konfigurationstyp} NEIN
refreshLoginConfiguration NEIN
javax.net.ssl.SSLPermission
setHostnameVerifier NEIN
getSSLSessionContext NEIN
setDefaultSSLContext NEIN
javax.management.MBeanPermission

Berechtigung zum Steuern des Zugriffs auf MBeanServer-Vorgänge. Wurde ein Sicherheitsmanager mithilfe von System.setSecurityManager(java.lang.SecurityManager) festgelegt, erfordern die meisten Vorgänge auf dem MBeanServer eine für den Vorgang geeignete MBeanPermission.

action className#member[objectName]

Wenn Sie eine MBeanPermission haben, sind Vorgänge nur möglich, wenn alle vier Elemente übereinstimmen.
addNotificationListener NEIN
getAttribute NEIN
getClassLoader NEIN
getClassLoaderFor NEIN
getClassLoaderRepository NEIN
getDomains NEIN
getMBeanInfo NEIN
getObjectInstance NEIN
instantiate NEIN
invoke NEIN
isInstanceOf NEIN
queryMBeans NEIN
queryNames NEIN
registerMBean NEIN
removeNotificationListener NEIN
setAttribute NEIN
unregisterMBean NEIN
javax.management.MBeanServerPermission
createMBeanServer NEIN
findMBeanServer NEIN
newMBeanServer NEIN
releaseMBeanServer NEIN
javax.management.MBeanTrustPermission

Diese Berechtigung steht für "Vertrauen" in einen Signaturgeber oder eine Codebasis.
register NEIN
* NEIN
javax.management.remote.SubjectDelegationPermission
NEIN