Oracle® Fusion Middleware Oracle Platform Security Servicesによるアプリケーションの保護 11gリリース1 (11.1.1) E64849-03 |
|
![]() 前 |
![]() 次 |
この章では、セキュリティ管理者がFusion Middleware Control、WLSTコマンドまたはOracle Entitlements Serverのいずれかを使用してポリシーを管理する方法について説明します。
これらについては次の項で説明します。
管理者はWLSTのオフライン・コマンドlistSecurityStore
を使用して、ドメイン・セキュリティ・ストアの属性の一部を確認できます。このコマンドの詳細は、「listSecurityStoreInfo」を参照してください。
ポリシー・ストアのデータにアクセスできるのは、ドメイン管理者など、適切なパーミッションを持つユーザーに限られます。
次の各項で、Fusion Middleware Control、WLSTコマンドまたはOracle Entitlements Serverを使用して管理者がポリシーを管理する方法について説明します。代表的な操作は次のとおりです。
予期しない認可の失敗を防ぎ、効果的にポリシーを管理するには、次の重要ポイントに注意してください。
重要ポイント1: ユーザーを削除する前に、ユーザーに付与されているすべてのパーミッション、アプリケーション・ロールおよびエンタープライズ・グループを取り消します。削除対象のユーザーを参照するセキュリティ・アーティファクトが残っていると、これらは中途半端に孤立した状態になり、同じ名前またはuidを持つ別のユーザーを後で作成したときに誤って継承される可能性があります。ユーザー名またはuidを変更する場合にも、同様の考え方が当てはまります。古いデータを参照するすべてのポリシー(権限付与、パーミッション、グループ)を更新して、変更後のデータでも予期したとおりに機能するようにする必要があります。 第K.5.4項「ユーザーによる予期しないパーミッションの取得」を参照してください。 |
重要ポイント2: ポリシーの適用時には、名前の大文字と小文字が区別されます。ユーザー名またはグループ名の大文字と小文字の違いによる認可エラーを防ぐ最善の方法は、アイデンティティ・ストアで指定されているとおりの文字構成による名前を使用することです。そのため、次のことをお薦めします。
|
重要ポイント3: リソース・タイプの名前、リソース、または権限には印刷可能文字のみを使用でき、先頭または末尾に空白を使用することはできません。ロール名をはじめとしたポリシーにおける文字使用に関する考慮事項は、第K.10.5項「ポリシーに使用する文字」を参照してください。 |
重要ポイント4: デフォルトでは、認可の失敗がコンソールに表示されません。認可の失敗がコンソールに送信されるようにするには、システム変数jps.auth.debugを-Djps.auth.debug=true に設定する必要があります。
特に、 |
Fusion Middleware Controlでは、次の項の説明のように、ドメインで使用しているポリシー・ストア・プロバイダのタイプに関係なく、WebLogicドメインでシステム・ポリシーおよびアプリケーション・ポリシーを管理できます。
その他のサービス・プロバイダを管理する手順は、第8.8項「Fusion Middleware Controlを使用したサービス・プロバイダの構成」を参照してください。
この項では、Fusion Middleware Controlを使用してアプリケーション・ポリシーを管理する方法について説明します。
Note1: 複数のアプリケーションがパーミッションを共有している場合、パーミッション・チェックの失敗を防ぐには、該当するパーミッション・クラスをシステム・クラスパスで指定しておく必要があります。 |
Note2: DBベース・セキュリティ・ストアおよびドメインは同じマシンに存在する必要があります。 |
Fusion Middleware Controlにログインし、「ドメイン」→「セキュリティ」→「アプリケーション・ポリシー」(アプリケーションがOracle WebLogic Serverにデプロイされている場合)、または「セル」→「セキュリティ」→「アプリケーション・ポリシー」(WebSphere Application Serverにデプロイされている場合)と移動して、「アプリケーション・ポリシー」ページを表示します(次の図にページの一部を示します)。
「ポリシー・ストア・プロバイダ」領域は読取り専用です。それを開くと、ドメインまたはセルで現在使用しているポリシー・ストア・プロバイダが表示されます。
指定したプリンシパルまたはパーミッションに一致するアプリケーションのポリシーを表示するには、「検索」領域を開き、検索対象のアプリケーション・ストライプを選択し、基準にする文字列(プリンシパル名、プリンシパル・グループまたはアプリケーション・ロール)を入力して、青いボタンをクリックします。検索の結果がページの下部の表に表示されます。
選択したアプリケーション・ストライプのアプリケーション・ポリシーを作成するには、「作成」をクリックして、「アプリケーション権限の作成」ページを表示します。ここで、作成する権限に対するプリンシパルおよびパーミッションを追加します。
パーミッションを追加するには、「権限」領域の「追加」をクリックして、「権限の追加」ダイアログ・ボックスを表示します。
そのダイアログ・ボックスの「検索」領域で、まず「権限」または「リソース・タイプ」を選択します。「権限」を選択した場合は、クラスまたはリソース名に一致するパーミッションを指定し、「権限クラス」および「リソース名」を指定します。「リソース・タイプ」を選択した場合は、タイプ名に一致するリソース・タイプを指定し、タイプを指定します。「OK」をクリックして「アプリケーション権限の作成」ページに戻ります。選択したパーミッションが、「権限」領域の表に表示されます。
プリンシパルを追加するには、「権限受領者」領域の「追加」ボタンをクリックして、「プリンシパルの追加」ダイアログ・ボックスを表示します。
そのダイアログ・ボックスの「検索」領域で、「タイプ」を選択し、プリンシパル名または表示名に一致させる文字列を入力して、青いボタンをクリックします。問合せの結果が「検索済プリンシパル」表に表示されます。その表から1つ以上の行を選択し、「OK」をクリックして「アプリケーション権限の作成」ページに戻ります。選択したプリンシパルが、「権限受領者」領域の表に表示されます。
「権限受領者」領域の表にある項目はいつでも削除できます。削除するには、項目を選択して「削除」ボタンをクリックします。同様に、この表の項目を選択して「編集」ボタンをクリックすると、その項目の内容を変更できます。
完了したら、「OK」をクリックして、「アプリケーション・ポリシー」ページに戻ります。作成したポリシーのプリンシパルとパーミッションがページの下部の表に表示されます。
既存のアプリケーション・ポリシーに基づいてアプリケーション・ポリシーを作成する手順は、次のとおりです。
表から既存のポリシーを選択します。
「類似作成」をクリックし、「アプリケーション権限の類似作成」ページを表示します。このページでは、選択したポリシーから抽出されたデータがパーミッションの表に自動的に入力されます。
前述の手順3の下位手順の説明に従い、必要に応じてこれらの値を変更し、「OK」をクリックします。
この項では、Fusion Middleware Controlを使用してアプリケーション・ロールを管理する方法について説明します。
Fusion Middleware Controlにログインし、「ドメイン」→「セキュリティ」→「アプリケーション・ロール」(アプリケーションがOracle WebLogic Serverにデプロイされている場合)、または「セル」→「セキュリティ」→「アプリケーション・ロール」(WebSphere Application Serverにデプロイされている場合)と移動して、「アプリケーション・ロール」ページを表示します(次の図にページの一部を示します)。
「ポリシー・ストア・プロバイダ」領域は読取り専用です。それを開くと、ドメインまたはセルで現在使用しているポリシー・ストア・プロバイダが表示されます。
アプリケーションのロールを表示するには、「検索」領域を開き、検索対象のアプリケーション・ストライプを選択し、ロール名に一致させるデータを入力して、青いボタンをクリックします。検索の結果がページの下部の表に表示されます。
アプリケーション・ロールを作成するには、「作成」をクリックして、「アプリケーション・ロールの作成」ページを表示します。すべての領域に一度にデータを入力する必要はないことに注意してください。たとえば、ロール名と表示名を入力してロールを作成し、データを保存しておき、そのロールに属するメンバーを後から指定できます。同様に、ロール・マッピングに対するデータを後で入力することもできます。
領域「一般」で、作成するロールの次の属性を指定します。
「ロール名」テキスト・ボックスにロールの名前を入力します。
必要に応じて、ロールに表示する名前を「表示名」テキスト・ボックスに入力します。
オプションで、「説明」テキスト・ボックスに、ロールの説明を入力します。
「メンバー」領域で、作成するロールのマップ先とするユーザーまたはグループを指定します。マップ先とする他のアプリケーション・ロールがある場合は、それを指定します。
作成するアプリケーション・ロールにアプリケーション・ロールを追加する手順は、次のとおりです。
「追加」をクリックして、「プリンシパルの追加」ダイアログを表示します。
このダイアログで、「タイプ」(アプリケーション・ロール、グループまたはユーザー)を選択し、プリンシパル名に一致させる文字列を入力して、青いボタンをクリックします。検索結果が「検索済プリンシパル」表に表示されます。その表から1つ以上のプリンシパルを選択します。
完了したら、「OK」をクリックして、「アプリケーション・ロールの作成」ページに戻ります。選択したアプリケーション・ロールが「メンバー」表に表示されます。
「メンバー」表にある項目はいつでも削除できます。削除するには、項目を選択して「削除」ボタンをクリックします。同様に、この表の項目を選択して「編集」ボタンをクリックすると、その項目の内容を変更できます。
「OK」をクリックし、ロールの作成(または更新)を完了し、「アプリケーション・ロール」ページに戻ります。作成したロールがそのページの下部の表に表示されます。
既存のアプリケーション・ロールに基づいてアプリケーション・ロールを作成する手順は、次のとおりです。
表から既存のロールを選択します。
「類似作成」をクリックし、「アプリケーション・ロールの類似作成」ページを表示します。このページでは、選択したロールから抽出されたデータが一部のデータに自動的に入力されます。
ロールおよびユーザーのリストを必要に応じて変更し、「OK」をクリックします。
ロール階層でパーミッションがどのように継承されるかを理解するには、第2.2.1項「パーミッションの継承とロールの階層」を参照してください。
この項では、Fusion Middleware Controlを使用して、Oracle WebLogic ServerドメインまたはWebSphere Application Serverセルのシステム・ポリシーを管理する方法について説明します。
次の手順では、プリンシパルのポリシーとコードベースのポリシーという2種類のシステム・ポリシーを作成できます。プリンシパルのポリシーでは、ユーザーまたはグループのリストにパーミッションを付与します。コードベースのポリシーでは、コード(通常はURLまたはJARファイル)にパーミッションを付与します。たとえば、資格証明ストア・フレームワークを使用するアプリケーションには、適切なコードベースのポリシーが必要です。コードベースURLでは、ワイルドカードやパターンはサポートされていません。
Fusion Middleware Controlにログインし、状況に応じて「ドメイン」→「セキュリティ」→「システム・ポリシー」、またはセル→「セキュリティ」→「システム・ポリシー」とナビゲートして、「システム・ポリシー」ページを表示します(次の図にページの一部を示します)。
「ポリシー・ストア・プロバイダ」領域は読取り専用です。それを開くと、ドメインまたはセルで現在使用しているポリシー・ストア・プロバイダが表示されます。
指定したタイプ、名前およびパーミッションと一致するシステム・ポリシーを表示するには、「検索」領域を開き、一致対象のデータを入力して、青いボタンをクリックします。検索の結果がページの下部の表に表示されます。
「編集」ボタンをクリックすると、選択したポリシーの特性をいつでも編集できます。リストからポリシーを削除するには、「削除」ボタンをクリックします。
システム・ポリシーを作成する手順は、次のとおりです。
「作成」をクリックして、「システム権限の作成」ページを表示します。
作成するポリシーのタイプとして、「プリンシパル」または「コードベース」を選択します。選択したタイプによってUIが多少異なります。次の手順は、「プリンシパル」を選択した場合に対するものです。
パーミッションを追加するには、「権限」領域の「追加」ボタンをクリックして、「権限の追加」ダイアログ・ボックスを表示し、作成しているポリシーに追加するパーミッションを選択します。
「検索」領域を使用して、タイプ、プリンシパル名またはパーミッション名が一致するパーミッションを問い合せます。検索結果が「検索」領域の表に表示されます。
追加するパーミッションを選択するには、表からパーミッションを選択します。パーミッションを選択すると、その詳細が読取り専用の「カスタマイズ」領域に表示されます。
「OK」をクリックして、「システム権限の作成」ページに戻ります。選択したパーミッションが、「権限」の表に追加されます。
「パーミッション」表からパーミッションを選択し、「編集」ボタンを使用すると、パーミッションの特性をいつでも変更できます。リストからパーミッションを削除するには、「削除」ボタンを使用します。
「OK」をクリックして、「システム・ポリシー」ページに戻ります。
「コードベースに関する権限」領域の表は読取り専用であり、コードベース・システム・ポリシーに関連付けられているリソース名、アクションおよびパーミッション・クラスを示します。
WLSTコマンドは、Oracle WebLogic Serverのコンテキストで起動、またはWebSphere Application ServerのコンテキストのWASAdminスクリプトとして起動できます。この項に記載されたコマンドは、WebLogic Application ServerとWebSphere Application Serverの両プラットフォームに適用されます。
オンライン・コマンドとは、実行中のサーバーとの接続が必要なコマンドです。特に指定がないかぎり、この項に記載されたスクリプトはオンライン・スクリプトで、タイプがファイル、OID、DBのいずれであるかにかかわりなくOPSSセキュリティ・ストアで動作します。動作にサーバーの実行を必要としないオフラインのスクリプトもいくつか存在します。
読取り専用スクリプトは、モニター、オペレータ、コンフィギュレータまたはAdminというWebLogicグループに属するユーザーのみが実行できます。読取り-書込みスクリプトは、AdminまたはコンフィギュレータのWebLogicグループに属するユーザーのみが実行できます。すべてのWLSTコマンドは、Oracle WebLogic Serverをインストールすれば、追加設定なしで使用できます。
WLSTコマンドは、インタラクティブ・モードでもスクリプト・モードでも実行できます。インタラクティブ・モードの場合は、コマンドライン・プロンプトにスクリプトを入力します。スクリプト・モードの場合は、スクリプトをテキスト・ファイル(ファイル名拡張子は.py)に記述して、シェル・スクリプトのディレクティブのように入力なしで実行できます。
WASAdminスクリプトは、インタラクティブ・モードでのみ実行できます。
注意: WLSTコマンドを呼び出す前は、次のスクリプトのいずれかを実行して、必要なJARがクラス・パスに追加されていることを確認する必要があります。>sh $ORACLE_HOME/common/bin/wlst.sh オンライン・コマンドを実行するには、次のようにWebLogicサーバーに接続します。 >java weblogic.WLST >connect(' |
構成ファイルおよびJVMについては、第5.6項「WLSTコマンドを使用した一般的なセキュリティ操作」を参照してください。
WebSphereでWLSTコマンドを実行する方法の詳細は、Oracle Fusion Middlewareサード・パーティ・アプリケーション・サーバー・ガイドを参照してください。
OPSSはサポートされているすべてのプラットフォームでアプリケーション・ポリシーの管理に使用できる次のスクリプトが用意されています(特に指定がないかぎりこのスクリプトはすべてオンラインです)。
listSecurityStoreInfo
listAppStripes
listCodeSourcePermissions
createAppRole
deleteAppRole
grantAppRole
revokeAppRole
listAppRoles
listAppRolesMembers
grantPermission
revokePermission
listPermission
deleteAppPolicies
createResourceType
getResourceType
deleteResourceType
createResource
deleteResource
listResources
listResourceActions
createEntitlement
getEntitlement
deleteEntitlement
addResourceToEntitlement
revokeResourceFromEntitlement
listEntitlements
grantEntitlement
revokeEntitlement
listResourceTypes
前述のスクリプトで指定するクラス名はすべて、完全修飾パス名にする必要があります。引数appStripe
は、アプリケーション・ストライプ(通常はアプリケーション名)を参照し、特定のアプリケーションに関するドメイン・ポリシーのサブセットを特定します。
認証ロール、匿名ロールおよびWLSTコマンドに関する重要な情報は、第9.6項「WLSTコマンドを使用した匿名ロールおよび認証ロールへのポリシーの付与」を参照してください。
バージョン管理しているアプリケーションのアプリケーション・ストライプの正しい使用法は、第9.7項「WLSTコマンドのバージョン付きアプリケーションのアプリケーション・ストライプ」を参照してください。
このトピックは、LDAPベースおよびDBベースのOPSSセキュリティ・ストアにのみ適用されます。ファイルベースのストアの場合、キャッシュは数秒後に更新されます(ファイルベースのストアは本番環境システムではお薦めしません。)
OPSSは、キャッシュ・セキュリティ・アーティファクトによって認可プロセスを最適化します。アプリケーション・ポリシー(またはその他のセキュリティ・アーティファクト)を変更した場合、アプリケーションおよびアーティファクトの変更に使用されたツールが実行されている場所によって変更が有効になるタイミングが異なります。
アプリケーションとツールの両方が同じホスト上および同一ドメインで実行されている場合、変更は即座に有効化されます。
同じではなく、アプリケーションとツールが別のホストまたは別のドメインで実行されている場合は、ポリシー・ストア・キャッシュのリフレッシュ後に変更が有効になります。キャッシュのリフレッシュの頻度は、プロパティoracle.security.jps.ldap.policystore.refresh.interval
の値によって決まります。デフォルト値は10分です。
ドメイン内で、WLSTコマンドまたはFusion Middleware Controlを使用して有効になった変更はすべて、最初は管理サーバーのみで考慮され、サーバーの再起動時のみにドメイン内のすべての管理対象サーバーにプッシュされます。
次の使用例は、セキュリティ・アーティファクトの変更に(別のドメインまたはホストの)Oracle Entitlements Serverを使用し、oracle.security.jps.policystore.refresh.interval
プロパティを10分に設定した場合の4つのシナリオにおける認可の動作を示しています。
この使用例では次のように想定しています。
ユーザーはエンタープライズ・ロールのメンバー
このエンタープライズ・ロールは、アプリケーション・ロールのメンバーに含まれている
このアプリケーション・ロールにはアプリケーション機能の一部を制御するパーミッションが付与されている
前述の想定に従って、次の4つのシナリオにおける認可の結果を調べます。
シナリオA
ユーザーがアプリケーションにログインします。
ユーザーがアプリケーション・ロールによって保護された機能にアクセスします。
別のホスト(またはドメイン)から、Oracle Entitlements Serverを使用してアプリケーション・ロールからエンタープライズ・ロールを削除します。
ユーザーはアプリケーションからログアウトして、ただちにログインしなおします。
ユーザーは、この時点でもアプリケーション・ロールによって保護された機能にアクセスできます。
この結果の理由は、ポリシー・キャッシュで、まだ前述のステップ3で実施された変更を反映するリフレッシュが行われていないためです。
シナリオB
ユーザーがアプリケーションにログインします。
ユーザーがアプリケーション・ロールによって保護された機能にアクセスします。
別のホスト(またはドメイン)から、Oracle Entitlements Serverを使用してアプリケーション・ロールからエンタープライズ・ロールを削除します。
ユーザーはアプリケーションからログアウトして、10分後にログインしなおします。
ユーザーは、アプリケーション・ロールによって保護された機能にアクセスできなくなっています。
この結果の理由は、ポリシー・キャッシュで、前述のステップ3で実施された変更を反映するリフレッシュが行われているためです。
シナリオC
ユーザーがアプリケーションにログインします。
ユーザーがアプリケーション・ロールによって保護された機能にアクセスします。
別のホスト(またはドメイン)から、Oracle Entitlements Serverを使用してアプリケーション・ロールからエンタープライズ・ロールを削除します。
ユーザーがログアウトしない場合、10分以内はアプリケーション・ロールによって保護された機能へのアクセスが可能な状態に保持されます。
この結果の理由は、ポリシー・キャッシュで、まだ前述のステップ3で実施された変更を反映するリフレッシュが行われていないためです。
シナリオD
ユーザーがアプリケーションにログインします。
ユーザーがアプリケーション・ロールによって保護された機能にアクセスします。
別のホスト(またはドメイン)から、Oracle Entitlements Serverを使用してアプリケーション・ロールからエンタープライズ・ロールを削除します。
ユーザーがログアウトせずに、10分より長く待ってからアプリケーション・ロールによって保護された機能へのアクセスを試行します。アクセスは拒否されます。
この結果の理由は、ポリシー・キャッシュで、前述のステップ3で実施された変更を反映するリフレッシュが行われているためです。
一部のWLSTコマンドでは、操作に使用するロールのプリンシパル名とプリンシパル・クラスを指定する必要があります。
たとえば、次の呼出しでは、アプリケーション・ストライプがmyApp
で名前がmyAppRole
であるロールにプリンシパルが追加されます。
grantAppRole.py -appStripe myApp -appRoleName myAppRole -principalClass myPrincipalClass -principalName myPrincipal
このようなスクリプトでプリンシパルが認証ロールまたは匿名ロールを参照する場合、プリンシパル名とプリンシパル・クラスは固定されており、次のペアのいずれかである必要があります。
認証ロール
名前: authenticated-role
クラス: oracle.security.jps.internal.core.principals.JpsAuthenticatedRoleImpl
匿名ロール
名前: anonymous-role
クラス: oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl
前述のプリンシパル名とクラスの指定が必要なWLSTコマンドは次のとおりです。
grantAppRole
revokeAppRole
grantPermission
revokePermission
listPermissions
一部のWLSTコマンドでは、アプリケーション・ストライプの指定が必要です。アプリケーションがバージョン付きではない場合は、アプリケーション・ストライプがデフォルトのアプリケーション名として使用されます。アプリケーションがバージョン付きの場合は、アプリケーション名とアプリケーション・ストライプが同じではなくなります。
たとえば、myApp
というバージョン付きアプリケーションのバージョン1の名前は、「Fusion Middleware Control」ページでmyApp(v1.0)
と表示されますが、このアプリケーションのアプリケーション・ストライプはmyApp#v1.0
です。
一般に、表示名がappName(vers)
のアプリケーションでは、アプリケーション・ストライプがappName#vers
になります。次の起動に示すように、WLSTコマンドでアプリケーション・ストライプとして渡す必要があるのは、この最後の文字列です。
>listAppRoles myApp#v1.0
ストライプを指定できるWLSTコマンドは次のとおりです。
createAppRole
deleteAppRole
grantAppRole
revokeAppRole
listAppRoles
listAppRoleMembers
grantPermission
revokePermission
listPermissions
deleteAppPolicies
Oracle Entitlements Serverを使用すると、Oracle Internet Directory LDAPポリシー・ストアを使用するWebLogicドメインでアプリケーション・ポリシーおよびその他のセキュリティ・アーティファクトの管理および検索を実行できます。
詳細は、Oracle Fusion Middleware Oracle Entitlements Server管理者ガイドの次のトピックを参照してください。
セキュリティ・アーティファクトの問合せ
ポリシーおよびロールの管理