WebLogic リソースのセキュリティ
この章では、セキュリティ ポリシーの特長と機能について説明します。
セキュリティ ポリシーは、権限のないアクセスから WebLogic リソースを保護するための、WebLogic リソースと 1 つまたは複数のユーザ、グループ、セキュリティ ロールとの関連付けです。
注意 :セキュリティ ポリシーは、以前のリリースの WebLogic Server で WebLogic リソースを保護するために使用していたアクセス制御リスト (ACL) とパーミッションに代わるものです。
セキュリティ ポリシーは常に WebLogic リソースを対象としますが、WebLogic リソースは階層化されているので、自由なレベルで定義できます。たとえば、エンタープライズ アプリケーション (EAR) 全体、複数の EJB を含む EJB (エンタープライズ JavaBean) JAR、その JAR 内の特定の EJB、その EJB 内の単一のメソッドなどに対してセキュリティ ポリシーを定義できます。
あるタイプの WebLogic リソース (EJB リソースなど) に対してセキュリティ ポリシーを作成すると、その WebLogic リソースのすべての新しいインスタンスはそのセキュリティ ポリシーを継承します。(WebLogic リソースのタイプの詳細については、「WebLogic リソースのタイプ」を参照してください)。 このようにセキュリティ ポリシーを継承すると、複数の WebLogic リソースを効率的に保護できます。WebLogic Server は、デフォルト セキュリティ ポリシーで各 WebLogic リソース タイプを保護しています。デフォルト セキュリティ ポリシーは、その WebLogic リソースのすべてのインスタンスによって継承されます。詳細については、「デフォルト セキュリティ ポリシー」を参照してください。
WebLogic リソースの特定のインスタンスに対して作成されたセキュリティ ポリシーは、その WebLogic リソース タイプに割り当てられているセキュリティ ポリシーをオーバーライドします。つまり、特定の EJB に対してセキュリティ ポリシーを作成すると、このセキュリティ ポリシーが使用され、EJB リソース タイプに対して作成したセキュリティ ポリシーは使用されません。
セキュリティ ポリシーは、デフォルト (アクティブな) セキュリティ レルムにコンフィグレーションされている認可プロバイダのセキュリティ プロバイダ データベースに格納されます。デフォルトでは、WebLogic 認可プロバイダがコンフィグレーションされ、セキュリティ ポリシーは組み込み LDAP サーバに格納されます。
ユーザまたはグループを使用してセキュリティ ポリシーを作成する場合、そのユーザまたはグループは、デフォルト セキュリティ レルムのコンフィグレーション済み認証プロバイダのセキュリティ プロバイダ データベースで定義されている必要があります。セキュリティ ロールを使用してセキュリティ ポリシーを作成する場合、そのセキュリティ ロール (グローバルまたはスコープ) は、デフォルト セキュリティ レルムのコンフィグレーション済みロール マッピング プロバイダのセキュリティ プロバイダ データベースで定義されている必要があります。デフォルトでは、WebLogic 認証プロバイダと WebLogic ロール マッピング プロバイダがコンフィグレーションされており、これらのセキュリティ プロバイダのデータベース (および組み込み LDAP サーバ) にはデフォルト グループとデフォルト グローバル ロールが格納されています。
注意 :WebLogic 認証、認可、およびロール マッピング プロバイダの詳細については、『WebLogic Security の紹介』の「WebLogic セキュリティ プロバイダ」を参照してください。
WebLogic Server では、表 5-1 に示すセキュリティ ポリシーがデフォルトで定義されています。これらのセキュリティ ポリシーは「WebLogic リソースのタイプ」で説明する WebLogic リソースの各タイプごとに定義されており、デフォルト グローバル ロールとデフォルト グループに基づいています。
警告 :管理リソースとサーバ リソースのデフォルト セキュリティ ポリシーを変更して、それらの制約をさらに厳しくしないでください。既存のセキュリティ ロールの一部を削除すると、WebLogic Server の動作に悪影響を与えることがあります。ただし、必要に応じて、デフォルト セキュリティ ポリシーにより多くを含めることはできます (たとえば、新しいセキュリティ ロールを追加するなど)。
表 5-1 に示した WebLogic リソースの詳細については、「WebLogic リソースのタイプ」を参照してください。
デフォルト セキュリティ ポリシーに加えて、独自のセキュリティ ポリシーを作成することもできます。詳細については、「セキュリティ ポリシーの操作」を参照してください。
WebLogic Server Administration Console、weblogic.Admin
コマンド、および MBean API は、表 4-1 と 表 4-6 で説明されているデフォルト グローバル ロールとデフォルト グループに基づくデフォルト セキュリティ ポリシーを使用して保護されます。したがって、Administration Console を使用するためには、ユーザはデフォルト グループのいずれかに属しているか、グローバル ロールが付与されていなければなりません。また、MBean との対話を必要とする管理操作は、「MBean の保護」で説明されている MBean の保護を使用して保護されます。したがって、以下の保護されているパブリック インタフェースとの対話では、通常、両方のセキュリティ方式を満たしている必要があります。
このパブリック インタフェースの使用方法については、Administration Console オンライン ヘルプを参照してください。
weblogic.management.NoAccessRuntimeException
が送出されます。この例外は、開発者がプログラムで明示的に捕捉できます。この例外はサーバによってそのログ ファイルに送信されますが、標準出力に例外を送信するよう、サーバをコンフィグレーションすることもできます。 このパブリック インタフェースの使い方については、「保護された MBean の属性と操作」および『WebLogic Server コマンド リファレンス』の「weblogic.Admin コマンドライン リファレンス」を参照してください。
注意 :weblogic.Admin
コマンドは、MBean API (後述) との対話を抽象化する便利なユーティリティです。したがって、weblogic.Admin
コマンドを使用して実行できる管理タスクは、MBean API を使用して実行することもできます。
weblogic.management.NoAccessRuntimeException
が送出されます。この例外は、開発者がプログラムで明示的に捕捉できます。この例外はサーバによってそのログ ファイルに送信されますが、標準出力に例外を送信するよう、サーバをコンフィグレーションすることもできます。 この API の使い方については、「保護された MBean の属性と操作」および『WebLogic JMX Service プログラマーズ ガイド』を参照してください。
ポリシー条件とは、セキュリティ ポリシーを作成する際の条件です。このリリースの WebLogic Server で使用できるポリシー条件は以下のとおりです。
[呼び出し側のユーザ名は]
- ユーザ名に基づいてセキュリティ ポリシーの条件を作成します。たとえば、ユーザ John
だけが Deposit
EJB にアクセスできるという条件を作成できます。[呼び出し側をメンバーとするグループは]
- グループに基づいてセキュリティ ポリシーの条件を作成します。グループを使用してセキュリティ ポリシーを作成すると、セキュリティ ポリシーはそのグループのすべてのメンバーに割り当てられます。たとえば、グループ FullTimeBankEmployees
に属するユーザのみが Deposit
EJB にアクセスできるという条件を作成できます。[呼び出し側に許可するロールは]
- セキュリティ ロールに基づいてセキュリティ ポリシーの条件を作成します。たとえば、BankTeller
セキュリティ ロールのユーザまたはグループだけが Deposit
EJB にアクセスできるという条件を作成できます。[アクセス可能な時間帯は]
- 指定した時間に基づいてセキュリティ ポリシーの条件を作成します。たとえば、BankTeller
セキュリティ ロールは銀行の営業時間中にだけ Deposit
EJB にアクセスできるというセキュリティ ポリシーを作成できます。[サーバは開発モード]
- サーバが開発モードで実行されているかどうかに基づいてセキュリティ ポリシーの条件を作成します。[要素に必要な署名は]
- Web サービス操作を呼び出す SOAP リクエスト メッセージ内の要素を誰がデジタル署名したかに基づいてセキュリティ ポリシーの条件を作成します。たとえば、getBalance
操作を、受信 SOAP リクエストの AccountNumber
要素が BankTeller
セキュリティ ロールによってデジタル署名された場合にのみ呼び出すことができるという条件を作成できます。 これらのポリシー条件に対して特定の情報 (実際のユーザ名、グループ名、セキュリティ ロール名、開始/終了時間など) を指定したものは式と呼ばれます。WebLogic Server Administration Console に表示される式の例を 図 5-1 に示します。
この式の例では、1 行目がポリシー条件、2 行目が条件に対して指定した特定の情報 (この場合は、FullTimeBankEmployees
というグループ) です。
ポリシー文は、誰に WebLogic リソースへのアクセス権が付与されるかを定義する式の集合です。したがって、作成するセキュリティ ポリシーの主要部分となります。複数の式を使用できるため、企業のセキュリティ要件に合わせて複雑なセキュリティ ポリシーを作成できます。式の間の and
と or
の使い方、および式の順序も重要な機能です。
and
は、セキュリティ ポリシーが適用されるにはすべての式が true である必要があることを指定するために使用します。or
は、セキュリティ ポリシーが適用されるには少なくとも 1 つの式が true である必要があることを指定するために使用します。注意 :セキュリティ ポリシーが適用されるには、ポリシー文全体が true である必要があります。ポリシー文の中では、制約が厳しい式ほど後に指定します。
WebLogic Server Administration Console に表示されるポリシー文の例を 図 5-2 に示します。
このポリシー文の例には 2 つの式があります。1 行目と 2 行目は [呼び出し側に許可するロールは
] ポリシー条件に基づく式、3 行目と 4 行目は [アクセス可能な時間帯は
] ポリシー条件に基づく別の式です。
以下の節では、さまざまなタイプの WebLogic リソースを対象とするセキュリティ ポリシーを操作する手順について説明します。
セキュリティ ポリシーを操作する手順は、WebLogic リソースごとに若干異なります。必ず、この手順に記述されている、操作対象の WebLogic リソースのタイプに固有の手順に従ってください。詳細については、「WebLogic リソースのタイプ」を参照してください。
注意 :WebLogic Server のこのバージョンでは、作成したセキュリティ ポリシーを常に追跡する必要があります。現在のところ、URL (Web) リソースに作成したセキュリティ ポリシーを除き、WebLogic Server Administration Console で作成済みのセキュリティ ポリシーのリストを表示するメカニズムはありません。
適切な節の手順に従って、WebLogic リソースのタイプを選択してください。
WebLogic Server Administration Console の左ペインで WebLogic Server ドメインの名前 (examples
など) を右クリックして、[セキュリティ ポリシーを定義...] を選択します。ポリシー エディタ ページが表示されます (図 5-3 ポリシー エディタ ページを参照)。
注意 :このバージョンの WebLogic Server では、unlockuser
メソッドのみを保護できます。ユーザ ロックアウトの詳細については、『WebLogic Security の管理』の「ユーザ アカウントの保護」を参照してください。
選択した管理リソースが、管理リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロール : Admin
] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
アプリケーション リソースに対するデフォルトのポリシー文はありません。詳細については、「デフォルト セキュリティ ポリシー」を参照してください。
EJB クラスのパッケージ (ejb20.basic.beanManaged.*
など) が COM クライアントによってアクセスされる場合は、次の手順を行います。
[全般] タブの [COM クラス] フィールドに、セキュリティ ポリシーを作成するパッケージの名前が表示されます。
[COM クラス] フィールドの値は、jCOM ブリッジを介して COM にエクスポーズされる Java クラスまたはパッケージ名です。
注意 :COM クライアントによってアクセスされる EJB クラスのパッケージに対してセキュリティ ポリシーを作成し、[呼び出し側に許可するロール
] 条件でスコープ ロールを使用する場合は、EJB クラスのパッケージに関連付けたスコープ ロールを使用するようにしてください (「COM リソース」を参照)。
Java クラスのパッケージ (java.util.*
など) または個々のクラス (java.util.Collection
など) が COM クライアントによってアクセスされる場合は、次の手順を行います。
[COM クラス] フィールドに入力する値は、jCOM ブリッジを介して COM にエクスポーズされる Java クラスまたはパッケージ名です。
COM リソースに対するデフォルトのポリシー文はありません。詳細については、「デフォルト セキュリティ ポリシー」を参照してください。
すべてのコネクタを対象とするセキュリティ ポリシーを作成する場合は、ナビゲーション ツリーで [コネクタ モジュール] を右クリックします。特定のコネクタを対象とするセキュリティ ポリシーを作成する場合は、[コネクタ モジュール] を展開し、そのコネクタの名前を右クリックします。図 5-4 に、例として basic-connector
コネクタを使用して、クリックする場所を示します。
図 5-4 Administration Console ナビゲーション ツリーの [デプロイメント] の部分
選択した EIS リソースが、EIS リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロールは : Everyone] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
注意 : この手順は、メッセージ駆動型 Bean (MDB) にも適用できます。
すべての EJB JAR を対象に 1 つのセキュリティ ポリシーを作成する場合は、ナビゲーション ツリーで [EJB モジュール] を右クリックします。特定の EJB JAR、JAR 内の EJB、または JAR 内のいずれかの EJB のメソッドを対象とするセキュリティ ポリシーを作成するには、[EJB モジュール] を展開し、その EJB JAR の名前を右クリックします。 図 5-5 に、例として basic-ejbapp
JAR を使用して、クリックする場所を示します。
図 5-5 Administration Console ナビゲーション ツリーの [デプロイメント] の部分
選択した EJB リソースが、EJB リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロールは : Everyone] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
すべての接続プールを対象に 1 つのセキュリティ ポリシーを作成する場合は、ナビゲーション ツリーで [接続プール] を右クリックします。特定の接続プールを対象とするセキュリティ ポリシーを作成する場合は、[接続プール] を展開し、その接続プールの名前を右クリックします。個々のマルチプールに対してセキュリティ ポリシーを作成する場合は、[マルチプール] を展開し、そのマルチプールの名前を右クリックします。
注意 :すべてのマルチプールを 1 つのセキュリティ ポリシーで保護することはできません。
セキュリティ ポリシーを使用して、マルチプール内の接続プールへのアクセスを制御している場合は、アクセス チェックが JDBC リソース階層の両方のレベルで行われます (まずマルチプール レベルで行われ、次に個々の接続プール レベルで行われます)。すべてのタイプの WebLogic リソースと同じように、こうした二重チェックを行うことで、セキュリティ ポリシーによる最も厳しいアクセス制御を確実に行うことができます。
図 5-10 に、例としてさまざまな接続プールおよびマルチプールを使用して、クリックする場所を示します。
図 5-6 Administration Console ナビゲーション ツリーの [サービス] の部分
選択した JDBC リソースが、JDBC リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロールは : Everyone] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
すべての JMS コンポーネントを対象とするセキュリティ ポリシーを作成する場合は、ナビゲーション ツリーで [JMS] を右クリックします。JMS サーバの特定の送り先 (JMS キューまたは JMS トピック) を対象とするセキュリティ ポリシーを作成する場合は、[サーバ|(JMS サーバ)|送り先] ノードを展開し、その送り先の名前を右クリックします。図 5-7 に、例として examplesJMSServer
のさまざまな送り先を使用して、クリックする場所を示します。
図 5-7 Administration Console ナビゲーション ツリーの [サービス] の部分
選択した JMS リソースが、JMS リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロールは : Everyone] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
オブジェクトのグループを対象とするセキュリティ ポリシーを作成するには、ナビゲーション ツリーでそのオブジェクト タイプを表すノードを右クリックします。特定のオブジェクトを対象とするセキュリティ ポリシーを作成するには、そのオブジェクトを表すノードを展開し、オブジェクトの名前を右クリックします。図 5-8 に、例として examplesServer
JNDI ツリーを使用して、クリックする場所を示します。
図 5-8 examplesServer JNDI ツリーの新しい Administration Console ウィンドウ
選択した JNDI リソースが、JNDI リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロールは : Everyone] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
すべてのサーバを対象とするセキュリティ ポリシーを作成する場合は、ナビゲーション ツリーで [サーバ] を右クリックします。特定のサーバを対象とするセキュリティ ポリシーを作成する場合は、[サーバ] を展開し、そのサーバの名前を右クリックします。図 5-9 に、例として examplesServer
を使用して、クリックする場所を示します。
図 5-9 Administration Console ナビゲーション ツリーの [サーバ] の部分
選択したサーバ リソースが、サーバ リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロールは : Admin] または [呼び出し側に許可するロールは : Operator] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
すべての Web アプリケーション (WAR) を対象とするセキュリティ ポリシーを作成する場合は、ナビゲーション ツリーで [Web アプリケーション モジュール] を右クリックします。特定の WAR または WAR 内のコンポーネント (特定のサーブレット、JSP など) を対象とするセキュリティ ポリシーを作成するには、[Web アプリケーション モジュール] を展開し、その Web アプリケーション (WAR) の名前を右クリックします。図 5-10 に、例として basic-webapp
WAR を使用して、クリックする場所を示します。
図 5-10 Administration Console ナビゲーション ツリーの [デプロイメント] の部分
選択した URL リソースが、URL リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロールは : Everyone] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
Web サービス全体のセキュリティ ポリシーを作成する場合は、[セキュリティ ポリシーを定義...] を選択して、ポリシー エディタ ページを表示します (図 5-3 ポリシー エディタ ページを参照)。
選択した Web サービス リソースが、Web サービス リソース タイプに関連付けられたデフォルト セキュリティ ポリシーから継承している [呼び出し側に許可するロールは : Everyone] ポリシー文に注意してください。「手順 2 : ポリシー条件の作成」に進むと、このデフォルト セキュリティ ポリシーをオーバーライドすることになります。詳細については、「デフォルト セキュリティ ポリシー」および「セキュリティ ポリシーの粒度と継承」を参照してください。
可能な場合は、[呼び出し側に許可するロールは] 条件を使用して式を作成することをお勧めします。セキュリティ ロールに基づいて式を作成すると、複数のユーザまたはグループを考慮した 1 つのセキュリティ ポリシーを作成できます。管理の方法としてはこちらの方が効率的です。
図 5-11 [呼び出し側に許可するロールは] 条件のカスタマイズされたウィンドウ
注意 :手順 1 で [サーバは開発モード] 条件を選択した場合は、カスタマイズされたウィンドウは表示されません。その代わりに、[ポリシー文] リスト ボックスに式が表示されます。その場合は、手順 5 に進んでください。
アクセス可能な時間帯は
] 条件を選択した場合は、[時間制約] ウィンドウを使用して開始時刻と終了時刻を選択し、[OK] をクリックします。ウィンドウが閉じて、[ポリシー文] リスト ボックスに式が表示されます。(例については、図 5-12 を参照)。警告 :Web サービスの web-services.xml
デプロイメント記述子で、デジタル署名されるようにコンフィグレーションされている要素のみを指定できます。詳細については、『WebLogic Web サービス プログラマーズ ガイド』の「セキュリティのコンフィグレーション」を参照してください。
[上へ移動] および [下へ移動] をクリックすると、強調表示されたユーザ名またはグループ名の順序を、評価される順序に変更できます。[変更] をクリックすると、式の間にある強調表示された and
文と or
文が切り替わります。[削除] をクリックすると、強調表示されたユーザ名またはグループ名が削除されます。
and
文と or
文が切り替わります。注意 :ポリシー エディタ ページの最下部にある [リセット] をクリックして、ページを元の状態に戻すこともできます (つまり、変更を取り消すということ)。
WebLogic リソースのセキュリティ ポリシーを変更するには、次の手順に従います。
WebLogic リソースのセキュリティ ポリシーを削除するには、次の手順に従います。