คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
สิ่งที่คุณต้องทราบเกี่ยวกับนโยบายสิทธิ์สำหรับ Java
หากคุณกำลังพัฒนานโยบายการเรียก Java คุณต้องทราบว่านโยบายสิทธิ์ใดที่มีผลใน Edge JVM และนโยบายเหล่านั้นจะส่งผลต่อโค้ดของคุณอย่างไร เช่น โค้ด Java ที่กำหนดเองไม่มีสิทธิ์เข้าถึงระบบไฟล์แบบไม่จำกัด แต่ในกรณีที่เข้าถึงระบบไฟล์ คุณจะอ่านบางไฟล์ได้ เช่น ไฟล์ทรัพยากรนโยบาย แต่การเข้าถึงระบบไฟล์อื่นๆ ส่วนใหญ่จะถูกบล็อก หัวข้อนี้จะแสดงประเภทสิทธิ์ JDK ทั้งหมดและเป้าหมายหรือการดำเนินการที่เกี่ยวข้อง เราจะระบุนโยบายสิทธิ์และข้อยกเว้นที่คุณจำเป็นต้องทราบสำหรับแต่ละเป้าหมายหรือการดำเนินการแต่ละรายการ
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทสิทธิ์ JDK และสิ่งที่อนุญาตแต่ละรายการได้ที่สิทธิ์ใน Java Development Kit (JDK)
การเปิดใช้ข้อจำกัดด้านความปลอดภัย
ใน Edge สำหรับ Private Cloud ข้อจำกัดด้านความปลอดภัยจะถูกปิดใช้โดยค่าเริ่มต้น ซึ่งหมายความว่าโค้ดข้อความไฮไลต์ 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
apigee
user: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 ประกอบด้วยชื่อพาธและชุดการดำเนินการที่ใช้ได้กับชื่อเส้นทางนั้น |
อ่าน | ใช่ แต่มีข้อจำกัด ดูข้อจำกัด |
เขียน | ไม่ได้ | |
execute | ไม่ได้ | |
ลบ | ไม่ได้ | |
readLink | ได้ | |
java.io.SerializingPermission Serialใกล้เคียงPermission จะมีชื่อ (หรือที่เรียกว่า "ชื่อเป้าหมาย") แต่ไม่มีรายการการดำเนินการ คุณอาจมีสิทธิ์ที่มีชื่อนั้นๆ หรือไม่มี |
enableSubclassImplementation | ได้ |
enableSubstitution | ไม่ได้ | |
java.lang.management.ManagementPermission เมธอดที่กำหนดไว้ในอินเทอร์เฟซการจัดการสำหรับแพลตฟอร์ม Java |
การควบคุม | ไม่ได้ |
จอภาพ | ไม่ได้ | |
java.lang.reflect.ReflectPermission สำหรับการดำเนินการแบบสะท้อนแสง ReflectPermission เป็นสิทธิ์ที่มีชื่อและไม่มีการดำเนินการ |
suppressAccessChecks | ไม่ได้ |
newProxyInPackage{ชื่อแพ็กเกจ} | ไม่ได้ | |
java.lang.RuntimePermission มีชื่อ (หรือที่เรียกว่า "ชื่อเป้าหมาย") แต่ไม่มีรายการการดำเนินการ คุณอาจมีสิทธิ์ที่มีชื่อนั้นๆ หรือไม่มี |
createClassLoader | ไม่ได้ |
getClassLoader | ได้ | |
setContextClassLoader | ได้ | |
enableContextClassLoaderOverride | ได้ | |
closeClassLoader | ไม่ได้ | |
setSecurityManager | ไม่ได้ | |
createSecurityManager | ไม่ได้ | |
getenv.{variable name} | ไม่ได้ | |
exitVM {สถานะการออก} | ไม่ได้ | |
shutdownHooks | ไม่ได้ | |
setFactory | ไม่ได้ | |
setIO | ไม่ได้ | |
modifyThread | ได้ | |
stopThread | ได้ | |
modifyThreadGroup | ได้ | |
getProtectionDomain | ได้ | |
getFileSystemAttributes | ไม่ได้ | |
readFileDescriptor | ได้ | |
writeFileDescriptor | ไม่ได้ | |
loadLibrary.{ชื่อไลบรารี} | ไม่ได้ | |
accessClassInPackage {ชื่อแพ็กเกจ} | ได้ | |
defineClassInPackage {ชื่อแพ็กเกจ} | ไม่ได้ | |
accessDeclaredMembers | ไม่ได้ | |
queuePrintJob | ไม่ได้ | |
getStackTrace | ไม่ได้ | |
setDefaultUncaughtExceptionHandler | ไม่ได้ | |
ค่ากำหนด | ไม่ได้ | |
usePolicy | ไม่ได้ | |
java.net.NetPermission NetPermission มีชื่อแต่ไม่มีรายการการดำเนินการ ซึ่งคุณจะมีสิทธิ์ที่ระบุชื่อนั้นๆ หรือคุณไม่มีสิทธิ์นั้น |
setDefaultAuthenticator | ไม่ได้ |
requestPasswordAuthentication | ไม่ได้ | |
specifyStreamHandler | ได้ | |
setProxySelector | ไม่ได้ | |
getProxySelector | ไม่ได้ | |
setCookieHandler | ไม่ได้ | |
getCookieHandler | ไม่ได้ | |
setResponseCache | ไม่ได้ | |
getResponseCache | ไม่ได้ | |
getNetworkInformation | ไม่ได้ | |
java.net.SocketPermission แสดงการเข้าถึงเครือข่ายผ่านซ็อกเก็ต SocketPermission ประกอบด้วยข้อกำหนดของโฮสต์และชุด "การดำเนินการ" ที่ระบุวิธีเชื่อมต่อกับโฮสต์นั้น host = (ชื่อโฮสต์ | IPaddress)[:portrange] portrange = portnumber | -portnumber | portnumber-[portnumber] วิธีที่เป็นไปได้ในการเชื่อมต่อกับโฮสต์คือ ยอมรับ เชื่อมต่อ ฟัง แก้ไข การดำเนินการ "listen" มีความหมายเมื่อใช้กับ "localhost" เท่านั้น การดำเนินการ "resolve" (แก้ไขปัญหาการค้นหาบริการชื่อโฮสต์/IP) จะกล่าวเป็นนัยเมื่อมีการดำเนินการอื่นๆ ปรากฏขึ้น |
resolve | ได้ |
connect |
ใช่ แต่มีข้อจำกัด ดูข้อจำกัด Apigee จะจำกัดการเข้าถึงไปยังที่อยู่ของ sitelocal, Anylocal, Loopback และ 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.LwarrantyPermission SecurityManager จะตรวจสอบออบเจ็กต์ java.util.logging.Lในเร็วๆ นี้เมื่อโค้ดที่ทำงานกับ 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 ปกป้องสิทธิ์เข้าถึงข้อมูลเข้าสู่ระบบส่วนตัวของเรื่องที่เฉพาะเจาะจง โดยหัวเรื่องจะมีชุดผู้มีตำแหน่งหลักแทน ชื่อเป้าหมายของสิทธิ์นี้ระบุชื่อคลาสข้อมูลรับรองและชุดผู้ใช้หลัก ค่าที่ถูกต้องสำหรับการดำเนินการของสิทธิ์นี้คือ "อ่าน" |
CredentialClass {PrincipalClass "PrincipalName"}* | ไม่ได้ |
javax.security.auth.kerberos.ServicePermission ปกป้องบริการ Kerberos และข้อมูลเข้าสู่ระบบที่จำเป็นต่อการเข้าถึงบริการเหล่านั้น |
initiate | ไม่ได้ |
ยอมรับ | ไม่ได้ | |
javax.security.auth.kerberos.DelegationPermission ใช้เพื่อจำกัดการใช้งานโมเดลการมอบสิทธิ์ของ Kerberos เช่น ตั๋วที่ส่งต่อและพร็อกซีได้ ชื่อเป้าหมายของสิทธิ์นี้ระบุผู้ใช้หลักของบริการ Kerberos 1 คู่ ข้อแรกคือผู้ใช้หลักของบริการย่อยที่ได้รับความไว้วางใจให้ใช้ตั๋วแบบ Ticket Granting (TGT) ผู้ใช้หลักของบริการที่ 2 กำหนดบริการเป้าหมายที่ผู้ใช้หลักของบริการย่อยจะต้องโต้ตอบด้วยในนามของ KerberosPrincipal ที่เริ่มต้น |
initiate | ไม่ได้ |
ยอมรับ | ไม่ได้ | |
javax.security.auth.AuthPermission ปัจจุบันมีการใช้ออบเจ็กต์ AuthPermission เพื่อปกป้องการเข้าถึงออบเจ็กต์ Subject, SubjectDomainIncluder, LoginContext และ Configuration |
doAs | ไม่ได้ |
doAsPrivileged | ไม่ได้ | |
getSubject | ไม่ได้ | |
getSubjectFromDomainCombiner | ไม่ได้ | |
setReadOnly | ไม่ได้ | |
modifyPrincipals | ไม่ได้ | |
modifyPublicCredentials | ไม่ได้ | |
modifyPrivateCredentials | ไม่ได้ | |
refreshCredential | ไม่ได้ | |
destroyCredential | ไม่ได้ | |
createLoginContext.{name} | ไม่ได้ | |
getLoginConfiguration | ไม่ได้ | |
setLoginConfiguration | ไม่ได้ | |
createLoginConfiguration.{ประเภทการกำหนดค่า} | ไม่ได้ | |
refreshLoginConfiguration | ไม่ได้ | |
javax.net.ssl.SSLPermission |
setHostnameVerifier | ไม่ได้ |
getSSLSessionContext | ไม่ได้ | |
setDefaultSSLContext | ไม่ได้ | |
javax.management.MBeanPermission สิทธิ์ควบคุมการเข้าถึงการดำเนินการ MBeanServer หากตั้งค่าเครื่องมือจัดการความปลอดภัยโดยใช้ 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 สิทธิ์นี้แสดงถึง "ความน่าเชื่อถือ" ในตัวลงนามหรือฐานของโค้ด |
register | ไม่ได้ |
* | ไม่ได้ | |
javax.management.remote.SubjectDelegationPermission
|
ไม่ได้ |