intra-mart Accel Platform 認可仕様書 第13版 2020-04-01

認可のキャッシュ設定

認可機能は頻繁に使用されるため、キャッシュを使用して処理を高速化しています。ここでは、認可機能で使用しているキャッシュの箇所と、キャッシュするオブジェクトの単位、キャッシュサイズの計算式についての情報を記載しています。

インストールするアプリケーションとサーバ環境に応じて、キャッシュを設定してください。

キャッシュの概要

intra-mart Accel Platform の機能のうち、頻繁に利用される機能のひとつに認可があります。認可は画面やデータ、各サービスにおける権限チェックを統括して行うため、あらゆる機能から使用される機能です。

例えば、intra-mart Accel Platform にログインした後に表示されるグローバルナビや、各機能へのリンクを表示するサイトマップでは、アクセス権限のあるリンクのみを表示しているため、各リンクごとに認可の判断処理が行われます。メニューを例として、認可が行われるまでの処理の流れは下図の通りです。

../../_images/im_ehcache_overview.png

このように、認可の判断結果が確定するまでには多くの処理があり、各処理においてファイルやデータベースへのアクセスが発生します。そこで認可機能では、各処理のうちデータの更新頻度が低く、参照頻度が高いものについて、キャッシュを利用して高速化しています。

これらの処理を高速化するために、以下についてキャッシュしています。

※ メニュー側のキャッシュですが、便宜上この資料で説明します。

キャッシュされるデータのサイズは、認可に登録されているリソースグループの数や、サブジェクトグループの数に比例します。ユーザモジュールを追加でインストールしたり、取り扱う認可リソース数やサブジェクトグループの数が想定数より多くなったりする場合は、キャッシュサイズを見直してください。

キャッシュのサイズは intra-mart Accel Platform と代表的なアプリケーションをインストールした環境のためにサイジングした値をデフォルト値として設定しています。デフォルト値の説明については各キャッシュの計算式を参照してください。

コラム

設定可能な値については「設定ファイルリファレンス キャッシュ設定」を参照してください。

コラム

キャッシュするオブジェクトの上限値に関して、以下の設定方法があります。
運用環境に応じて、どちらの設定を採用するか決めてください。
  • オブジェクトを格納する際の最大サイズ(max-bytes-XXXX)
  • キャッシュするオブジェクトの最大数(max-elements-on-XXXX)

ルーティング設定のキャッシュ

キャッシュ内容

メニューアイテムに登録されている「URL+引数」を「リソースURI」「アクション」に変換するマッピングをキャッシュします。
このキャッシュは、概要図の 1 の部分に該当します。
キャッシュサイズは、「認可リソースマッピング情報キャッシュ設定 (im-ehcache-config/authz-mapped-entry-url.xml)」で設定されています。

コラム

このキャッシュは intra-mart Accel Platform 2013 Spring(Climbing) 以降で利用可能です。

キャッシュするオブジェクトの単位

ルーティング設定は、メニューアイテム単位でキャッシュされます。
そのため、キャッシュするオブジェクト数は、登録されているメニューアイテムの数によって見積もります。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = ( (1) + (2) ) × (3)

(1) … 各メニューアイテムに設定されている内容のサイズ (平均 50byte)
(1) = (1a) + (1b) × (1c)
(1a) … URLのバイト数
(1b) … 引数(キー+値) のバイト数
(1c) … 引数の数
(2) … リソースグループIDとアクションを格納したモデルのサイズ (平均 180byte)
(2) = (2a) + (2b)
(2a) … リソースグループIDのバイト数
(2b) … アクションのバイト数
(3) … 登録されているメニューアイテムの数

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

(50 + 180) × 500 = 115,000 (約 115KB)
⇒ 128KB

リソースグループ設定のキャッシュ

キャッシュ内容

「リソースURI」を「認可リソースグループ」に変換するマッピングをキャッシュします。
このキャッシュは、概要図の 2 の部分に該当します。
デフォルト状態でキャッシュ対象となっているリソースタイプは以下の通りです。
キャッシュ設定ファイル(%CONTEXT_PATH%/WEB-INF/conf/ からの相対パス)、および、導入バージョンもあわせて記載します。
リソースタイプ(リソースタイプID) キャッシュ設定ファイル 導入バージョン
画面・処理(service) im-ehcache-config/authz-resourcetype-service.xml 2013 Spring(Climbing)
会社一覧(im_master) im-ehcache-config/authz-resourcetype-im_master.xml 2015 Winter(Lydia)
IMBox(imbox-auth) im-ehcache-config/authz-resourcetype-imbox.xml 2013 Autumn(Eden)

