Java अनुमति का रेफ़रंस

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

Java की अनुमतियों से जुड़ी नीतियों के बारे में ज़रूरी जानकारी

अगर Java कॉलआउट नीतियां डेवलप की जा रही हैं, तो आपको यह पता होना चाहिए कि Edge JVM में कौनसी अनुमति नीतियां लागू हैं और वे आपके कोड पर कैसे असर डालेंगी. उदाहरण के लिए, आपके कस्टम जावा कोड के पास फ़ाइल सिस्टम का असीमित ऐक्सेस नहीं होता. हालांकि, फ़ाइल सिस्टम के ऐक्सेस के मामले में, कुछ फ़ाइलें पढ़ी जा सकती हैं. जैसे, नीति के संसाधन वाली फ़ाइलें. हालांकि, फ़ाइल सिस्टम के ज़्यादातर अन्य ऐक्सेस ब्लॉक किए जाते हैं. इस विषय में, JDK की अनुमतियों के सभी टाइप और उनके टारगेट या कार्रवाइयों की सूची दी गई है. हम हर टारगेट या कार्रवाई के लिए, अनुमति से जुड़ी नीति और उन अपवादों के बारे में बताते हैं जिनके बारे में आपको जानकारी होनी चाहिए.

जेडीके की अनुमतियों के टाइप और हर अनुमति के बारे में ज़्यादा जानने के लिए, Java Development Kit (JDK) में अनुमतियां लेख पढ़ें.

सुरक्षा से जुड़ी पाबंदियां चालू करना

Edge for Private Cloud में, सुरक्षा से जुड़ी पाबंदियां डिफ़ॉल्ट रूप से बंद होती हैं. इसका मतलब है कि आपका कस्टम Java कॉलआउट कोड, बिना किसी पाबंदी के सभी संसाधनों को ऐक्सेस कर सकता है. Edge for Private Cloud इंस्टॉलेशन में सुरक्षा से जुड़ी पाबंदियां चालू करने के लिए, यह तरीका अपनाएं:

  1. पहले मैसेज प्रोसेसर नोड पर, एडिटर में $APIGEE_ROOT/customer/application/message-processor.properties फ़ाइल खोलें. अगर फ़ाइल मौजूद नहीं है, तो उसे बनाएं.
  2. फ़ाइल में यह लाइन जोड़ें:
    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. मैसेज प्रोसेसर को रीस्टार्ट करें:
    apigee-service message-processor restart
  5. बचे हुए सभी मैसेज प्रोसेसर पर यह तरीका दोहराएं.
अनुमति का टाइप टारगेट या कार्रवाई का नाम अनुमति दी गई
java.awt.AWTPermission
accessClipboard नहीं
accessEventQueue नहीं
accessSystemTray नहीं
createRobot नहीं
fullScreenExclusive नहीं
listenToAllAWTEvents नहीं
readDisplayPixels नहीं
replaceKeyboardFocusManager नहीं
setAppletStub नहीं
setWindowsAlwaysOnTop नहीं
showWindowWithoutWarningBanner नहीं
toolkitModality नहीं
watchMousePointer नहीं
java.io.FilePermission

java.io.FilePermission, किसी फ़ाइल या डायरेक्ट्री के ऐक्सेस को दिखाता है. FilePermission में एक पाथनेम और उस पाथनेम के लिए मान्य कार्रवाइयों का सेट होता है.
पढ़ा गया हां, लेकिन पाबंदियां लागू हैं. पाबंदियां देखें.
मेरी मदद करो नहीं
लागू करना नहीं
मिटाएं नहीं
readLink हां
java.io.SerializablePermission

SerializablePermission में एक नाम होता है. इसे "टारगेट का नाम" भी कहा जाता है. हालांकि, इसमें कार्रवाइयों की सूची नहीं होती. आपके पास नाम वाली अनुमति होती है या नहीं होती.
enableSubclassImplementation हां
enableSubstitution नहीं
java.lang.management.ManagementPermission

Java प्लैटफ़ॉर्म के लिए मैनेजमेंट इंटरफ़ेस में तय किए गए तरीके
कंट्रोल नहीं
मॉनिटर नहीं
java.lang.reflect.ReflectPermission

रिफ़्लेक्टिव कार्रवाइयों के लिए. ReflectPermission एक नाम वाली अनुमति है और इसमें कोई कार्रवाई नहीं होती
suppressAccessChecks नहीं
newProxyInPackage.{package name} नहीं
java.lang.RuntimePermission

इसमें नाम (इसे "टारगेट का नाम" भी कहा जाता है) शामिल होता है, लेकिन कार्रवाइयों की सूची नहीं होती. आपके पास नाम वाली अनुमति होती है या नहीं होती.
createClassLoader नहीं
getClassLoader हां
setContextClassLoader हां
enableContextClassLoaderOverride हां
closeClassLoader नहीं
setSecurityManager नहीं
createSecurityManager नहीं
getenv.{variable name} नहीं
exitVM.{exit status} नहीं
shutdownHooks नहीं
setFactory नहीं
setIO नहीं
modifyThread हां
stopThread हां
modifyThreadGroup हां
getProtectionDomain हां
getFileSystemAttributes नहीं
readFileDescriptor हां
writeFileDescriptor नहीं
loadLibrary.{library name} नहीं
accessClassInPackage. {package name} हां
defineClassInPackage. {package name} नहीं
accessDeclaredMembers नहीं
queuePrintJob नहीं
getStackTrace नहीं
setDefaultUncaughtExceptionHandler नहीं
प्राथमिकताएं नहीं
usePolicy नहीं
java.net.NetPermission

