データソースのデータの表示に関するロールベースのセキュリティの構成

データソースを構成し、ユーザー・ロールに基づいてデータソースのデータを表示できるユーザーを制御することもできます。

ロールベースのセキュリティに関連するデータソースの設定は、次のとおりです。
設定 説明
securityEnabled データソースへの問合せ用のセキュリティ・フィルタを有効化するかどうか。

trueに設定すると、データソースでは、securityFiltersで構成されたフィルタが使用されます。

securityFilters データソースで使用されるセキュリティ・フィルタをすべて定義します。
注意: データソース・フィルタは、唯一サポートされているsecurityFilterのタイプです。
rolePermissionsMultiOr 複数のセキュリティ・ロールを持つユーザーの場合に、論理ORを使用して各ロールからのフィルタを1つに結合されたセキュリティ・ロール・フィルタにするかどうか。

trueに設定した場合は、論理ORが使用され、ユーザーはそのセキュリティ・ロールのフィルタの少なくとも1つに一致するデータにアクセスできます。

falseに設定した場合は(デフォルト値)、論理ANDが使用され、ユーザーはそのすべてのセキュリティ・ロールに関連付けられたフィルタすべてに一致するデータにのみアクセスできます。

論理ORが使用される場合、これは各種セキュリティ・ロールのフィルタを結合するためにのみ使用されます。各ロールのフィルタが別のロールのフィルタに結合されるまでは、論理ANDがそれぞれのフィルタで適用されます。

baseFunctionsのフィルタなど、データソース全体に適用されるその他のセキュリティ以外のフィルタにも、論理ANDが使用されます。

rolePermissions ユーザー・ロールをセキュリティ・フィルタにマップします。
それぞれのマッピングについて、形式は次のようになります。
"<role name>" : [<filter list>]
説明:
  • <role name>はユーザー・ロールの名前です。
  • <filter list>は、指定のロールに適用するフィルタ名のカンマ区切りリストです。名前はそれぞれ引用符で囲みます。たとえば、["filter1", "filter2", "filter3"]のように指定します。
inheritSecurity 子データソースについて、祖先データソースに構成されているセキュリティ・フィルタを継承するかどうか。
trueに設定すると、適用するセキュリティ・フィルタのリストに次の両方が含まれます。
  • すべての祖先データソースの全セキュリティ・フィルタ
  • 子データソースに定義されている全セキュリティ・フィルタ

セキュリティ・フィルタを備えたデータソースの例

次の例では、ロールFrench Wineを持つユーザーは、Bordeaux地域とBurgundy地域のデータのみを表示できます。一方、ロールAustrian Wineを持つユーザーは、Austria、BurgenlandおよびSteiermarkの地域のデータのみを表示できます。

rolePermissionsMultiOrがtrueに設定されているため、これらの両ロールを持つユーザーは、この5地域のレコードを表示できます。

{
 "server":"server01.lab.acme.com",
 "port":"15000",
 "dataDomainName":"acmeDB",
 "name":"European Wines",
 "description":"Sales transactions for European wines",
 "securityEnabled":"true",
 "inheritSecurity":"true",
 "securityFilters": {
    "frenchFilter": {
        "class":"com.endeca.portal.data.functions.DataSourceFilter",
        "filterString":"Region='Bordeaux' OR Region='Burgundy'"
    },
    "austrianFilter": {
        "class":"com.endeca.portal.data.functions.DataSourceFilter",
        "filterString":"Region='Austria' OR Region='Burgenland' OR Region='Steiermark'"
    }
  },
 "rolePermissionsMultiOr":"true",
 "rolePermissions": {
    "French Wine": ["frenchFilter"],
    "Austrian Wine": ["austrianFilter"]
  }
}