การอ้างอิงสิทธิ์ Java

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

สิ่งที่จำเป็นต้องทราบเกี่ยวกับสิทธิ์ Java นโยบาย

หากคุณกำลังพัฒนานโยบายการเรียก Java คุณต้องทราบว่านโยบายสิทธิ์ใดที่อยู่ใน ใน Edge JVM และผลกระทบที่จะมีต่อโค้ดของคุณ ตัวอย่างเช่น โค้ด Java ที่กำหนดเองของคุณ ไม่มีสิทธิ์เข้าถึงระบบไฟล์แบบไม่จำกัด แต่ในกรณีของการเข้าถึงระบบไฟล์ คุณจะอ่านไฟล์บางไฟล์ได้ เช่น ไฟล์ทรัพยากรนโยบาย แต่การเข้าถึงระบบไฟล์อื่นๆ ส่วนใหญ่นั้น ถูกบล็อก หัวข้อนี้แสดงประเภทสิทธิ์ JDK ทั้งหมด รวมไปถึงเป้าหมายหรือการดำเนินการที่เกี่ยวข้อง สำหรับแต่ละเป้าหมายหรือการดำเนินการ เราจะระบุนโยบายสิทธิ์และข้อยกเว้นใดๆ ที่คุณจำเป็นต้องทราบ รู้เกี่ยวกับ

ในการเรียนรู้เพิ่มเติมเกี่ยวกับประเภทสิทธิ์ JDK และสิ่งที่แต่ละสิทธิ์อนุญาต โปรดดูที่สิทธิ์ใน Java Development Kit (JDK)

การเปิดใช้ข้อจำกัดด้านความปลอดภัย

การจำกัดด้านความปลอดภัยใน Edge สำหรับ Private Cloud จะปิดใช้โดยค่าเริ่มต้น ซึ่งหมายความว่า โค้ดข้อความเสริม Java ที่กำหนดเองของคุณสามารถเข้าถึงทรัพยากรทั้งหมดโดยไม่มีข้อจำกัด วิธีเปิดใช้งาน ข้อจำกัดด้านความปลอดภัยในการติดตั้ง Edge for Private Cloud โปรดทำตามขั้นตอนด้านล่าง

  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. ทำซ้ำขั้นตอนเหล่านี้ใน Message Processor ที่เหลือทั้งหมด
ประเภทสิทธิ์ ชื่อเป้าหมายหรือการดำเนินการ ให้สิทธิ์แล้ว
java.awt.AWTPermission
accessClipboard ไม่
accessEventQueue ไม่
accessSystemTray ไม่
createRobot ไม่
fullScreenExclusive ไม่
listenToAllAWTEvents ไม่
readDisplayPixels ไม่
replaceKeyboardFocusManager ไม่
setAppletStub ไม่
setWindowsAlwaysOnTop ไม่
showWindowWithoutWarningBanner ไม่
toolkitModality ไม่
watchMousePointer ไม่
java.io.FilePermission

java.io.FilePermissions แทนสิทธิ์เข้าถึงไฟล์หรือไดเรกทอรี สิทธิ์เข้าถึงไฟล์ ประกอบด้วยชื่อเส้นทางและชุดการดำเนินการที่ถูกต้องสำหรับชื่อเส้นทางนั้น
อ่าน ใช่ แต่มีข้อจำกัด ดูข้อจำกัด
เขียน ไม่
ดำเนินการ ไม่
ลบ ไม่
readLink ควร
java.io.SerializablePermission

สิทธิ์การทำให้เป็นอนุกรมได้มีชื่อ (หรือเรียกว่า "ชื่อเป้าหมาย") แต่ไม่มี รายการการดำเนินการ คุณมีสิทธิ์ที่มีชื่อหรือไม่มี
enableSubclassImplementation ควร
enableSubstitution ไม่
java.lang.management.ManagementPermission

เมธอดที่กำหนดในอินเทอร์เฟซการจัดการสำหรับแพลตฟอร์ม Java
การควบคุม ไม่
จอภาพ ไม่
java.lang.reflect.ReflectPermission

สำหรับการดำเนินการแบบสะท้อนกลับ ReflectRight เป็นสิทธิ์ที่มีชื่อและไม่มี การทำงาน
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 {ชื่อแพ็กเกจ} ควร
defineClassInPackage. {ชื่อแพ็กเกจ} ไม่
accessDeclaredMembers ไม่
queuePrintJob ไม่
getStackTrace ไม่
setDefaultUncaughtExceptionHandler ไม่
ค่ากำหนด ไม่
usePolicy ไม่
java.net.NetPermission

NetPermissions มีชื่อแต่ไม่มีรายการการดำเนินการ คุณมีสิทธิ์ที่มีชื่อ หรือไม่เป็นเช่นนั้น
setDefaultAuthenticator ไม่
requestPasswordAuthentication ไม่
specifyStreamHandler ควร
setProxySelector ไม่
getProxySelector ไม่
setCookieHandler ไม่
getCookieHandler ไม่
setResponseCache ไม่
getResponseCache ไม่
getNetworkInformation ไม่
java.net.SocketPermission

