आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
Java की अनुमतियों से जुड़ी नीतियों के बारे में ज़रूरी जानकारी
अगर Java कॉलआउट नीतियां डेवलप की जा रही हैं, तो आपको यह पता होना चाहिए कि Edge JVM में कौनसी अनुमति नीतियां लागू हैं और वे आपके कोड पर कैसे असर डालेंगी. उदाहरण के लिए, आपके कस्टम जावा कोड के पास फ़ाइल सिस्टम का असीमित ऐक्सेस नहीं होता. हालांकि, फ़ाइल सिस्टम के ऐक्सेस के मामले में, कुछ फ़ाइलें पढ़ी जा सकती हैं. जैसे, नीति के संसाधन वाली फ़ाइलें. हालांकि, फ़ाइल सिस्टम के ज़्यादातर अन्य ऐक्सेस ब्लॉक किए जाते हैं. इस विषय में, JDK की अनुमतियों के सभी टाइप और उनके टारगेट या कार्रवाइयों की सूची दी गई है. हम हर टारगेट या कार्रवाई के लिए, अनुमति से जुड़ी नीति और उन अपवादों के बारे में बताते हैं जिनके बारे में आपको जानकारी होनी चाहिए.
जेडीके की अनुमतियों के टाइप और हर अनुमति के बारे में ज़्यादा जानने के लिए, Java Development Kit (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
apigeeuser: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 में एक पाथनेम और उस पाथनेम के लिए मान्य कार्रवाइयों का सेट होता है. |
पढ़ा गया | हां, लेकिन पाबंदियां लागू हैं. पाबंदियां देखें. |
| मेरी मदद करो | नहीं | |
| लागू करना | नहीं | |
| मिटाएं | नहीं | |
| 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
|
नहीं |