NetPermission में नाम होता है, लेकिन कार्रवाइयों की सूची नहीं होती. आपके पास नाम वाली अनुमति होती है या नहीं होती.
setDefaultAuthenticator नहीं
requestPasswordAuthentication नहीं
specifyStreamHandler हां
setProxySelector नहीं
getProxySelector नहीं
setCookieHandler नहीं
getCookieHandler नहीं
setResponseCache नहीं
getResponseCache नहीं
getNetworkInformation नहीं
java.net.SocketPermission

यह सॉकेट के ज़रिए नेटवर्क को ऐक्सेस करने की अनुमति दिखाता है. SocketPermission में, होस्ट की जानकारी और "कार्रवाइयों" का एक सेट होता है. इसमें होस्ट से कनेक्ट करने के तरीके बताए जाते हैं.
host = (hostname | IPaddress)[:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]

होस्ट से कनेक्ट करने के ये तरीके हैं

accept
connect
listen
resolve

"listen" कार्रवाई का इस्तेमाल सिर्फ़ "localhost" के साथ किया जा सकता है. जब कोई अन्य कार्रवाई मौजूद होती है, तो "resolve" (resolve host/ip name service lookups) कार्रवाई अपने-आप लागू हो जाती है.
समाधान करें (भाषा से जुड़े संसाधनों का समाधान करना) हां
कनेक्ट करें

हां, लेकिन पाबंदियां लागू हैं. पाबंदियां देखें.

Apigee, sitelocal, anylocal, loopback, और linklocal पतों के ऐक्सेस को सीमित करता है.

listen,
accept
नहीं
java.net.URLPermission

यह अनुमति, किसी दिए गए यूआरएल से तय किए गए संसाधन या संसाधनों के सेट को ऐक्सेस करने के लिए होती है. साथ ही, यह अनुमति उपयोगकर्ता के सेट किए जा सकने वाले अनुरोध के तरीकों और अनुरोध के हेडर के किसी दिए गए सेट के लिए होती है. अनुमति का नाम, यूआरएल स्ट्रिंग होता है. कार्रवाइयों की स्ट्रिंग, अनुरोध के तरीकों और हेडर का कॉम्बिनेशन होती है. इस क्लास के लिए, तरीके और हेडर के नामों की रेंज तय नहीं की गई है.
हां
LinkPermission

यह Permission क्लास, लिंक बनाने की कार्रवाइयों के लिए है.
कठिन नहीं
सिंबॉलिक नहीं
java.security.SecurityPermission

SecurityPermission में एक नाम होता है. इसे "टारगेट नेम" भी कहा जाता है. हालांकि, इसमें कार्रवाइयों की कोई सूची नहीं होती. आपके पास नाम वाली अनुमति होती है या नहीं होती.
टारगेट का नाम, सुरक्षा कॉन्फ़िगरेशन पैरामीटर का नाम होता है. इसके बारे में यहां बताया गया है. फ़िलहाल, SecurityPermission ऑब्जेक्ट का इस्तेमाल, Policy, Security, Provider, Signer, और Identity ऑब्जेक्ट के ऐक्सेस की सुरक्षा के लिए किया जाता है.
createAccessControlContext नहीं
getDomainCombiner नहीं
getPolicy नहीं
setPolicy नहीं
createPolicy.{policy type} नहीं
getProperty.{key} नहीं
setProperty.{key} नहीं
insertProvider नहीं
removeProvider.{provider name} नहीं
clearProviderProperties.{provider name} नहीं
putProviderProperty.{provider name} नहीं
removeProviderProperty.{provider name} नहीं
SQLPermission setLog नहीं
callAbort नहीं
setSyncFactory नहीं
setNetworkTimeout नहीं
deregisterDriver नहीं
java.util.logging.LoggingPermission

SecurityManager, java.util.logging.LoggingPermission ऑब्जेक्ट की जांच करेगा. ऐसा तब होगा, जब SecurityManager के साथ चल रहा कोड, लॉगिंग कंट्रोल के किसी एक तरीके (जैसे कि Logger.setLevel) को कॉल करेगा.
कंट्रोल नहीं
java.util.PropertyPermission
The name is the name of the property ("java.home", "os.name", etc). नाम रखने का तरीका, प्रॉपर्टी के नाम रखने के क्रम के मुताबिक होता है. इसके अलावा, वाइल्डकार्ड मैच दिखाने के लिए, नाम के आखिर में "." के बाद या अकेले ही तारांक (*) दिख सकता है. उदाहरण के लिए: "java.*" या "*" मान्य है, "*java" या "a*b" मान्य नहीं है.