แสดงการเข้าถึงเครือข่ายผ่านซ็อกเก็ต SocketPermissions ประกอบด้วยโฮสต์ ข้อกำหนดและชุดของ "การดำเนินการ" โดยระบุวิธีการเชื่อมต่อกับโฮสต์นั้น
โฮสต์ = (ชื่อโฮสต์ | ที่อยู่ IP)[:portrange]
Portrange = Portnumber | -portnumber | หมายเลขพอร์ต-[หมายเลขพอร์ต]

วิธีที่เป็นไปได้ในการเชื่อมต่อกับโฮสต์มีดังนี้

ยอมรับ
เชื่อมต่อ
ฟัง
แก้ไข

"การฟัง" action จะมีความหมายก็ต่อเมื่อใช้กับ "localhost" เท่านั้น "วิธีแก้ปัญหา" (แก้ไข การค้นหาบริการชื่อโฮสต์/IP) จะแสดงโดยนัยเมื่อมีการดำเนินการอื่นๆ ปัจจุบัน
จับคู่ข้อมูล ควร
เชื่อมต่อ

ใช่ แต่มีข้อจำกัด ดูข้อจำกัด

Apigee จะจำกัดการเข้าถึงที่อยู่ sitelocal, ทั้งหมดภายใน, Loopback และ linklocal

รอฟังอยู่
ยอมรับ
ไม่
java.net.URLPermission

แสดงสิทธิ์เข้าถึงชุดทรัพยากรหรือชุดทรัพยากรที่กำหนดโดย URL ดังกล่าว และ สำหรับชุดวิธีการคำขอที่ผู้ใช้ตั้งค่าได้และส่วนหัวของคำขอหนึ่งๆ ชื่อของ สิทธิ์คือสตริง URL สตริงการดำเนินการเป็นการเชื่อมโยงเมธอดคำขอเข้าด้วยกัน และส่วนหัว คลาสนี้ไม่จำกัดช่วงของชื่อเมธอดและส่วนหัว
ควร
LinkPermission

คลาสสิทธิ์สำหรับการดำเนินการสร้างลิงก์
ยาก ไม่
สัญลักษณ์ ไม่
java.security.SecurityPermission

สิทธิ์การรักษาความปลอดภัยมีชื่อ (หรือเรียกอีกอย่างว่า "ชื่อเป้าหมาย") แต่ไม่มีการดำเนินการใดๆ list; คุณมีสิทธิ์ที่มีชื่อหรือไม่มี
ชื่อเป้าหมายคือชื่อพารามิเตอร์การกำหนดค่าการรักษาความปลอดภัย (ดูด้านล่าง) ปัจจุบัน จะใช้ออบเจ็กต์ SecurityAllowed เพื่อป้องกันการเข้าถึงนโยบาย ความปลอดภัย ผู้ให้บริการ ออบเจ็กต์ 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.LakingPermissions เมื่อมีโค้ด การเรียกใช้ด้วย 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

สิทธิ์เข้าถึงทรัพยากรระบบเสียง
play ไม่
บันทึก ไม่
javax.security.auth.PrivateCredentialPermission

ป้องกันการเข้าถึงข้อมูลประจำตัวส่วนตัวที่เป็นของเรื่องใดเรื่องหนึ่ง เรื่องคือ โดยมีผู้ที่อยู่ในกลุ่มอาจารย์ใหญ่ ชื่อเป้าหมายของสิทธิ์นี้ระบุ ชื่อคลาสเอกสารรับรองและชุดผู้ใช้หลัก มีค่าเดียวที่ถูกต้องสำหรับสิทธิ์นี้ การดำเนินการคือ "อ่าน"
CredentialClass {PrincipalClass "PrincipalName"}* ไม่
javax.security.auth.kerberos.ServicePermission

ปกป้องบริการ Kerberos และข้อมูลเข้าสู่ระบบที่จำเป็นต่อการเข้าถึงบริการเหล่านั้น
เริ่มต้น ไม่
ยอมรับ ไม่
javax.security.auth.kerberos.DelegationPermission

ใช้เพื่อจำกัดการใช้งานโมเดลการมอบสิทธิ์ของ Kerberos เช่น ส่งต่อได้และพร็อกซี ตั๋ว

ชื่อเป้าหมายของสิทธิ์นี้จะระบุคู่ของผู้ใช้หลักของบริการ Kerberos ผู้ใช้หลักของบริการย่อยที่ได้รับความไว้วางใจให้ใช้ Ticket Granting ตั๋ว (TGT) ผู้ใช้หลักของบริการรายการที่ 2 จะกำหนดบริการเป้าหมายให้กับบริการย่อย ผู้ใช้หลักของบริการคือการโต้ตอบกับในนามของ KerberosPrincipal
เริ่มต้น ไม่
ยอมรับ ไม่
javax.security.auth.AuthPermission

ปัจจุบันระบบใช้ออบเจ็กต์ AuthPermissions เพื่อป้องกันการเข้าถึง Subject SubjectDomainIncluder, LoginContext และการกำหนดค่า
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 กำหนดให้การอนุญาตของผู้โทรระบุโดยนัยว่า MBeanPermissions เหมาะสำหรับ การดำเนินการ

การทำงาน className#member[objectName]

หากคุณมี MBeanPermissions จะอนุญาตการดำเนินการได้ก็ต่อเมื่อครบทั้ง 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
ไม่