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.langRuntimePermission

名前(「ターゲット名」とも呼びます)を含みますが、アクション リストを含みません。名前付き権限があるかないかのどちらかになります。
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 = (hostname | IPaddress)[:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]

以下は、ホストに接続するための考えられる方法です

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)などの 1 つを呼び出したとき、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 は、プリンシパルのセットで表されます。この権限のターゲット名は、Credential クラス名と、プリンシパルのセットを指定します。この権限のアクションに唯一有効な値は、「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 があることが必要になります。

アクション 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
なし