अनुमति दी जाने वाली कार्रवाइयों को कंस्ट्रक्टर को एक स्ट्रिंग में पास किया जाता है. इस स्ट्रिंग में, कॉमा लगाकर अलग किए गए शून्य या उससे ज़्यादा कीवर्ड की सूची होती है.
पढ़ा गया हां
मेरी मदद करो नहीं
javax.xml.ws.WebServicePermission
publishEndpoint नहीं
javax.xml.bind.JAXBPermission setDatatypeConverter नहीं
javax.sound.sampled.AudioPermission

ऑडियो सिस्टम के संसाधनों को ऐक्सेस करने के अधिकार.
चलाएं नहीं
रिकॉर्ड नहीं
javax.security.auth.PrivateCredentialPermission

Protect access to private Credentials belonging to a particular Subject. विषय को प्रिंसिपल के सेट के तौर पर दिखाया जाता है. इस अनुमति के टारगेट का नाम, क्रेडेंशियल क्लास का नाम और प्रिंसिपल का सेट बताता है. इस अनुमति के लिए, कार्रवाइयों का सिर्फ़ एक मान्य मान है: "read".
CredentialClass {PrincipalClass "PrincipalName"}* नहीं
javax.security.auth.kerberos.ServicePermission

Kerberos सेवाओं और उन सेवाओं को ऐक्सेस करने के लिए ज़रूरी क्रेडेंशियल की सुरक्षा करता है.
शुरू करो नहीं
स्वीकार करें नहीं
javax.security.auth.kerberos.DelegationPermission

इसका इस्तेमाल, Kerberos डेलिगेशन मॉडल के इस्तेमाल को सीमित करने के लिए किया जाता है. जैसे, फ़ॉरवर्ड किए जा सकने वाले और प्रॉक्सी किए जा सकने वाले टिकट.

इस अनुमति का टारगेट नाम, Kerberos सेवा के मुख्य नामों के पेयर के बारे में बताता है. पहला, अधीनस्थ सेवा प्रिंसिपल है, जिसे टिकट ग्रांटिंग टिकट (टीजीटी) का इस्तेमाल करने की ज़िम्मेदारी सौंपी गई है. दूसरा सर्विस प्रिंसिपल, टारगेट सर्विस को असाइन करता है. सबऑर्डिनेट सर्विस प्रिंसिपल, KerberosPrincipal की ओर से इस सर्विस के साथ इंटरैक्ट करता है.
शुरू करो नहीं
स्वीकार करें नहीं
javax.security.auth.AuthPermission

फ़िलहाल, AuthPermission ऑब्जेक्ट का इस्तेमाल, Subject, SubjectDomainCombiner, LoginContext, और Configuration ऑब्जेक्ट के ऐक्सेस को सुरक्षित रखने के लिए किया जाता है.
doAs नहीं
doAsPrivileged नहीं
getSubject नहीं
getSubjectFromDomainCombiner नहीं
setReadOnly नहीं
modifyPrincipals नहीं
modifyPublicCredentials नहीं
modifyPrivateCredentials नहीं
refreshCredential नहीं
destroyCredential नहीं
createLoginContext.{name} नहीं
getLoginConfiguration नहीं
setLoginConfiguration नहीं
createLoginConfiguration.{configuration type} नहीं
refreshLoginConfiguration नहीं
javax.net.ssl.SSLPermission
setHostnameVerifier नहीं
getSSLSessionContext नहीं
setDefaultSSLContext नहीं
javax.management.MBeanPermission

यह अनुमति, MBeanServer के ऑपरेशनों को ऐक्सेस करने की सुविधा को कंट्रोल करती है. अगर System.setSecurityManager(java.lang.SecurityManager) का इस्तेमाल करके, सुरक्षा मैनेजर सेट किया गया है, तो MBeanServer पर ज़्यादातर कार्रवाइयों के लिए, यह ज़रूरी है कि कॉल करने वाले व्यक्ति की अनुमतियों में, कार्रवाई के लिए सही MBeanPermission शामिल हो.

action className#member[objectName]

अगर आपके पास MBeanPermission है, तो यह सिर्फ़ तब कार्रवाइयां करने की अनुमति देता है, जब चारों आइटम मेल खाते हों.
addNotificationListener नहीं
getAttribute नहीं
getClassLoader नहीं
getClassLoaderFor नहीं
getClassLoaderRepository नहीं
getDomains नहीं
getMBeanInfo नहीं
getObjectInstance नहीं
इंस्टैंशिएट नहीं
शुरू करना नहीं
isInstanceOf नहीं
queryMBeans नहीं
queryNames नहीं
registerMBean नहीं
removeNotificationListener नहीं
setAttribute नहीं
unregisterMBean नहीं
javax.management.MBeanServerPermission
createMBeanServer नहीं
findMBeanServer नहीं
newMBeanServer नहीं
releaseMBeanServer नहीं
javax.management.MBeanTrustPermission

यह अनुमति, हस्ताक्षर करने वाले व्यक्ति या कोड बेस पर "भरोसे" को दिखाती है.
रजिस्टर करना नहीं
* नहीं
javax.management.remote.SubjectDelegationPermission
नहीं