<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Wissenswertes über Java-Berechtigungsrichtlinien
Wenn du Java-Callout-Richtlinien entwickelst, musst du wissen, welche Berechtigungsrichtlinien in der Edge-JVM und deren Auswirkungen auf den Code. 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 für Private Cloud sind die Sicherheitseinschränkungen standardmäßig deaktiviert. Das bedeutet, dass kann Ihr benutzerdefinierter Java-Callout-Code uneingeschränkt auf alle Ressourcen zugreifen. Zum Aktivieren Sicherheitsbeschränkungen in Ihrer Edge für Private Cloud-Installation gehen Sie folgendermaßen vor:
- Öffnen Sie die Datei auf dem ersten Message Processor-Knoten.
$APIGEE_ROOT/customer/application/message-processor.properties
in einem Editor. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. - Fügen Sie der Datei die folgende Zeile hinzu:
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
- Starten Sie den Message Processor neu:
apigee-service message-processor restart
- Wiederholen Sie diese Schritte für alle verbleibenden Message Processor.
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 Aktionenliste. 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 |