コラム

このキャッシュは intra-mart Accel Platform 2013 Spring(Climbing) 以降で利用可能です。

キャッシュするオブジェクトの単位

リソースグループ設定は、リソースURI 単位でキャッシュされます。
キャッシュするオブジェクト数は、登録されているリソースURI の数によって見積もります。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = ( (1) + (2) ) × (3)

(1) … リソースURI のバイト数 (平均 44byte)
(2) … リソースグループID のバイト数 (平均 40byte)
(3) … 登録されているリソースURI の数

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

画面・処理 (service) のサイズ(画面のリソースの数を1000個と想定しています。)
(44 + 40) × 1,000 = 84,000 (約 84KB)
⇒ 128KB
会社一覧 (im_master) のサイズ(IM-共通マスタの会社数を100個と想定しています。)
(44 + 40) × 100 = 8,400 (約 8.4KB)
⇒ 16KB
IMBox(imbox-auth) のサイズ(IMBox実行権限の数。5権限で固定です。)
(44 + 40) × 5 = 420 (約 0.42KB)
⇒ 1KB

ロールサブジェクトの正引きキャッシュ

キャッシュ内容

サブジェクトIDをキーとしてロールサブジェクト情報をキャッシュします。
ロールサブジェクトIDから高速にロールサブジェクトを取得することができます。
このキャッシュは、概要図の 3 の部分に該当します。
キャッシュサイズは、「認可サブジェクト元マスタ情報キャッシュ設定 (im-ehcache-config/authz-subject-sid-im-authz.xml)」で設定されています。

コラム

このキャッシュは intra-mart Accel Platform 2015 Spring(Juno) 以降で利用可能です。

キャッシュするオブジェクトの単位

対象者条件に指定した対象者のうち、ロール1件あたり1つです。
対象者は対象者条件を作成時に指定した対象者の数だけ作成されます。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = (1) × (2)

(1) … ロールサブジェクト情報のサイズ (平均 800byte)
(2) … ロールサブジェクト数(対象者数)

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

800 × 100 = 80,000 (約 78KB)
⇒ 128KB

ロールサブジェクトの逆引きキャッシュ

キャッシュ内容

ロールIDをキーとしてロールサブジェクト情報をキャッシュします。
ロールIDから高速にロールサブジェクトを取得することができます。
このキャッシュは、概要図の 4 の部分に該当します。
キャッシュサイズは、「認可サブジェクト元マスタ情報キャッシュ設定 (im-ehcache-config/authz-subject-sid-im-authz.xml)」で設定されています。

コラム

このキャッシュは intra-mart Accel Platform 2015 Spring(Juno) 以降で利用可能です。

キャッシュするオブジェクトの単位

対象者条件に指定した対象者のうち、ロール1件あたり1つです。
対象者は対象者条件を作成時に指定した対象者の数だけ作成されます。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = (1) × (2)

(1) … ロールサブジェクト情報のサイズ (平均 800byte)
(2) … ロール数

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

800 × 100 = 80,000 (約 78KB)
⇒ 128KB

サブジェクト情報のキャッシュ

キャッシュ内容

認可の対象者に当たるサブジェクト情報をキャッシュします。
このキャッシュは、概要図の 5 の部分に該当します。
キャッシュサイズは、「認可サブジェクト情報キャッシュ設定 (im-ehcache-config/authz-subject.xml)」で設定されています。

コラム

このキャッシュは intra-mart Accel Platform 2015 Spring(Juno) 以降で利用可能です。

キャッシュするオブジェクトの単位

対象者につき1つです。
対象者は対象者条件を作成時に指定した対象者の数だけ作成されます。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = (1) × (2)

(1) … サブジェクト情報のサイズ (平均 800byte)
(2) … サブジェクト数(対象者数)

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

800 × 1000 = 800,000 (約 781KB)
⇒ 1MB

サブジェクトグループ情報一覧のキャッシュ

キャッシュ内容

認可の対象者 (サブジェクト) の集合から、条件に一致する対象者条件 (サブジェクトグループ) の集合をキャッシュします。
これにより、ログインユーザが持つサブジェクトグループ群がキャッシュされます。
このキャッシュは、概要図の 6 の部分に該当します。
キャッシュサイズは、「認可サブジェクトグループ情報キャッシュ設定 (im-ehcache-config/authz-subject-group.xml)」で設定されています。

コラム

このキャッシュは intra-mart Accel Platform 2015 Spring(Juno) 以降で利用可能です。

キャッシュするオブジェクトの単位

