查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
Java 權限須知 政策規定
如果您要開發 Java 呼叫政策,必須知道這些政策用於哪些權限政策 對 Edge JVM 的影響,以及它們對程式碼的影響。例如,您的自訂 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
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 代表存取檔案或目錄。檔案權限 包含 pathname 以及與該路徑名稱有效的一組動作。 |
read | 是,但須遵守相關限制。請參閱「限制」一節。 |
write | 否 | |
execute | 否 | |
刪除 | 否 | |
readLink | 是 | |
java.io.SerializablePermission SerializablePermission 包含名稱 (也稱為「目標名稱」),但不包含 動作清單;您必須具有指定權限,或是您不具備上述權限。 |
enableSubclassImplementation | 是 |
enableSubstitution | 否 | |
java.lang.management.ManagementPermission Java 平台管理介面中定義的方法 |
控制 | 否 |
monitor | 否 | |
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。{套件名稱} | 是 | |
defineClassInPackage.{套件名稱} | 否 | |
accessDeclaredMembers | 否 | |
queuePrintJob | 否 | |
getStackTrace | 否 | |
setDefaultUncaughtExceptionHandler | 否 | |
偏好設定 | 否 | |
usePolicy | 否 | |
java.net.NetPermission NetPermission 包含名稱,但沒有動作清單;您具有指定權限 否則就沒有辦法 |
setDefaultAuthenticator | 否 |
requestPasswordAuthentication | 否 | |
specifyStreamHandler | 是 | |
setProxySelector | 否 | |
getProxySelector | 否 | |
setCookieHandler | 否 | |
getCookieHandler | 否 | |
setResponseCache | 否 | |
getResponseCache | 否 | |
getNetworkInformation | 否 | |
java.net.SocketPermission 代表透過通訊端存取網路。SocketPermission 是由主機 規格和一組「動作」並指定連線至該主機的方式 主機 = (主機名稱 | IP 位址)[:通訊埠範圍] Portrange = portnumber |-通訊埠 |通訊埠編號 [通訊埠編號] 你可以透過以下方式連線至主機: 接受 連線 聆聽 解決 「聆聽」只有在與「localhost」搭配使用時,才有意義。「解決」(已解決 主機/IP 名稱服務查詢) 執行 。 |
解析 | 是 |
連線 |
是,但須遵守相關限制。請參閱「限制」一節。 Apigee 會限制存取 sitelocal、anylocal、回送和連結本機位址, |
|
聆聽, 接受 |
否 | |
java.net.URLPermission 代表可存取指定網址定義的資源或一組資源的權限。 ,並產生一組可由使用者設定的要求方法和要求標頭。清單的名稱 權限即為網址字串。動作字串是要求方法的串連 以及標題方法和標頭名稱的範圍不受此類別限制。 |
是 | |
LinkPermission 連結建立作業的權限類別。 |
困難 | 否 |
符號化 | 否 | |
java.security.SecurityPermission SecurityPermission 包含名稱 (也稱為「目標名稱」),但未包含動作 清單;您必須具有指定權限,或是您不具備上述權限。 目標名稱是安全性設定參數的名稱 (詳情請見下文)。目前 SecurityPermission 物件用於保護政策、安全性、提供者 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」為 值無效。 要授予的動作會用字串,該字串包含 零或多個逗號分隔關鍵字。 |
read | 是 |
write | 否 | |
javax.xml.ws.WebServicePermission
|
publishEndpoint | 否 |
javax.xml.bind.JAXBPermission | setDatatypeConverter | 否 |
javax.sound.sampled.AudioPermission 存取音訊系統資源的權限。 |
播放 | 否 |
record | 否 | |
javax.security.auth.PrivateCredentialPermission 保護特定主體的私人憑證存取。主題是 一組代表的此權限的目標名稱會指定 憑證類別名稱和一組主體。這項權限的唯一有效值 動作為「讀取」 |
認證類別{PrincipalClass "PrincipalName"}* | 否 |
javax.security.auth.kerberos.ServicePermission 保護 Kerberos 服務和存取這些服務所需的憑證。 |
執行 | 否 |
接受 | 否 | |
javax.security.auth.kerberos.DelegationPermission 用於限制 Kerberos 委派模式ie、可預測與 Proxy 問題。 這項權限的目標名稱會指定一組 kerberos 服務主體。 第一個是受信任使用票證授權的從屬服務主體 票券 (TGT)。第二個服務主體會將目標服務指派從屬 服務主體會與啟動的 KerberosPrincipal 互動 |
執行 | 否 |
接受 | 否 | |
javax.security.auth.AuthPermission AuthPermission 物件目前用於保護主體存取權, 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 要求呼叫端的權限暗示適用於 作業。 動作 className#member[objectName] 如果您有 MBeanPermission 檔案,則表示只有在全部四個項目皆允許時才能進行作業 比對。 |
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
|
否 |