مرجع أذونات Java

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

المعلومات التي تحتاج إلى معرفتها عن سياسات أذونات Java

إذا كنت بصدد تطوير سياسات Java Callout، عليك معرفة سياسات الأذونات السارية في Edge JVM وكيف ستؤثر في الرمز البرمجي. على سبيل المثال، لا يتيح رمز Java المخصّص الوصول غير المحدود إلى نظام الملفات. ومع ذلك، في ما يتعلق بإذن الوصول إلى نظام الملفات، يمكنك قراءة ملفات معيّنة، مثل ملفات موارد السياسات. ومع ذلك، يتم حظر معظم عمليات الوصول الأخرى إلى نظام الملفات. تدرِج هذه المقالة جميع أنواع أذونات JDK والاستهدافات أو الإجراءات الخاصة بها. بالنسبة إلى كل هدف أو إجراء، نحدّد سياسة الأذونات وأي استثناءات يجب معرفتها.

لمزيد من المعلومات عن أنواع أذونات 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 من مسار واسم ملف ومجموعة من الإجراءات الصالحة لهذا المسار واسم الملف.
قراءة نعم، ولكن تنطبق بعض القيود. يُرجى الاطّلاع على القيود.
في الكتابة لا
تنفيذ لا
حذف لا
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
لا