サブジェクトの集合ごとにキャッシュが生成されます。
ユーザがサブジェクト解決を行う際に、ユーザが持つ対象者の集合から割り出されてた対象者条件の集合情報がキャッシュされるため、おおよそ1ユーザごとにキャッシュが生成されます。
ただし、以下のように1ユーザごとに1つのキャッシュが生成されない場合もあります。
  • 異なるユーザでありながら同一の集合を持つ場合は、同じキャッシュを利用します。
  • 同じユーザであってもユーザに依存しないサブジェクト(例:IPv4 アドレスサブジェクト等)が利用される場合、状況・環境毎に対象者の集合が異なるため、複数のキャッシュが作成されます。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = ((1) × (2) + (3)) × (4)

(1) … サブジェクトグループIDのサイズ (平均200byte)
(2) … 1ユーザあたりの平均サブジェクトグループ数
(3) … 集合情報 (平均500byte)
(4) … サブジェクト集合の数(おおよそ、運用ユーザ数)

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

(200 × 20 + 500) × 2000 = 9000000 (約 8.6MB)
⇒ 9MB

リソース閉塞状態のキャッシュ

キャッシュ内容

「認可リソースグループ」1件あたりの閉塞状態をキャッシュします。
このキャッシュは、概要図の 7 の部分に該当します。
このキャッシュはすべてのリソースグループに対して行われます。
キャッシュサイズは、「認可リソース閉塞情報キャッシュ設定 (im-ehcache-config/authz-resource-block.xml)」で設定されています。

コラム

このキャッシュは intra-mart Accel Platform 2013 Summer(Damask) 以降で利用可能です。

キャッシュするオブジェクトの単位

リソース閉塞状態は、リソースグループ単位でキャッシュされます。
そのため、キャッシュするオブジェクト数は、登録されているリソースグループの数によって見積もります。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = (1) × (2)

(1) … リソースグループID、閉塞状態のセット (平均 320byte)
(2) … 登録されているリソースグループの数

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

320 × 1,000 = 320,000 (約 312.5KB)
⇒ 320KB

ポリシー設定のキャッシュ

キャッシュ内容

「認可リソースグループ」「認可サブジェクトグループ」「アクション」から取得した「ポリシー」の状態をキャッシュします。
このキャッシュは、概要図の 8 の部分に該当します。
デフォルト状態でキャッシュ対象となっているリソースタイプは以下の通りです。
導入バージョンもあわせて記載します。
リソースタイプ(リソースタイプID) 導入バージョン
画面・処理(service) 2012 Winter(Bourbon)
会社一覧(im_master) 2015 Winter(Lydia)
キャッシュサイズは、「認可ポリシー情報キャッシュ設定 (im-ehcache-config/authz-policy.xml)」で設定されています。
他のリソースタイプでキャッシュを行う場合は、別途設定が必要です。詳しくは、「設定ファイルリファレンス」の「認可ポリシーキャッシュ対象設定」を参照してください。

コラム

このキャッシュは intra-mart Accel Platform 2012 Winter(Bourbon) 以降で利用可能です。

intra-mart Accel Platform 2013 Autumn(Eden) 以降から、キャッシュするオブジェクトの単位が変更されています。
これに伴って、キャッシュサイズの計算式も変更されています。

intra-mart Accel Platform 2015 Winter(Lydia) 以降から、インストールした直後の状態で 会社一覧(im_master)もキャッシュされるよう変更されています。
これに伴って、キャッシュサイズのデフォルト値が変更されています。

intra-mart Accel Platform 2019 Spring(Violette) ( パッチ [1] 適用後)以降から、キャッシュするオブジェクトのサイズが変更されています。
これに伴って、キャッシュサイズのデフォルト値が変更されています。

キャッシュするオブジェクトの単位

intra-mart Accel Platform 2013 Autumn(Eden) より前の場合

ポリシー設定は、サブジェクトグループ単位でキャッシュされます。
キャッシュするオブジェクト数は、登録されているサブジェクトグループの数によって見積もります。


intra-mart Accel Platform 2013 Autumn(Eden) 以降の場合

ポリシー設定は、単一の「サブジェクトグループ」に対しての「リソースグループ、リソースタイプ、リソースタイプが指すアクション」毎のポリシー設定をキャッシュします。
キャッシュするオブジェクト数は、以下の計算式で求めることができます。

キャッシュするオブジェクト数 = (1) × (2) × (3) × (4)

(1) … 登録されているリソースグループの数
(2) … リソースグループがリソースとして持つリソースタイプの数
(3) … リソースタイプが定義するアクションの数
(4) … 登録されているサブジェクトグループの数

