Java 権限リファレンス

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

Java 権限ポリシーについて知っておくべきこと

Java コールアウト ポリシーを作成する際は、Apigee JVM で有効となる権限ポリシーと、コードに及ぼす影響を認識しておく必要があります。たとえば、カスタム Java コードにはファイル システムへの無制限のアクセス権限がありません。ただし、ファイル システムにアクセスする場合は、ポリシー リソース ファイルなどの特定のファイルを読み込むことができます。しかし、その他のほとんどのファイル システムへのアクセスはブロックされます。このトピックでは、すべての JDK 権限タイプとそれぞれのターゲットまたはアクションを一覧にまとめ、それぞれのターゲットやアクションについて、知っておくべき権限ポリシーと例外を明記しています。

JDK の権限の種類と各権限で可能な操作の詳細については、Java 開発キット(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}なし
SQLPermissionsetLogなし
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.JAXBPermissionsetDatatypeConverterなし
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
なし