Dokumentacja uprawnień w języku Java

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:

  1. Na pierwszym węźle procesora komunikatów otwórz plik $APIGEE_ROOT/customer/application/message-processor.properties w edytorze. Jeśli plik nie istnieje, utwórz go.
  2. Dodaj do tego pliku ten kod:
    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. Uruchom ponownie procesor komunikatów:
    apigee-service message-processor restart
  5. 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