הפניה להרשאה Java

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

מה צריך לדעת על הרשאת Java למדיניות שלה

אם אתם מפתחים מדיניות יתרונות מרכזיים של Java, אתם צריכים לדעת אילו כללי מדיניות הרשאות חלים ב-Edge JVM ואיך הם ישפיעו על הקוד. לדוגמה, קוד Java מותאם אישית אין גישה בלתי מוגבלת למערכת הקבצים. עם זאת, במקרה של גישה למערכת הקבצים, אפשר לקרוא קבצים מסוימים, כמו קובצי משאבים של מדיניות. אבל רוב הגישה למערכת הקבצים חסמת. בנושא הזה מפורטים כל סוגי ההרשאות של JDK והיעדים או הפעולות המתאימים להם. לכל יעד או פעולה אנחנו מציינים את מדיניות ההרשאות ואת כל החריגים שצריך שאתם מכירים.

מידע נוסף על סוגי ההרשאות של JDK ועל מה שכל הרשאה מאפשרת, זמין במאמר הרשאות ב- the Java Development Kit (JDK).

הפעלת הגבלות אבטחה

ב-Edge for Private Cloud פרטי, הגבלות האבטחה מושבתות כברירת מחדל. המשמעות היא לקוד ההסבר המותאם אישית של Java יש גישה לכל המשאבים ללא הגבלות. כדי להפעיל הגבלות אבטחה שקיימות ב-Edge להתקנת ענן פרטי, פועלים לפי התהליך הבא:

  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.FilePermissions מייצג גישה לקובץ או לספרייה. הרשאות לקובץ מורכב משם נתיב ומקבוצה של פעולות תקפות לאותו שם נתיב.
קריאה כן, אבל בכפוף להגבלות. להגבלות
כתיבה לא
לבצע לא
delete לא
readLink כן
java.io.SerializablePermission

הרשאה שניתן להשתמש בה באופן טורי מכילה שם (נקרא גם 'שם יעד') אבל לא רשימת פעולות; שיש לכם הרשאה בעלת שם, או שאין לכם אותה.
enableSubclassImplementation כן
enableSubstitution לא
java.lang.management.ManagementPermission

שיטות שהוגדרו בממשק הניהול של פלטפורמת Java
עוצמת הקול לא
מעקב לא
java.lang.reflect.ReflectPermission

לפעולות רפלקטיביות. ReflectPermissions היא הרשאה בעלת שם ואין לה פעולות
suppressAccessChecks לא
newProxyInPackage.{package name} לא
java.lang.RuntimePermission

מכיל שם (נקרא גם 'שם יעד') אבל אין רשימת פעולות. שיש לכם את ההרשאה בעלת השם, או שלא.
createClassLoader לא
getClassLoader כן
setContextClassLoader כן
enableContextClassLoaderOverride כן
closeClassLoader לא
setSecurityManager לא
createSecurityManager לא
getenv.{variable name} לא
exportVM.{exit status} לא
shutdownHooks לא
setFactory לא
setIO לא
modifyThread כן
stopThread כן
modifyThreadGroup כן
getProtectionDomain כן
getFileSystemAttributes לא
readFileDescriptor כן
writeFileDescriptor לא
loadLibrary.{library name} לא
accessClassInPackage. {package name} כן
defineClassInPackage. {package name} לא
accessDeclaredMembers לא
queuePrintJob לא
getStackTrace, getStackTrace לא
setDefaultUncaughtExceptionHandler לא
העדפות לא
usePolicy לא
java.net.NetPermission

הרשאה נטו מכילה שם אך לא רשימת פעולות; יש לכם הרשאה בעלת שם או שלא.
setDefaultAuthenticator לא
requestPasswordAuthentication לא
specifyStreamHandler כן
setProxySelector לא
getProxySelector לא
setCookieHandler לא
getCookieHandler לא
setResponseCache לא
getResponseCache לא
getNetworkInformation לא
java.net.SocketPermission

מייצג גישה לרשת דרך שקעים. הרשאת Socket מורכבת ממארח המפרט וקבוצה של "פעולות" שמציין דרכים להתחבר למארח הזה.
Host = (hostname | IPaddress)[:portrange]
Portrange = Portnumber | -portnumber | Portnumber-[portnumber]

הדרכים האפשריות להתחבר למארח הן

אישור
חיבור
האזנה
סימון הדיון כסגור

הקובץ "listen" הפעולה הזו משמעותית רק כשמשתמשים בה יחד עם "localhost". "הפתרון" (פתרון חיפושי שירות שם מארח/IP) משתמעת כשאחת מהפעולות האחרות כיום.
התאמת נתונים (resolve) כן
חיבור

כן, אבל בכפוף להגבלות. להגבלות

ב-Apigee יש הגבלה על הגישה לכתובות sitelocal, anylocal, לולאה חוזרת ו-linklocal.

האזנה,
אישור
לא
java.net.URLPermission

