Java 権限リファレンス

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
なし