Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
Java की अनुमति से जुड़ी नीतियों के बारे में आपके लिए क्या जानना ज़रूरी है
अगर आपको Java कॉलआउट की नीतियां बनानी हैं, तो आपके लिए यह जानना ज़रूरी है कि Edge JVM में कौनसी अनुमति नीतियां लागू हैं और वे आपके कोड पर किस तरह असर डालती हैं. उदाहरण के लिए, आपके कस्टम Java कोड के पास फ़ाइल सिस्टम का अनलिमिटेड ऐक्सेस नहीं है. हालांकि, फ़ाइल सिस्टम ऐक्सेस के मामले में, कुछ फ़ाइलें पढ़ी जा सकती हैं, जैसे कि नीति की संसाधन फ़ाइलें. हालांकि, फ़ाइल सिस्टम के ज़्यादातर ऐक्सेस ब्लॉक कर दिए गए हैं. इस विषय में, जेडीके की सभी तरह की अनुमतियों और उनसे जुड़े टारगेट या कार्रवाइयों की सूची दी गई है. हर टारगेट या कार्रवाई के लिए, हम अनुमति की नीति और ऐसे किसी भी अपवाद के बारे में बताते हैं जिसके बारे में आपको पता होना चाहिए.
JDK अनुमतियों के टाइप और हर अनुमति से मिलने वाली अनुमतियों के बारे में ज़्यादा जानने के लिए, Java डेवलपमेंट किट (JDK) में दी गई अनुमतियां लेख पढ़ें.
सुरक्षा से जुड़ी पाबंदियां चालू की जा रही हैं
Edge for Private Cloud में, सुरक्षा से जुड़ी पाबंदियां डिफ़ॉल्ट रूप से बंद होती हैं. इसका मतलब है कि आपका पसंद के मुताबिक बनाया गया Java कॉलआउट कोड, बिना किसी पाबंदी के सभी संसाधनों को ऐक्सेस कर सकता है. अपने Edge for Private Cloud को इंस्टॉल करने के लिए, सुरक्षा से जुड़ी पाबंदियां चालू करने के लिए, यह तरीका अपनाएं:
- पहले मैसेज प्रोसेसर नोड पर, फ़ाइल
$APIGEE_ROOT/customer/application/message-processor.properties
को किसी एडिटर में खोलें. अगर फ़ाइल मौजूद नहीं है, तो उसे बनाएं. - फ़ाइल में यह लाइन जोड़ें:
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
- मैसेज प्रोसेसर को रीस्टार्ट करें:
apigee-service message-processor restart
- ये चरण बाकी सभी मैसेज प्रोसेसर पर दोहराएं.
अनुमति का टाइप | टारगेट या कार्रवाई का नाम | अनुमति दी गई |
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
|
नहीं |