אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
מה צריך לדעת על כללי מדיניות ההרשאות ב-Java
אם אתם מפתחים כללי מדיניות של Java Callout, אתם צריכים לדעת אילו כללי מדיניות של הרשאות בתוקף ב-JVM של Edge ואיך הם ישפיעו על הקוד שלכם. לדוגמה, לקוד Java המותאם אישית שלכם אין גישה בלתי מוגבלת למערכת הקבצים. עם זאת, במקרה של גישה למערכת קבצים, אפשר לקרוא קבצים מסוימים, כמו קובצי משאבים של מדיניות. אבל הגישה לרוב מערכות הקבצים האחרות חסומה. בנושא הזה מפורטים כל סוגי ההרשאות ב-JDK והיעדים או הפעולות הרלוונטיים שלהם. לכל יעד או פעולה, אנחנו מציינים את מדיניות ההרשאות ואת כל החריגים שחשוב לדעת עליהם.
מידע נוסף על סוגי ההרשאות ב-JDK ועל הפעולות שאפשר לבצע עם כל הרשאה זמין במאמר הרשאות ב-Java Development Kit (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 מורכב מנתיב וקבוצה של פעולות שתקפות לנתיב הזה. |
קריאה | כן, אבל יש הגבלות. מידע נוסף על הגבלות |
| לכתוב | לא | |
| להריץ | לא | |
| delete | לא | |
| readLink | כן | |
| java.io.SerializablePermission SerializablePermission מכיל שם (שנקרא גם 'שם יעד') אבל לא רשימת פעולות. יש לכם את ההרשאה שצוינה או שאין לכם אותה. |
enableSubclassImplementation | כן |
| enableSubstitution | לא | |
| java.lang.management.ManagementPermission Methods defined in the management interface for the Java platform |
עוצמת הקול | לא |
| מעקב | לא | |
| 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 מייצג גישה לרשת דרך sockets. הרשאת Socket מורכבת ממפרט של מארח ומקבוצה של 'פעולות' שמציינות דרכים להתחבר למארח הזה. 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) מרומזת כשמופיעה אחת מהפעולות האחרות. |
התאמת נתונים (resolve) | כן |
| חיבור |
כן, אבל יש הגבלות. מידע נוסף על הגבלות Apigee מגביל את הגישה לכתובות sitelocal, anylocal, loopback ו-linklocal. |
|
| להאזין, לאשר |
לא | |
| 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 | לא | |
| יצירת אובייקט (instantiate) | לא | |
| להפעיל | לא | |
| isInstanceOf | לא | |
| queryMBeans | לא | |
| queryNames | לא | |
| registerMBean | לא | |
| removeNotificationListener | לא | |
| setAttribute | לא | |
| unregisterMBean | לא | |
| javax.management.MBeanServerPermission |
createMBeanServer | לא |
| findMBeanServer | לא | |
| newMBeanServer | לא | |
| releaseMBeanServer | לא | |
| javax.management.MBeanTrustPermission ההרשאה הזו מייצגת 'אמון' בחותם או בבסיס קוד. |
רישום | לא |
| * | לא | |
|
javax.management.remote.SubjectDelegationPermission
|
לא |