مرجع أذونات Java

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

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

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

لمعرفة المزيد من المعلومات عن أنواع أذونات JDK وما يسمح به كل إذن، يمكنك الاطّلاع على الأذونات في مجموعة أدوات تطوير Java (JDK).

تفعيل قيود الأمان

في Edge لـ 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.SerializingPermission

يحتوي SerialablePermission على اسم (يُشار إليه أيضًا باسم "اسم الهدف") ولكنّه لا يتضمّن قائمة إجراءات، فإما أن يكون لديك الإذن المحدَّد أو ليس لديك الإذن بذلك.
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} نعم
selectClassInPackage. {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 من مواصفات المضيف ومجموعة "الإجراءات" التي تحدّد طرق الاتصال بهذا المضيف.
المضيف = (hostname | IPaddress)[:portrange]
المنفذ = رقم المنفذ | -portnumber | رقم المنفذ-[portnumber]

الطرق الممكنة للاتصال بالمضيف هي

قبول
اتصال
استماع
حل

يكون إجراء "الاستماع" مفيدًا فقط عند استخدامه مع "localhost". يكون الإجراء "الحل" (عمليات البحث عن خدمة اسم المضيف/عنوان IP) ضمنيًا عند توفُّر أي من الإجراءات الأخرى.
resolve نعم
اتصل

نعم، ولكن تنطبق القيود. يُرجى الاطّلاع على القيود.

تحظر Apigee الوصول إلى عناوين sitelocal وأي عنوان محلي واسترجاع وlinklocal.

استماع،
أقبل
لا
java.net.URLPermission

يمثّل هذا الإذن للوصول إلى مورد أو مجموعة من الموارد تم تحديدها بواسطة عنوان URL معيّن، ومجموعة معيّنة من طرق الطلبات ورؤوس الطلبات التي يمكن للمستخدم إعدادها. واسم الإذن هو سلسلة عنوان URL. سلسلة الإجراءات هي سلسلة من طرق الطلب وعناوينه. لا تحظر هذه الفئة نطاق أسماء الطرق والعناوين.
نعم
LinkPermission

فئة الإذن لعمليات إنشاء الروابط.
صعب لا
رمزي لا
java.security.SecurityPermission

يحتوي SecurityPermission على اسم (يُشار إليه أيضًا باسم "اسم الهدف")، ولكنّه لا يتضمّن قائمة إجراءات، إمّا أنّك تملك الإذن المحدّد أو ليس لديك.
الاسم المستهدف هو اسم مَعلمة ضبط الأمان (انظر أدناه). في الوقت الحالي، يتم استخدام كائن SecurityPermission لحماية الوصول إلى كائنات السياسة والأمان ومقدِّم الخدمة والموقِّع والهوية.
createAccessControlContext لا
getDomainCombiner لا
getPolicy لا
setPolicy لا
createPolicy.{policy type} لا
getProperty.{key} لا
setProperty.{key} لا
insertProvider لا
removeProvider.{provider name} لا
clearProviderProperties.{provider name} لا
setProviderProperty.{provider name} لا
removeProviderProperty.{provider name} لا
SQLPermission setLog لا
callAbort لا
setSyncFactory لا
setNetworkTimeout لا
deregisterDriver لا
java.util.logging.LoggingPermission

سيتحقّق مدير الأمان من الكائن 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 وبيانات الاعتماد اللازمة للوصول إلى تلك الخدمات.
initiate لا
قبول لا
javax.security.auth.kerberos.DelegationPermission

يُستخدم لتقييد استخدام نموذج تفويض Kerberos، أي التذاكر القابلة لإعادة التوجيه والتي يمكن إنشاء خادم وكيل لها.

يحدِّد الاسم الهدف لهذا الإذن زوجًا من العناصر الرئيسية لخدمة kerberos. الأول هو مدير الخدمة التابع الذي يتم تكليفه باستخدام "تذكرة منح التذاكر" (TGT). يحدد الخدمة الأساسية الثانية الخدمة المستهدفة التي يتم التفاعل معها بالنيابة عن مدير KerberosPrincipal المبدئي.
initiate لا
قبول لا
javax.security.auth.AuthPermission

يُستخدم كائن AuthPermission حاليًا لتأمين الوصول إلى كائنات Subject وSubjectDomainModifyr وLogContext و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

يمثّل هذا الإذن "الثقة" في موقِّع أو قاعدة رموز.
register لا
* لا
javax.management.remote.SubjectDelegationPermission
لا