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

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

Java की अनुमति से जुड़ी नीतियों के बारे में आपके लिए क्या जानना ज़रूरी है

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

JDK अनुमतियों के टाइप और हर अनुमति से मिलने वाली अनुमतियों के बारे में ज़्यादा जानने के लिए, Java डेवलपमेंट किट (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 में एक पाथनाम और उस पाथनाम के लिए मान्य कार्रवाइयों का सेट शामिल होता है.
पढ़ना हां, लेकिन पाबंदियां लागू हैं. पाबंदियां देखें.
लिखें नहीं
execute नहीं
मिटाएं नहीं
readLink हां
java.io.SerialvisiblePermission

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

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

रिफ़्लेक्टिव ऑपरेशन के लिए. ReflectPermission एक नाम वाली अनुमति होती है और इसमें कोई कार्रवाई नहीं होती
suppressAccessChecks नहीं
newप्रॉक्सीInpackage.{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. {पैकेज का नाम} हां
परिभाषितClassInpackage. {पैकेज का नाम} नहीं
accessDeclaredMembers नहीं
queuePrintJob नहीं
getStackTrace नहीं
setDefaultUncaughtExceptionHandler नहीं
प्राथमिकताएं नहीं
usePolicy नहीं
java.net.NetPermission

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

सॉकेट के ज़रिए नेटवर्क के ऐक्सेस को दिखाता है. SocketPermission में होस्ट की खास बातें और "actions" का एक सेट होता है जो उस होस्ट से कनेक्ट करने के तरीके बताता है.
होस्ट = (होस्टनेम | IPaddress)[:portrange]
पोर्टफ़ोलियो = portnumber | -portnumber | पोर्टnumber-[portnumber]

होस्ट से कनेक्ट करने के संभावित तरीके

स्वीकार करें
कनेक्ट करें
सुनें
समाधान करें

"सुनें" कार्रवाई का इस्तेमाल सिर्फ़ "localhost" के साथ करने पर ही किया जा सकता है. इनमें से कोई भी दूसरी कार्रवाई मौजूद होने पर, "रिज़ॉल्व" (सॉल्व होस्ट/आईपी नेम सर्विस लुकअप) कार्रवाई शामिल होती है.
resolve हां
कनेक्ट करें

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

Apigee, साइटलोकल, किसी भी लोकल, लूपबैक, और लिंकलोकल पतों को ऐक्सेस करने पर पाबंदी लगाता है.

सुनें,
स्वीकार करें
नहीं
java.net.URLPermission

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

लिंक बनाने की कार्रवाई के लिए अनुमति की क्लास.
कठिन नहीं
सांकेतिक नहीं
java.security.SecurityPermission

SecurityPermission में एक नाम होता है जिसे “टारगेट का नाम” भी कहा जाता है. हालांकि, इसमें कार्रवाइयों की कोई सूची नहीं होती है; या तो आपके पास नाम वाली अनुमति है या नहीं है.
टारगेट का नाम, सुरक्षा कॉन्फ़िगरेशन पैरामीटर का नाम है (नीचे देखें). फ़िलहाल, SecurityPermission ऑब्जेक्ट का इस्तेमाल नीति, सुरक्षा, सेवा देने वाली कंपनी, हस्ताक्षर करने वाले, और Identity ऑब्जेक्ट के ऐक्सेस की सुरक्षा करने के लिए किया जाता है.
createAccessControlContext नहीं
getDomainCombiner नहीं
getPolicy नहीं
setPolicy नहीं
createPolicy.{policy type} नहीं
getप्रॉपर्टी.{key} नहीं
setप्रॉपर्टी.{key} नहीं
insertProvider नहीं
हटाएँProvider.{provider name} नहीं
मिटाएंProviderProperties.{provider name} नहीं
pushProviderप्रॉपर्टी.{provider name} नहीं
निकालेंProviderप्रॉपर्टी.{provider name} नहीं
SQLPermission setLog नहीं
callAbort नहीं
setSyncFactory नहीं
setNetworkTimeout नहीं
deregisterDriver नहीं
java.util.logging.LoggingPermission

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

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

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

किसी खास विषय से जुड़े निजी क्रेडेंशियल के ऐक्सेस की सुरक्षा करें. विषय को प्रिंसिपल के एक सेट में दिखाया जाता है. इस अनुमति के टारगेट नाम में, क्रेडेंशियल क्लास का नाम और प्रिंसिपल के एक सेट के बारे में बताया जाता है. इस अनुमति की कार्रवाइयों के लिए, सिर्फ़ "read" वैल्यू है.
क्रेडेंशियल क्लास {PrincipalClass "PrincipalName"}* नहीं
javax.security.auth.kerberos.ServicePermission

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

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

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

फ़िलहाल, AuthPermission ऑब्जेक्ट का इस्तेमाल विषय, SubjectDomainDomainr, प्रवेशContext, और कॉन्फ़िगरेशन ऑब्जेक्ट का ऐक्सेस सुरक्षित रखने के लिए किया जाता है.
doAs नहीं
doAsPrivileged नहीं
getSubject नहीं
getSubjectFromDomainCombiner नहीं
setReadOnly नहीं
modifyPrincipals नहीं
modifyPublicCredentials नहीं
modifyPrivateCredentials नहीं
refreshCredential नहीं
destroyCredential नहीं
createलॉगिनContext.{name} नहीं
getLoginConfiguration नहीं
setLoginConfiguration नहीं
createलॉगिनकॉन्फ़िगरेशन.{कॉन्फ़िगरेशन प्रकार} नहीं
refreshLoginConfiguration नहीं
javax.net.ssl.SSLPermission
setHostnameVerifier नहीं
getSSLSessionContext नहीं
setDefaultSSLContext नहीं
javax.management.MBeanPermission

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

action className#member[objectName]

अगर आपके पास MBianअनुमति है, तो सभी चार आइटम के मेल खाने पर ही कार्रवाई की जा सकती है.
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

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