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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

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

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

במאמר Permissions in the Java Development Kit (JDK) תוכלו לקרוא מידע נוסף על סוגי ההרשאות של 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.FilePermission מייצגת גישה לקובץ או לספרייה. FilePermission מורכבת משם נתיב ומקבוצה של פעולות תקינות עבור שם הנתיב הזה.
קריאה כן, אבל בכפוף להגבלות. למידע נוסף, ראו הגבלות.
כתיבה לא
execute לא
מחיקה לא
readLink כן
java.io.Serial softwarePermission

Serial matchingPermission מכיל שם (נקרא גם 'שם יעד') אבל אין רשימת פעולות. יש לך את ההרשאה בעלת השם או שאין לך.
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.{שם הספרייה} לא
accessClassInPackage. {package name} כן
SetClassInPackage. {package name} לא
accessDeclaredMembers לא
queuePrintJob לא
getStackTrace לא
setDefaultUncaughtExceptionHandler לא
העדפות לא
usePolicy לא
java.net.NetPermission

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

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

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

קבלה
האזנה
פתרון

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

כן, אבל בכפוף להגבלות. למידע נוסף, ראו הגבלות.

Apigee מגבילה את הגישה לכתובות sitelocal , anylocal, לולאה חוזרת ו-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.{שם הספק} לא
clearProviderProperties.{שם הספק} לא
PutProviderProperty.{שם הספק} לא
removeProviderProperty.{שם הספק} לא
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" לא חוקיים.

הפעולות שצריך לבצע מועברות ל-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 ועל פרטי הכניסה הנדרשים כדי לגשת לשירותים האלה.
initiate לא
אישור לא
javax.security.auth.kerberos.DelegationPermission

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

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

נכון לעכשיו האובייקט AuthPermission משמש לשמירת הגישה לאובייקטים Subject, SubjectDomainIntegrationr, ל-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 לא
יצירת אובייקט (instantiate) לא
להפעיל לא
isInstanceOf לא
queryMBeans לא
queryNames לא
registerMBean לא
removeNotificationListener לא
setAttribute לא
unregisterMBean לא
javax.management.MBeanServerPermission
createMBeanServer לא
findMBeanServer לא
newMBeanServer לא
releaseMBeanServer לא
javax.management.MBeanTrustPermission

ההרשאה הזו מייצגת "Trust" בחותם או ב-codebase.
register לא
* לא
javax.management.remote.SubjectDelegationPermission
לא