キャッシュサイズの計算式

バージョン 計算式 デフォルト値
intra-mart Accel Platform 2013 Autumn(Eden) より前 (a) 160MB
intra-mart Accel Platform 2013 Autumn(Eden) ~ 2015 Summer(Karen) (b) 180MB
intra-mart Accel Platform 2015 Winter(Lydia) ~ 2018 Winter(Urara) (b) 220MB
intra-mart Accel Platform 2019 Spring(Violette) ~ 2019 Winter(Xanadu)
(パッチ [1] 適用前)
(b) 220MB
intra-mart Accel Platform 2019 Spring(Violette) ~ 2019 Winter(Xanadu)
(パッチ [1] 適用後)
(c) 650MB
intra-mart Accel Platform 2020 Spring(Yorkshire) 以降 (c) 650MB

キャッシュが行われる対象データのおおまかなサイズは、リソースタイプ毎に以下の計算式で求めることができます。
intra-mart Accel Platform 2013 Autumn(Eden) より前の場合 … (a)

キャッシュサイズ = (1) × ((2) × (3) + (4)) × (5)

(1) … 登録されているサブジェクトグループの数
(2) … リソースグループID、リソースタイプ、アクションのセット (平均 600byte)
(3) … 登録されているリソースグループの数
(4) … (2)(3)を保持するためのマップの初期サイズ (約 2000byte)
(5) … ポリシー設定数の係数 (認可設定マトリクス全体のうち、運用中キャッシュされる割合)


intra-mart Accel Platform 2013 Autumn(Eden) 以降の場合 … (b)(c)

キャッシュサイズ = (1) × (2) × (3) × (4)

(1) … 登録されているサブジェクトグループの数
(2) … サブジェクトグループID、リソースグループID、リソースタイプ、アクションのセット
(b) 約 170byte
(c) 約 510byte
(3) … 登録されているリソースグループの数
(4) … ポリシー設定数の係数 (認可設定マトリクス全体のうち、運用中キャッシュされる割合)


デフォルト値は以下の計算をもとに設定されています。
intra-mart Accel Platform 2013 Autumn(Eden) より前の場合

ポリシー設定のサイズ
2,200 × (150 × 1,000 + 2,000) × 0.5 = 167,200,000 (約 159.5MB)
⇒ 160MB

intra-mart Accel Platform 2013 Autumn(Eden) ~ 2015 Summer(Karen) の場合

ポリシー設定のサイズ
2,200 × 170 × 1,000 × 0.5 = 187,000,000 (約 178.3MB)
⇒ 180MB

intra-mart Accel Platform 2015 Winter(Lydia) ~ 2018 Winter(Urara) の場合、および
intra-mart Accel Platform 2019 Spring(Violette) ~ 2019 Winter(Xanadu) (パッチ [1] 適用前)の場合

画面・処理 (service) のサイズ
2,200 × 170 × 1,000 × 0.5 = 187,000,000
会社一覧 (im_master) のサイズ
2,200 × 170 × 100 × 1 = 37,400,000
ポリシー設定のサイズ
187,000,000 + 37,400,000 = 224,400,000 (214MB)
⇒ 220MB

intra-mart Accel Platform 2019 Spring(Violette) ~ 2019 Winter(Xanadu) (パッチ [1] 適用後)の場合、および
intra-mart Accel Platform 2020 Spring(Yorkshire) 以降の場合

画面・処理 (service) のサイズ
2,200 × 510 × 1,000 × 0.5 = 561,000,000‬
会社一覧 (im_master) のサイズ
2,200 × 510 × 100 × 1 = 112,200,000‬
ポリシー設定のサイズ
561,000,000 + 112,200,000‬ = 673,200,000 (642MB)
⇒ 650MB

[1](1, 2, 3, 4, 5)

ポリシー設定のキャッシュサイズに影響を与えるパッチ番号は以下のとおりです。

  • im_tenant-8.0.22-PATCH_002
  • im_tenant-8.0.23-PATCH_001
  • im_tenant-8.0.24-PATCH_001

コラム

ポリシー設定数の係数について
リソースタイプ「メニュー (im-menu-group)」に対して権限が無い場合には、その配下のメニュー項目へ権限確認を行う必要が無いため、リソースタイプ「画面・処理 (service)」への認可設定がすべてキャッシュされるわけではありません。
この係数は、このようなキャッシュが利用されないポリシー設定を考慮するために導入されています。

この係数は、リソースタイプ「会社一覧 (im_master)」のように、すべてに対して権限確認を行う可能性がある場合は 1 です。