Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理 12c (12.1.2) E47994-03 |
|
前 |
次 |
認可(アクセス制御とも呼ばれる)により、認証されたクライアントがどの操作にアクセスできるかを決定できます。
この章の構成は、次のとおりです。
多くの場合、ユーザーにWebサービスへのアクセスを許可するかどうかを決定する最初の手順は認証です。ユーザーが認証されたら、2番目の手順は、ユーザーがWebサービスへのアクセスを認可されていることを検証することです。これは、認可ポリシーを使用して実行されます。binding_authorization_template
またはcomponent_authorization_template
アサーション・テンプレートを使用して、認可ポリシーを作成できます。
これらのテンプレートを使用して作成されたポリシーでは、ロール・ベースまたは権限ベースのアクセス制御(RBAC)が実行され、認証されたユーザーにWebサービスへのアクセスが許可されたいずれかのロールまたは権限が付与されていることが確認されます。
現在のリリースで使用可能な認可ポリシーのサマリーは、第3章「使用する事前定義済ポリシーの決定」の「認可ポリシー」を参照してください。第18章「事前定義済ポリシー」には、認可を実行するセキュリティ・ポリシーがまとめられ、ポリシーがトランスポート・レイヤーまたはSOAPヘッダーで実行されるかどうかが示されています。
認可の詳細は、『Oracle Web Services Managerの理解』の認可の概要に関する項を参照してください。
注意: 認可ポリシーは、サブジェクトが作成されている任意の認証ポリシーの後に続けることができます。 permitallおよびdenyallポリシーの両方を同じWebサービスにアタッチすることはできません。 |
認可ポリシーには、ポリシーで保護するリソースを指定するために使用できる次のプロパティがあります。すべての事前定義済ポリシーにすべてのプロパティを設定できるとはかぎりません。
注意: 事前定義済ポリシーは読取り専用であり、編集できません。ただし、ベースとして事前定義済ポリシーを使用して新しいポリシーを作成できます。新しいポリシーの作成の詳細は、「Webサービス・ポリシーの作成および編集」を参照してください。新しいポリシーを作成したら、必要に応じて、ポリシーの編集や設定の変更、または構成プロパティの設定が行えます。 |
制約一致 -- 認可チェックが実行される制約を表す式。制約式は、次の2つのmessageContext
プロパティを使用して指定します。
messageContext.authenticationMethod
: ユーザーの認証に使用する認証方法を決定します。有効な値は、SAML_SV
のみです。
messageContext.requestOrigin
: リクエストが内部ネットワークまたは外部ネットワークから発行されたかどうかを決定します。このプロパティは、Oracleを使用しており、Oracle HTTP Server管理者がカスタムのVIRTUAL_HOST_TYPE
ヘッダーをリクエストに追加した場合のみ有効です。リクエストへのこのヘッダーの追加の詳細は、「リクエスト元を指定するためのOracle HTTP Serverの構成」を参照してください。
次の点に注意してください。
制約一致プロパティとその値では、大文字と小文字が区別されます。
制約式では、サポートされている標準的な演算子(==
、!=
、&&
、||
、!
)を使用します。
次の例では、現在のメッセージにSAML_SVトークンが含まれない場合またはリクエスト元が内部でない場合のみ、ロールベースの認可アサーションが実行されます。
${!(messageContext.authenticationMethod =='SAML_SV'|| messageContext.requestOrigin == 'internal')}
注意: このプロパティは、 |
アクション一致 -- 権限ベースの確認が実行されるWebサービス操作。この値は、値のカンマ区切りのリストにすることもできます。このフィールドではワイルドカードを使用できます。*は、すべてのWebサービス操作を意味します。
アクション一致の有効な値は、Webサービス・メソッドで決まります。たとえば、Webサービス・メソッドがvalidate(amountAvailable)
の場合は、アクション・パターンをvalidate
と入力します。
リソース一致 -- 権限ベースの確認が実行されるリソースの名前。このフィールドではワイルドカードを使用できます。デフォルトは*で、ポリシーによって保護されるWebサービスのすべてのリソースに対応します。
表記規則により、リソース・パターンを(Webサービスの名前空間+ Webサービス名)として入力します。
たとえば、Webサービスの名前空間がhttp://project11
で、Webサービス名がCreditValidation
の場合、リソース名をhttp://project11/CreditValidation
と入力します。
特定のリソース一致を指定した場合、ポリシーは、基準と一致するWebサービスに対してのみ実行されます。つまり、特定のリソース一致フィールドの値を入力すると、認可ポリシーのスコープが制限されます。デフォルトの*により、一括アタッチされたWebサービスのすべてのリソース(Webサービスの名前空間+ Webサービス名)が保護されます。
権限クラス -- デフォルトでは、oracle.wsm.security.WSFunctionPermission
になっています。クラスは、クラスパスに存在する必要があります。
ロール -- 可能な値は、「すべてを許可」、「すべてを拒否」および「選択したロール」です。「選択したロール」を選択した場合、WebLogic Serverで定義されたエンタープライズ(グローバル)ロールのいずれかを選択する必要があります。このロールには、次のものがあります。
AdminChannelUser
Anonymous
AppTester
CrossDomainConnector
Deployer
Monitor
Operator
OracleSystemRole
概念的には、認証されたサブジェクトがWebサービス・ポリシーによって保護された特定のリソースへのアクセスを許可されるかどうかの決定には、連携して機能する2つの部分が関与します。
認可ポリシーの「アサーション」詳細ページのリソース一致およびアクション一致パラメータにより、図10-1に示すように、ポリシーで保護するリソースが決定されます。
oracle/binding_permission_authorization_policy
には、異なるアクションおよびリソースを設定するために使用可能なresourceおよびaction構成プロパティも含まれています。これらのプロパティを設定するか、オーバーライドする場合、リソース一致およびアクション一致パラメータを使用して構成するアクションおよびリソースのかわりに、新しい値がアタッチされたWebサービスで使用されます。構成オーバーライドの使用方法の詳細は、第5章「ポリシー構成プロパティのオーバーライド」を参照してください。
そのポリシーの「権限クラス」設定を変更する方法もあります。これはJAAS標準によって権限クラスを識別します。権限クラスは、アプリケーションまたはサーバーのクラスパスに存在する必要があります。
カスタムの権限クラスは、抽象的な権限
クラスを拡張し、シリアライズ可能な
インタフェースを実装する必要があります。http://docs.oracle.com/javase/7/docs/api/java/security/Permission.html
にあるJavadocを参照してください。デフォルトは、oracle.wsm.security.WSFunctionPermission
です。
OPSSアプリケーション・ポリシー・ページでは、図10-2に示すように、認証されたサブジェクトがそこにリストされている「リソース名」への起動アクセスを持つかどうかを指定します。
OPSSは、Webサービスの認可ポリシーの「アサーション」詳細ページを使用して、許可チェックが必要なリソースを決定します。認証されたサブジェクトがそのリソースに対してOPSSを介してWSFunctionPermission
(または他の権限)を付与されている場合は、そのリソースへのアクセスが許可されます。
注意: そのポリシーの構成プロパティ |
認可ポリシーの「アサーション詳細」ページで、http://project11/CreditValidation
Webサービスのvalidate
メソッドを保護するために次のものを指定しているとします。
Action Match: validate Resource Match: http://project11/CreditValidation Permission Class oracle.wsm.security.WSFunctionPermission
次に、OPSSアプリケーション・ポリシー・ページで、「リソース名」
にhttp://project11/CreditValidation#validateを使用して、認証されたサブジェクトがこのリソースを起動する権限を持つように指定します。
Permission Class: oracle.wsm.security.WSFunctionPermission Resource Name: http://project11/CreditValidation#validate Permissions Action: invoke
WSFunctionPermission
権限を、ユーザー、グループまたはアプリケーション・ロールに付与できます。WSFunctionPermission
をユーザーまたはグループに付与した場合、この権限は、ドメインにデプロイされているすべてのアプリケーションに適用されます。
注意: OPSSリソース名にオペレーション名を組み込むことができます。 |
前のリリースのFusion Middleware Controlでは、OPSSアプリケーション・ポリシー・ページの「リソース名」は、name-space-of-webservice/ServiceName
によって決められていました。たとえば、Webサービスの名前空間がhttp://project1/
で、サービス名がCreditValidation
の場合、「リソース名」はhttp://project1/CreditValidation
でした。アスタリスク(*)ワイルドカードを使用して、すべてのアクションまたはすべてのリソースに権限を与えることもできました。
このリリースでは、WSFunctionPermission
のリソース・ターゲットに実際のWebサービス・オペレーションの名前を含めるように機能強化されました。「リソース名」の構文は、name-space-of-webservice/servicename#[オペレーション名]
です。
少なくともname-space-of-webservice/service name
を含める必要があります。つまり、アスタリスク(*)ワイルドカードを使用して、すべてのアクションまたはすべてのリソースに権限を与えることはできなくなりました。
そのかわりに、単にオペレーション名を空白のままにしておくだけで、Webサービスのすべてのオペレーションを指定できます。たとえば、name-space-of-webservice/servicename#
のようにします。
Permission Action
は常にinvoke
です。
制約一致プロパティ設定には、リクエストが内部ネットワークまたは外部ネットワークから発行されたかどうかを指定するrequestOrigin
フィールドが含まれています。このプロパティは、Oracle HTTP Serverを使用しており、Oracle HTTP Server管理者がカスタムのVIRTUAL_HOST_TYPE
ヘッダーをリクエストに追加した場合のみ有効です。
リクエスト元を指定するためにOracle HTTP Serverを構成するには、管理者が次のようにhttpd.conf
ファイルを変更する必要があります。
mod_headers
モジュールがロードされていることを確認します。
RequestHeader
内でVIRTUAL_HOST_TYPE
ヘッダー名を設定します。有効な値は、internal
およびexternal
です。次のコマンド構文を使用します。
RequestHeader set|append|add|unset header [value [env=[!]variable]]
たとえば、内部リクエストの仮想ホストを構成するには、次のように指定します。
<VirtualHost *:7777> RequestHeader set VIRTUAL_HOST_TYPE "internal" </VirtualHost>
外部リクエストの仮想ホストを構成するには、次のように指定します。
<VirtualHost *:8888> RequestHeader set VIRTUAL_HOST_TYPE "external" </VirtualHost>
これらの例で、プライベート・ネットワークの外部からのすべてのリクエストは、virtual host:8888
を経由してルーティングされ、内部プライベート・ネットワークからのすべてのリクエストは、virtual host:7777
を経由してルーティングされます。
アプリケーションを外部のポートでも使用できるように、これらのポートをリスニング・ポートとしてhttpd.conf
ファイルに追加する必要もあります。
Oracle HTTP Serverを再起動します。