Liberty: Java 2 セキュリティー
WebSphere® Application Server Liberty では、Java™ 2 セキュリティー 機能がサポートされます。Java 2 セキュリティー では、特定の保護されたシステム・リソースへのアクセスを許可する前に、 アクセス権をチェックすることでシステム全体の保全性を向上させる、ポリシー・ベースの精細なアクセス制御メカニズムを提供します。
Java 2 セキュリティー は、Java Platform, Enterprise Edition のロール・ベースの許可とは別に行われます。Java 2 セキュリティー では、ファイル入出力、ソケット、プロパティーなど、システム・リソースへのアクセスを保護します。一方、Java Platform, Enterprise Edition セキュリティーでは、サーブレットや JSP ファイルなど、Web リソースへのアクセスを保護します。
デプロイヤーおよび管理者の場合の Java 2 セキュリティー
Java 2 セキュリティー を有効にする前に、 必要なアクセス権がすべてのアプリケーションに付与されていることを確認してください。そうでないとアプリケーションが実行に失敗する可能性があります。 デフォルトでは、Java Platform, Enterprise Edition 7.0 仕様によって、アクセス権がアプリケーションに付与されます。アプリケーションが Java 2 セキュリティー 用に作成されていない場合、 またはアプリケーション・プロバイダーがアプリケーションの一環として permissions.xml ファイルを提供していない場合、 Java 2 セキュリティー が有効であると、 アプリケーションで実行時に Java 2 セキュリティー アクセス制御例外が発生することがあります。 アプリケーションが実行されていても、正しく実行されない可能性があります。アプリケーション開発者の場合の Java 2 セキュリティー
アプリケーション開発者は、デフォルトの WebSphere ポリシーに付与されているアクセス権と、Java SDK API のアクセス権要件を把握する必要があります。アプリケーションで呼び出す API が、追加のアクセス権を必要とするかどうかを認識していなければなりません。 アクセス権を必要とする Java API について詳しくは、Permissions in the Java 2 SDKを参照してください。Java 2 セキュリティー の有効化
Java 2 セキュリティー 機能はカーネル拡張の一部であり、websphere.java.security プロパティーで bootstrap.properties ファイルを更新することで、ブートストラップ時に有効化されます。websphere.java.security プロパティーが bootstrap.properties ファイルで指定された場合、 Java 2 セキュリティー が適用されます。そうでない場合、アクセス権チェックは行われません。
制限アクセス権の指定
Liberty では、Web または EJB アプリケーション・コンポーネントの実行時に制限アクセス権を指定するメカニズムが用意されています。制限アクセス権では、バンドルまたはアプリケーションにそのアクセス権のインスタンスが付与されないようにします。 アプリケーションが、許可された内容を超えるアクセス権 (例えば、VM を終了するアクセス権など) を自身に付与しないようにするメカニズムが提供されます。<javaPermission className="java.security.PropertyPermission" name="os.name" actions="write" restriction="true" />
アクセス権の付与
OSGi バンドルは、permissions.perm ファイルによって、バンドル内のライブラリー/クラスに付与されるアクセス権を自己制御することができます。また、permissions.xml ファイルを通じて付与されたアクセス権、あるいは、server.xml ファイルと client.xml ファイルでアクセス権付与を指定することで付与されたアクセス権をアプリケーションが自己制御することも可能です。
OSGi バンドルのアクセス権
OSGi 仕様では、バンドルの OSGI-INF ディレクトリーの permissions.perm ファイルによって、バンドルのアクセス権を指定するメカニズムが用意されています。 このメカニズムにより、バンドルのアクセス権を精細にアクセス制御できるようになります。アプリケーションの server.xml と client.xml におけるアクセス権の宣言
server.xml ファイルと client.xml ファイルで定義され、指定されたコードベースがないアクセス権は、その Liberty サーバー上のすべてのアプリケーションに適用されます。<javaPermission className="java.util.PropertyPermission" name="*" actions="read" />
<javaPermission className="java.security.PropertyPermission" name="os.name" actions="write" restriction="true" />
- 制限アクセス権では、restriction が true に設定されます。
- 制限アクセス権として定義されたアクセス権をアプリケーションが自身に付与しようとした場合、 制限アクセス権が付与より優先され、付与は許可されません。
アプリケーションの permissions.xml におけるアクセス権の宣言
permissions.xml ファイルは、Java EE7 仕様で導入された新しいファイルです。これは、アプリケーションの META-INF ディレクトリーの下にパッケージされます。スタンドアロンの .war ファイルとしてパッケージされたアプリケーションの場合、 META-INF の WAR レベルで指定されたアクセス権は、 .war ファイル内にパッケージされたすべてのモジュールとライブラリーに適用されます。
.ear ファイルのパッケージであるアプリケーションの場合、アクセス権の宣言は、 .ear ファイル・レベルでなければなりません。 このアクセス権設定は、.ear ファイル内、またはそこに含まれるモジュール内にパッケージされたすべてのモジュールとライブラリーに適用されます。 そのようなパッケージ・モジュール内の permissions.xml ファイルは、 permissions.xml ファイルが .ear ファイル自体に指定されたかどうかに関係なく、無視されます。
.rar ファイルにパッケージされたアプリケーションの場合、アクセス権の宣言は、 META-INF の RAR レベルでなければなりません。