คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
สิ่งที่จำเป็นต้องทราบเกี่ยวกับนโยบายสิทธิ์ของ Java
หากคุณกำลังพัฒนานโยบาย Java Callout คุณต้องทราบว่านโยบายสิทธิ์ใดที่ มีผลใน JVM ของ Edge และนโยบายเหล่านั้นจะส่งผลต่อโค้ดของคุณอย่างไร เช่น โค้ด Java ที่กำหนดเอง ไม่มีสิทธิ์เข้าถึงระบบไฟล์แบบไม่จำกัด อย่างไรก็ตาม ในกรณีของการเข้าถึงระบบไฟล์ คุณจะอ่านไฟล์บางอย่างได้ เช่น ไฟล์ทรัพยากรนโยบาย แต่การเข้าถึงระบบไฟล์อื่นๆ ส่วนใหญ่จะถูกบล็อก หัวข้อนี้แสดงประเภทสิทธิ์ JDK ทั้งหมดและเป้าหมายหรือการดำเนินการที่เกี่ยวข้อง สําหรับเป้าหมายหรือการกระทําแต่ละอย่าง เราจะระบุนโยบายสิทธิ์และข้อยกเว้นที่คุณต้องทราบ
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทสิทธิ์ของ JDK และสิ่งที่แต่ละสิทธิ์อนุญาตได้ที่สิทธิ์ใน Java Development Kit (JDK)
การเปิดใช้ข้อจำกัดด้านความปลอดภัย
ใน Edge สำหรับ Private Cloud ระบบจะปิดใช้ข้อจำกัดด้านความปลอดภัยโดยค่าเริ่มต้น ซึ่งหมายความว่า โค้ด Callout Java ที่กำหนดเองจะเข้าถึงทรัพยากรทั้งหมดได้โดยไม่มีข้อจำกัด หากต้องการเปิดใช้ข้อจำกัดด้านความปลอดภัยใน Edge สำหรับการติดตั้ง Private Cloud ให้ทำตามขั้นตอนด้านล่าง
- ในโหนด Message Processor แรก ให้เปิดไฟล์
$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
- ทำขั้นตอนเหล่านี้ซ้ำใน Message Processor ที่เหลือทั้งหมด
| ประเภทสิทธิ์ | ชื่อเป้าหมายหรือชื่อการกระทํา | ได้รับสิทธิ์แล้ว |
| 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] วิธีที่เป็นไปได้ในการเชื่อมต่อกับโฮสต์มีดังนี้ accept connect listen resolve การดำเนินการ "listen" จะมีความหมายเมื่อใช้กับ "localhost" เท่านั้น การดำเนินการ "resolve" (resolve host/ip name service lookups) จะมีผลเมื่อมีการดำเนินการอื่นๆ |
จับคู่ข้อมูล | ใช่ |
| เชื่อมต่อ |
ได้ แต่มีข้อจำกัด ดูข้อจำกัด Apigee จำกัดการเข้าถึงที่อยู่ sitelocal, anylocal, loopback และ linklocal |
|
| ฟัง ยอมรับ |
ไม่ | |
| java.net.URLPermission แสดงถึงสิทธิ์ในการเข้าถึงทรัพยากรหรือชุดทรัพยากรที่กำหนดโดย URL ที่ระบุ และ สำหรับชุดวิธีการคำขอและส่วนหัวของคำขอที่ผู้ใช้ตั้งค่าได้ที่ระบุ ชื่อของ สิทธิ์คือสตริง URL สตริงการดำเนินการคือการต่อกันของเมธอดคำขอ และส่วนหัว คลาสนี้ไม่ได้จำกัดช่วงของชื่อเมธอดและส่วนหัว |
ใช่ | |
| LinkPermission คลาส Permission สำหรับการดำเนินการสร้างลิงก์ |
ยาก | ไม่ |
| เชิงสัญลักษณ์ | ไม่ | |
| 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.{ชื่อผู้ให้บริการ} | ไม่ | |
| 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" ใช้ไม่ได้ ระบบจะส่งการดำเนินการที่จะให้สิทธิ์ไปยังตัวสร้างในสตริงที่มีรายการคีย์เวิร์ดที่คั่นด้วยคอมมา 0 รายการขึ้นไป |
อ่าน | ใช่ |
| เขียนหน่อย | ไม่ | |
|
javax.xml.ws.WebServicePermission
|
publishEndpoint | ไม่ |
| javax.xml.bind.JAXBPermission | setDatatypeConverter | ไม่ |
| javax.sound.sampled.AudioPermission สิทธิ์เข้าถึงทรัพยากรของระบบเสียง |
play | ไม่ |
| บันทึก | ไม่ | |
| javax.security.auth.PrivateCredentialPermission ปกป้องการเข้าถึงข้อมูลเข้าสู่ระบบส่วนตัวที่เป็นของ Subject ที่เฉพาะเจาะจง Subject is represented by a Set of Principals. ชื่อเป้าหมายของสิทธิ์นี้ระบุ ชื่อคลาสของข้อมูลเข้าสู่ระบบ และชุดของหลักการ ค่าที่ใช้ได้ค่าเดียวสำหรับ การดำเนินการของสิทธิ์นี้คือ "read" |
CredentialClass {PrincipalClass "PrincipalName"}* | ไม่ |
| javax.security.auth.kerberos.ServicePermission ปกป้องบริการ Kerberos และข้อมูลเข้าสู่ระบบที่จำเป็นต่อการเข้าถึงบริการเหล่านั้น |
เริ่ม | ไม่ |
| ยอมรับ | ไม่ | |
| javax.security.auth.kerberos.DelegationPermission ใช้เพื่อจำกัดการใช้งานโมเดลการมอบสิทธิ์ Kerberos เช่น ตั๋วที่ส่งต่อได้และตั๋วที่ใช้พร็อกซีได้ ชื่อเป้าหมายของสิทธิ์นี้ระบุคู่ของชื่อผู้ใช้หลักของบริการ Kerberos อย่างแรกคือหลักของบริการย่อยที่ได้รับความไว้วางใจให้ใช้ตั๋วการให้สิทธิ์ตั๋ว (TGT) ชื่อผู้ใช้หลักของบริการที่ 2 จะกำหนดบริการเป้าหมายที่ชื่อผู้ใช้หลักของบริการย่อย จะโต้ตอบด้วยในนามของ 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 หากมีการตั้งค่า Security Manager โดยใช้ System.setSecurityManager(java.lang.SecurityManager) การดำเนินการส่วนใหญ่ใน MBeanServer จะกำหนดให้สิทธิ์ของผู้เรียกใช้ต้องมี MBeanPermission ที่เหมาะสมกับการดำเนินการ action className#member[objectName] หากคุณมี MBeanPermission จะอนุญาตให้ดำเนินการได้ก็ต่อเมื่อรายการทั้ง 4 รายการ ตรงกัน |
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
|
ไม่ |