أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
المعلومات التي تحتاج إلى معرفتها عن سياسات أذونات Java
إذا كنت بصدد تطوير سياسات Java Callout، عليك معرفة سياسات الأذونات السارية في Edge JVM وكيف ستؤثر في الرمز البرمجي. على سبيل المثال، لا يتيح رمز Java المخصّص الوصول غير المحدود إلى نظام الملفات. ومع ذلك، في ما يتعلق بإذن الوصول إلى نظام الملفات، يمكنك قراءة ملفات معيّنة، مثل ملفات موارد السياسات. ومع ذلك، يتم حظر معظم عمليات الوصول الأخرى إلى نظام الملفات. تدرِج هذه المقالة جميع أنواع أذونات JDK والاستهدافات أو الإجراءات الخاصة بها. بالنسبة إلى كل هدف أو إجراء، نحدّد سياسة الأذونات وأي استثناءات يجب معرفتها.
لمزيد من المعلومات عن أنواع أذونات 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
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] The possible ways to connect to the host are accept connect listen resolve The "listen" action is only meaningful when used with "localhost". يتم ضِمنًا تنفيذ الإجراء "حلّ" (resolve عمليات البحث عن خدمة أسماء المضيفين/عناوين IP) عند توفّر أي من الإجراءات الأخرى. |
مطابقة | نعم |
| ربط |
نعم، ولكن تنطبق بعض القيود. يُرجى الاطّلاع على القيود. تحظر Apigee الوصول إلى عناوين sitelocal وanylocal وloopback وlinklocal. |
|
| listen, accept |
لا | |
| java.net.URLPermission تمثّل هذه السمة الإذن بالوصول إلى مورد أو مجموعة من الموارد المحدّدة من خلال عنوان URL معيّن، وذلك لمجموعة معيّنة من طرق الطلب وعناوين الطلب التي يمكن للمستخدم ضبطها. اسم الإذن هو سلسلة عنوان URL. سلسلة الإجراءات هي دمج لطُرق الطلب ورؤوسه. لا يفرض هذا الصف أي قيود على نطاق أسماء الطرق والعناوين. |
نعم | |
| LinkPermission فئة الأذونات لعمليات إنشاء الروابط. |
صعب | لا |
| رمزي | لا | |
| 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 الاسم هو اسم السمة ("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.PrivateCredentialPermission تتيح هذه الفئة حماية الوصول إلى بيانات الاعتماد الخاصة بموضوع معيّن. يتم تمثيل الموضوع بمجموعة من الجهات الرئيسية. يحدّد الاسم المستهدف لهذا الإذن اسم فئة بيانات الاعتماد ومجموعة من الجهات الرئيسية. القيمة الصالحة الوحيدة لإجراءات هذا الإذن هي "read". |
CredentialClass {PrincipalClass "PrincipalName"}* | لا |
| javax.security.auth.kerberos.ServicePermission لحماية خدمات Kerberos وبيانات الاعتماد اللازمة للوصول إلى هذه الخدمات |
التشغيل | لا |
| قبول | لا | |
| javax.security.auth.kerberos.DelegationPermission تُستخدَم هذه السياسة للحدّ من استخدام نموذج التفويض في Kerberos، أي التذاكر القابلة لإعادة التوجيه والقابلة للوكالة. يحدّد الاسم المستهدف لهذا الإذن زوجًا من أسماء الخدمة الأساسية في Kerberos. الأول هو الحساب الرئيسي التابع للخدمة الذي تم تفويضه لاستخدام تذكرة منح الوصول (TGT). يحدّد اسم الخدمة الأساسي الثاني الخدمة المستهدَفة التي سيتفاعل معها اسم الخدمة الأساسي التابع نيابةً عن 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
|
لا |