Java 権限ポリシーについて知っておくべきこと
Java コールアウト ポリシーを作成する際は、Edge JVM で有効となる権限ポリシーと、コードに及ぼす影響を認識しておく必要があります。たとえば、カスタム Java コードにはファイル システムへの無制限のアクセス権限がありません。ただし、ファイル システムにアクセスする場合は、ポリシー リソース ファイルなどの特定のファイルを読み込むことができます。しかし、その他のほとんどのファイル システムへのアクセスはブロックされます。このトピックでは、すべての JDK 権限タイプとそれぞれのターゲットまたはアクションを一覧にまとめ、それぞれのターゲットやアクションについて、知っておくべき権限ポリシーと例外を明記しています。
JDK の権限タイプとそれぞれの権限で許可される操作について詳しくは、Java Development Kit (JDK)の権限をご覧ください。
権限のタイプ | ターゲットまたはアクション名 | 権限の付与 |
java.awt.AWTPermission | ||
accessClipboard | なし | |
accessEventQueue | なし | |
accessSystemTray | なし | |
createRobot | なし | |
fullScreenExclusive | なし | |
listenToAllAWTEvents | なし | |
readDisplayPixels | なし | |
replaceKeyboardFocusManager | なし | |
setAppletStub | なし | |
setWindowsAlwaysOnTop | なし | |
showWindowWithoutWarningBanner | なし | |
toolkitModality | なし | |
watchMousePointer | なし | |
java.io.FilePermission java.io.FilePermission は、ファイルまたはディレクトリへのアクセス権を表します。FilePermission はパス名と、そのパス名に対して有効な一連のアクションから構成されます。 |
read | あり。ただし制限が適用されます。制限事項をご覧ください。 |
write | なし | |
execute | なし | |
delete | なし | |
readLink | あり | |
java.io.SerializablePermission SerializablePermission には名前(「ターゲット名」とも呼ばれます)のみが含まれ、アクション リストはありません。この名前付き権限が付与されるか付与されないかのいずれかを指定します。 |
enableSubclassImplementation | あり |
enableSubstitution | なし | |
java.lang.management.ManagementPermission Java プラットフォームの管理インターフェースで定義されたメソッド |
control | なし |
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. {package name} | あり | |
defineClassInPackage. {package name} | なし | |
accessDeclaredMembers | なし | |
queuePrintJob | なし | |
getStackTrace | なし | |
setDefaultUncaughtExceptionHandler | なし | |
preferences | なし | |
usePolicy | なし | |
java.net.NetPermission NetPermission には名前のみが含まれ、アクション リストはありません。この名前付き権限が付与されるか付与されないかのいずれかを指定します。 |
setDefaultAuthenticator | なし |
requestPasswordAuthentication | なし | |
specifyStreamHandler | あり | |
setProxySelector | なし | |
getProxySelector | なし | |
setCookieHandler | なし | |
getCookieHandler | なし | |
setResponseCache | なし | |
getResponseCache | なし | |
getNetworkInformation | なし | |
java.net.SocketPermission ソケットを通したネットワークへのアクセスを表します。SocketPermission は、ホスト仕様と、そのホストに接続する方法を指定する「アクション」のセットで構成されます。 host = (ホスト名 | IP アドレス)[:portrange] portrange = ポート番号 | - ポート番号 | ポート番号 - [ポート番号] ホストに接続する方法は次のとおりです。 accept connect listen resolve 「listen」アクションは、「localhost」とともに使用する場合にのみ有効です。「resolve」(ホスト / IP ネームサービス ルックアップを解決)アクションは、他のアクションが存在しているときに使用します。 |
resolve | あり |
connect |
あり。ただし制限が適用されます。制限事項をご覧ください。 Apigee では sitelocal、anylocal、loopback、linklocal の各アドレスへのアクセスが制限されます。 |
|
listen, accept |
なし | |
java.net.URLPermission 指定の URL により定義された単一リソースまたは複数リソースのセット、およびユーザーが設定可能な指定のリクエスト メソッドとリクエスト ヘッダーのセットにアクセスする権限を表します。権限の名前は URL 文字列です。アクション文字列は、リクエストのメソッドとヘッダーを連結したものです。メソッド名とヘッダー名の範囲は、このクラスによる制限を受けません。 |
あり | |
LinkPermission リンク作成オペレーションの権限クラスです。 |
hard | なし |
symbolic | なし | |
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 で実行しているコードがログ制御メソッドのいずれか(Logger.setLevel など)を呼び出すときに、SecurityManager は、java.util.logging.LoggingPermission を確認します。 |
control | なし |
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 オーディオ システム リソースに対するアクセス権。 |
play | なし |
record | なし | |
javax.security.auth.PrivateCredentialPermission 特定の Subject に属するプライベート Credentials へのアクセスを保護します。Subject は、Principals のセットで表されます。この権限のターゲット名によって、Credentials のクラス名、Principals のセットが指定されます。この権限のアクションとして唯一有効な値は、「read」です。 |
CredentialClass {PrincipalClass "PrincipalName"}* | なし |
javax.security.auth.kerberos.ServicePermission Kerberos のサービスとそのサービスにアクセスするために必要な認証情報を保護します。 |
initiate | なし |
accept | なし | |
javax.security.auth.kerberos.DelegationPermission Kerberos 委譲モデル(転送とプロキシが可能なチケット)の使用を制限します。 この権限のターゲット名は、kerberos のサービス プリンシパルのペアを指定します。1 つ目のサービス プリンシパルは、Ticket Granting Ticket (TGT)の使用を委ねられている下位サービスのプリンシパルです。2 つ目のサービス プリンシパルには、その下位サービス プリンシパルが開始側 KerberosPrincipal の代わりにやり取りするターゲット サービスを指定します。 |
initiate | なし |
accept | なし | |
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 がある場合は、4 つの項目すべてが一致する場合のみ操作が可能になります。 |
addNotificationListener | なし |
getAttribute | なし | |
getClassLoader | なし | |
getClassLoaderFor | なし | |
getClassLoaderRepository | なし | |
getDomains | なし | |
getMBeanInfo | なし | |
getObjectInstance | なし | |
instantiate | なし | |
invoke | なし | |
isInstanceOf | なし | |
queryMBeans | なし | |
queryNames | なし | |
registerMBean | なし | |
removeNotificationListener | なし | |
setAttribute | なし | |
unregisterMBean | なし | |
javax.management.MBeanServerPermission |
createMBeanServer | なし |
findMBeanServer | なし | |
newMBeanServer | なし | |
releaseMBeanServer | なし | |
javax.management.MBeanTrustPermission この権限は、署名者またはコードベース内の「信頼」を表します。 |
register | なし |
* | なし | |
javax.management.remote.SubjectDelegationPermission
|
なし |