Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Co musisz wiedzieć o zasadach dotyczących uprawnień w języku Java
Jeśli tworzysz zasady wywołania Java, musisz wiedzieć, które zasady uprawnień obowiązują w maszynie JVM Edge i jak wpłyną one na Twój kod. Na przykład niestandardowy kod Java nie ma nieograniczonego dostępu do systemu plików. W przypadku dostępu do systemu plików możesz jednak odczytywać niektóre pliki, np. pliki zasobów zasad. Jednak większość innych dostępów do systemu plików jest blokowana. W tym artykule znajdziesz listę wszystkich typów uprawnień JDK oraz ich odpowiednich celów lub działań. W przypadku każdego celu lub działania określamy zasady dotyczące uprawnień i wszelkie wyjątki, o których musisz wiedzieć.
Więcej informacji o typach uprawnień JDK i zakresie każdego z nich znajdziesz w artykule Uprawnienia w zestawie Java Development Kit (JDK).
Włączanie ograniczeń bezpieczeństwa
W Edge for Private Cloud ograniczenia bezpieczeństwa są domyślnie wyłączone. Oznacza to, że Twój niestandardowy kod wywołania Java może uzyskiwać dostęp do wszystkich zasobów bez ograniczeń. Aby włączyć ograniczenia bezpieczeństwa w instalacji Edge for Private Cloud, wykonaj te czynności:
- Na pierwszym węźle procesora komunikatów otwórz plik
$APIGEE_ROOT/customer/application/message-processor.propertiesw edytorze. Jeśli plik nie istnieje, utwórz go. - Dodaj do tego pliku ten kod:
conf_security-policy_enable.security.manager=true
- Save the file and ensure the file is owned by the
apigeeuser:chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
- Uruchom ponownie procesor komunikatów:
apigee-service message-processor restart
- Powtórz te czynności na wszystkich pozostałych procesorach wiadomości.
| Typ uprawnień | Nazwa celu lub działania | Przyznano uprawnienia |
| java.awt.AWTPermission | ||
| accessClipboard | NIE | |
| accessEventQueue | NIE | |
| accessSystemTray | NIE | |
| createRobot | NIE | |
| fullScreenExclusive | NIE | |
| listenToAllAWTEvents | NIE | |
| readDisplayPixels | NIE | |
| replaceKeyboardFocusManager | NIE | |
| setAppletStub | NIE | |
| setWindowsAlwaysOnTop | NIE | |
| showWindowWithoutWarningBanner | NIE | |
| toolkitModality | NIE | |
| watchMousePointer | NIE | |
| java.io.FilePermission Klasa java.io.FilePermission reprezentuje dostęp do pliku lub katalogu. FilePermission składa się ze ścieżki i zestawu działań, które są w jej przypadku prawidłowe. |
odczyt | TAK, ale obowiązują ograniczenia. Zobacz ograniczenia. |
| zapis | NIE | |
| execute | NIE | |
| usuń | NIE | |
| readLink | TAK | |
| java.io.SerializablePermission Obiekt SerializablePermission zawiera nazwę (nazywaną też „nazwą docelową”), ale nie zawiera listy działań. Albo masz uprawnienie o danej nazwie, albo nie. |
enableSubclassImplementation | TAK |
| enableSubstitution | NIE | |
| java.lang.management.ManagementPermission Metody zdefiniowane w interfejsie zarządzania platformy Java |
kontrola | NIE |
| monitor | NIE | |
| java.lang.reflect.ReflectPermission W przypadku operacji opartych na refleksji. ReflectPermission to nazwane uprawnienie, które nie ma żadnych działań. |
suppressAccessChecks | NIE |
| newProxyInPackage.{package name} | NIE | |
| java.lang.RuntimePermission Zawiera nazwę (nazywaną też „nazwą docelową”), ale nie zawiera listy działań. Masz uprawnienia o podanej nazwie lub nie. |
createClassLoader | NIE |
| getClassLoader | TAK | |
| setContextClassLoader | TAK | |
| enableContextClassLoaderOverride | TAK | |
| closeClassLoader | NIE | |
| setSecurityManager | NIE | |
| createSecurityManager | NIE | |
| getenv.{variable name} | NIE | |
| exitVM.{exit status} | NIE | |
| shutdownHooks | NIE | |
| setFactory | NIE | |
| setIO | NIE | |
| modifyThread | TAK | |
| stopThread | TAK | |
| modifyThreadGroup | TAK | |
| getProtectionDomain | TAK | |
| getFileSystemAttributes | NIE | |
| readFileDescriptor | TAK | |
| writeFileDescriptor | NIE | |
| loadLibrary.{library name} | NIE | |
| accessClassInPackage. {package name} | TAK | |
| defineClassInPackage. {package name} | NIE | |
| accessDeclaredMembers | NIE | |
| queuePrintJob | NIE | |
| getStackTrace | NIE | |
| setDefaultUncaughtExceptionHandler | NIE | |
| preferencje | NIE | |
| usePolicy | NIE | |
| java.net.NetPermission Obiekt NetPermission zawiera nazwę, ale nie listę działań. Masz uprawnienie o danej nazwie lub nie. |
setDefaultAuthenticator | NIE |
| requestPasswordAuthentication | NIE | |
| specifyStreamHandler | TAK | |
| setProxySelector | NIE | |
| getProxySelector | NIE | |
| setCookieHandler | NIE | |
| getCookieHandler | NIE | |
| setResponseCache | NIE | |
| getResponseCache | NIE | |
| getNetworkInformation | NIE | |
| java.net.SocketPermission Reprezentuje dostęp do sieci przez gniazda. SocketPermission składa się ze specyfikacji hosta i zestawu „działań” określających sposoby łączenia się z tym hostem. host = (hostname | IPaddress)[:portrange] portrange = portnumber | -portnumber | portnumber-[portnumber] Możliwe sposoby połączenia z hostem to: accept connect listen resolve Działanie „listen” ma znaczenie tylko w przypadku użycia z „localhost”. Działanie „resolve” (resolve host/ip name service lookups) jest domyślne, gdy występuje którekolwiek z pozostałych działań. |
znaleźć | TAK |
| połącz |
TAK, ale obowiązują ograniczenia. Zobacz ograniczenia. Apigee ogranicza dostęp do adresów sitelocal, anylocal, loopback i linklocal. |
|
| słuchać, akceptować |
NIE | |
| java.net.URLPermission Reprezentuje uprawnienia dostępu do zasobu lub zbioru zasobów zdefiniowanych przez dany adres URL oraz do danego zbioru metod żądań i nagłówków żądań, które można ustawić. Nazwą uprawnienia jest ciąg znaków adresu URL. Ciąg działań to połączenie metod żądania i nagłówków. Zakres nazw metod i nagłówków nie jest ograniczony przez tę klasę. |
TAK | |
| LinkPermission Klasa Permission dla operacji tworzenia połączeń. |
trudny | NIE |
| symboliczne, | NIE | |
| java.security.SecurityPermission SecurityPermission zawiera nazwę (nazywaną też „nazwą docelową”), ale nie zawiera listy działań. Masz uprawnienie o danej nazwie lub nie. Nazwa docelowa to nazwa parametru konfiguracji zabezpieczeń (patrz poniżej). Obecnie obiekt SecurityPermission służy do ochrony dostępu do obiektów Policy, Security, Provider, Signer i Identity. |
createAccessControlContext | NIE |
| getDomainCombiner | NIE | |
| getPolicy | NIE | |
| setPolicy | NIE | |
| createPolicy.{policy type} | NIE | |
| getProperty.{key} | NIE | |
| setProperty.{key} | NIE | |
| insertProvider | NIE | |
| removeProvider.{provider name} | NIE | |
| clearProviderProperties.{provider name} | NIE | |
| putProviderProperty.{provider name} | NIE | |
| removeProviderProperty.{provider name} | NIE | |
| SQLPermission | setLog | NIE |
| callAbort | NIE | |
| setSyncFactory | NIE | |
| setNetworkTimeout | NIE | |
| deregisterDriver | NIE | |
| java.util.logging.LoggingPermission Obiekt SecurityManager sprawdza obiekt java.util.logging.LoggingPermission, gdy kod działający z obiektem SecurityManager wywołuje jedną z metod kontroli logowania (np. Logger.setLevel). |
kontrola | NIE |
| java.util.PropertyPermission Nazwa to nazwa właściwości („java.home”, „os.name” itp.). Konwencja nazewnictwa jest zgodna z hierarchiczną konwencją nazewnictwa właściwości. Gwiazdka może też pojawić się na końcu nazwy po znaku „.” lub samodzielnie, aby oznaczać dopasowanie wieloznaczne. Na przykład „java.*” lub „*” są prawidłowe, a „*java” lub „a*b” nie są. Uprawnienia do przyznania są przekazywane do konstruktora w postaci ciągu znaków zawierającego listę co najmniej 1 słowa kluczowego rozdzielonego przecinkami. |
odczyt | TAK |
| zapis | NIE | |
|
javax.xml.ws.WebServicePermission
|
publishEndpoint | NIE |
| javax.xml.bind.JAXBPermission | setDatatypeConverter | NIE |
| javax.sound.sampled.AudioPermission Prawa dostępu do zasobów systemu audio. |
odtwórz | NIE |
| nagranie | NIE | |
| javax.security.auth.PrivateCredentialPermission Chroni dostęp do prywatnych danych logowania należących do określonego podmiotu. Podmiot jest reprezentowany przez zbiór podmiotów. Nazwa docelowa tego uprawnienia określa nazwę klasy danych logowania i zbiór podmiotów. Jedyną prawidłową wartością działań tego uprawnienia jest „read”. |
CredentialClass {PrincipalClass "PrincipalName"}* | NIE |
| javax.security.auth.kerberos.ServicePermission Chroni usługi Kerberos i dane logowania niezbędne do uzyskania dostępu do tych usług. |
zainicjuj | NIE |
| zaakceptuj | NIE | |
| javax.security.auth.kerberos.DelegationPermission Używane do ograniczania korzystania z modelu przekazywania Kerberos, czyli biletów z możliwością przekazywania i używania przez serwer proxy. Nazwa docelowa tego uprawnienia określa parę głównych nazw usługi Kerberos. Pierwszy to podrzędna nazwa usługi, której powierza się używanie biletu uprawniającego do uzyskania biletu (TGT). Druga główna nazwa usługi wskazuje usługę docelową, z którą podrzędna główna nazwa usługi ma wchodzić w interakcje w imieniu inicjującej głównej nazwy Kerberos. |
zainicjuj | NIE |
| zaakceptuj | NIE | |
| javax.security.auth.AuthPermission Obecnie obiekt AuthPermission służy do ochrony dostępu do obiektów Subject, SubjectDomainCombiner, LoginContext i Configuration. |
doAs | NIE |
| doAsPrivileged | NIE | |
| getSubject | NIE | |
| getSubjectFromDomainCombiner | NIE | |
| setReadOnly | NIE | |
| modifyPrincipals | NIE | |
| modifyPublicCredentials | NIE | |
| modifyPrivateCredentials | NIE | |
| refreshCredential | NIE | |
| destroyCredential | NIE | |
| createLoginContext.{name} | NIE | |
| getLoginConfiguration | NIE | |
| setLoginConfiguration | NIE | |
| createLoginConfiguration.{configuration type} | NIE | |
| refreshLoginConfiguration | NIE | |
| javax.net.ssl.SSLPermission |
setHostnameVerifier | NIE |
| getSSLSessionContext | NIE | |
| setDefaultSSLContext | NIE | |
| javax.management.MBeanPermission Uprawnienie kontrolujące dostęp do operacji MBeanServer. Jeśli menedżer zabezpieczeń został ustawiony za pomocą metody System.setSecurityManager(java.lang.SecurityManager), większość operacji na serwerze MBeanServer wymaga, aby uprawnienia wywołującego obejmowały uprawnienia MBeanPermission odpowiednie dla operacji. action className#member[objectName] Jeśli masz uprawnienie MBeanPermission, umożliwia ono wykonywanie operacji tylko wtedy, gdy wszystkie 4 elementy są zgodne. |
addNotificationListener | NIE |
| getAttribute | NIE | |
| getClassLoader | NIE | |
| getClassLoaderFor | NIE | |
| getClassLoaderRepository | NIE | |
| getDomains | NIE | |
| getMBeanInfo | NIE | |
| getObjectInstance | NIE | |
| utworzyć instancję | NIE | |
| wywołać | NIE | |
| isInstanceOf | NIE | |
| queryMBeans | NIE | |
| queryNames | NIE | |
| registerMBean | NIE | |
| removeNotificationListener | NIE | |
| setAttribute | NIE | |
| unregisterMBean | NIE | |
| javax.management.MBeanServerPermission |
createMBeanServer | NIE |
| findMBeanServer | NIE | |
| newMBeanServer | NIE | |
| releaseMBeanServer | NIE | |
| javax.management.MBeanTrustPermission To uprawnienie reprezentuje „zaufanie” do sygnatariusza lub bazy kodu. |
zarejestruj | NIE |
| * | NIE | |
|
javax.management.remote.SubjectDelegationPermission
|
NIE |