מייצג את הרשאת הגישה למשאב או לקבוצת משאבים שהוגדרו על ידי כתובת URL נתונה, וגם עבור קבוצה נתונה של שיטות בקשה הניתנות להגדרה על ידי המשתמש וכותרות בקשות. השם של היא המחרוזת של כתובת ה-URL. מחרוזת הפעולות היא שרשור של שיטות הבקשה וכותרות. המחלקה הזו לא מגבילה את הטווח של שמות השיטות והכותרות.
כן
LinkPermission

מחלקה של הרשאות לפעולות של יצירת קישורים.
קשה לא
סימבולי לא
java.security.SecurityPermission

הרשאת אבטחה מכילה שם (נקרא גם 'שם יעד') אבל אין בה פעולות list; שיש לכם הרשאה בעלת שם, או שאין לכם אותה.
שם היעד הוא השם של פרמטר הגדרת אבטחה (ראו בהמשך). כרגע האובייקט Security Allow משמש כדי להגן על הגישה למדיניות, לאבטחה, לספק, אובייקטים של 'חתימה' ו'זהות'.
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.LoggingAuthor כאשר יש קוד פועלת עם SecurityManager קורא לאחת משיטות הבקרה לרישום ביומן (למשל Logger.setLevel).
עוצמת הקול לא
java.util.PropertyPermission
השם הוא שם הנכס (JavaScript.home, os.name וכו'). המוסכמה למתן שמות תואם למוסכמות לגבי מתן שמות לנכסים בהיררכיה. בנוסף, ייתכן שתופיע כוכבית בסוף השם, אחרי '.' או עצמו, כדי לציין התאמה לתווים כלליים לחיפוש. מוצרים לדוגמה: "java.*" או '*' הוא חוקי, "*Java" או 'a*b' אינו חוקי.

הפעולות שיוענקו מועברות ל-constructor במחרוזת שמכילה רשימה של אפס מילות מפתח או יותר שמופרדות בפסיקים.
קריאה כן
כתיבה לא
javax.xml.ws.WebServicePermission
publishEndpoint לא
javax.xml.bind.JAXBPermission setDatatypeConverter לא
javax.sound.sampled.AudioPermission

הרשאות גישה למשאבי מערכת האודיו.
הפעלה לא
רשומה לא
javax.security.auth.PrivateCredentialPermission

הגנה על הגישה לפרטי כניסה פרטיים ששייכים לנושא מסוים. הנושא הוא שמיוצגים על ידי קבוצת משתמשים. שם היעד של ההרשאה הזו מציין השם של מחלקה של פרטי כניסה, וקבוצת חשבונות משתמשים. הערך החוקי היחיד להרשאה זו הפעולות הן "קריאה".
CredentialClass {PrincipalClass "PrincipalName"}* לא
javax.security.auth.kerberos.ServicePermission

להגן על שירותי Kerberos ועל פרטי הכניסה שנחוצים כדי לגשת לשירותים האלה.
ליזום לא
אישור לא
javax.security.auth.kerberos.DelegationPermission

משמש להגבלת השימוש במודל הענקת הגישה של Kerberos. כלומר, ניתן להעברה וניתן להעברה כרטיסים.

שם היעד של ההרשאה הזו מציין צמד חשבונות משתמשים ב-kerberos. הראשון הוא חשבון השירות המשני שמופקד לשימוש בשירות הענקת הכרטיס כרטיס (TGT). חשבון המשתמש השני מגדיר את שירות היעד חשבון המשתמש בשירות הוא לקיים אינטראקציה עם חשבון KerberosPrincipal.
ליזום לא
אישור לא
javax.security.auth.AuthPermission

נכון לעכשיו, האובייקט AuthAuthor משמש כדי להגן על הגישה לנושא, אובייקטים מסוג 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 דורשת שההרשאות של המתקשר/ת ירמזו על כך שנדרשת הרשאה המתאימה את הפעולה.

action className#member[objectName]

אם יש לך MBeanPermissions, אפשר לבצע פעולות רק אם כל ארבעת הפריטים הם להתאים לבחירה.
addNotificationListener לא
getAttribute לא
getClassLoader לא
getClassLoaderFor לא
getClassLoaderRepository לא
getDomains לא
getMBeanInfo לא
getObjectInstance לא
יצירת אובייקט (instantiate) לא
להפעיל לא
isInstanceOf לא
queryMBeans לא
queryNames לא
registerMBean לא
removeNotificationListener לא
setAttribute לא
unregisterMBean לא
javax.management.MBeanServerPermission
createMBeanServer לא
findMBeanServer לא
newMBeanServer לא
releaseMBeanServer לא
javax.management.MBeanTrustPermission

ההרשאה הזו מייצגת את הערך 'Trust' (לתת אמון). בחותם או ב-codebase.
להירשם לא
* לא
javax.management.remote.SubjectDelegationPermission
לא