コンテンツにスキップ
「プリザンター入門」発売中!

Security.json

注意事項

パラメータ変更時はパラメータ変更時の確認事項を確認してください。

制限事項

IpRestrictionExcludeMembersに設定した組織/グループについて

組織/グループ単位でプリザンターへアクセスを許可している場合、「組織管理機能」/「グループ管理機能」を使用して、該当組織/該当グループの削除/無効化/所属するユーザの削除を行うと、所属ユーザはプリザンターへアクセスできなくなります。テナント管理者等の重要な管理権限をもつユーザがプリザンターへアクセスできなくなった場合、使用機器のIPアドレス変更または「Security.json」の再設定等の作業が必要になる可能性があります。IpRestrictionExcludeMembersに設定した組織/グループの削除/無効化/所属するユーザの削除を行う際は、注意してください。

※AllowIpAddressesでIPアドレスによるアクセス制限を行っていない場合、上記制限事項への考慮は必要ありません。

設定値

本パラメータファイルの設定値は下記の通りです。

パラメータ名 設定例 説明
AllowIpAddresses [ "10.10.10.10", "10.10.10.20", "10.10.1.0/24" ] IPアドレスによりアクセスを制限する場合に利用します。許可したい接続元IPアドレスを指定します。指定方法は、IPアドレスによる表記およびCIDR表記による指定が可能です。nullの場合、IPアドレスによる制限は行いません。
IpRestrictionExcludeMembers [ "User1", "User100", "Dept1", "Group1" ] AllowIpAddressesにIPアドレスを設定した際に、併せて設定可能です。AllowIpAddressesに設定したIPアドレス以外からのアクセスであっても、本パラメータに指定した条件を満たすユーザについては、アクセスを許可します。詳細は後述の「AllowIpAddresses/IpRestrictionExcludeMembersの組み合わせ」を参照してください。
MimeTypeCheckOnApi false APIリクエストのContent-Typeを厳密に検証するか否かを設定します。

true
厳密に検証し、許可するContent-Typeを次の2種類のみに制限します。不正なリクエストに対しては400 Bad Requestを返却します。

・通常のAPI
 →application/jsonのみ
・ファイルインポートAPI
 →multipart/form-dataのみ

false(既定値)
厳密な検証を行いません。
PrivilegedUsers [ "Administrator", "AdminUser1", "AdminUser2" ] 特権ユーザのログインIDを指定します。特権ユーザは権限の無いサイトの操作を含め、すべての操作を行うことができます。複数のユーザをカンマ区切りで指定することができます。
RevealUserDisabled false ユーザが無効化されている事をログイン時にエラーとして表示する場合にはtrueを指定。
LockoutCount 10 パスワードを間違った回数が設定回数を超えた場合に自動的にアカウントをロックします。ロックされたアカウントはユーザ管理画面で解除する必要があります。0に設定した場合にはアカウントはロックされません。
PasswordExpirationPeriod 90 ローカルユーザのパスワードの有効期間を計算するための日数を指定。0に設定した場合には有効期間無し。
JoeAccountCheck true 同一のログインIDとパスワードを使用することを禁止する場合にはtrueを指定。
TokenCheck false CSRF(クロスサイトリクエストフォージェリ)対策として、セッション毎にトークンを発行しトークンがリクエストに含まれないPOST要求を不正なリクエストとして拒絶する場合はtrueを指定。フォーム機能を有効化した場合、本パラメータの設定は機能しません(ASP.NET Core標準のCSRF対策を組み込んでいるため、CSRF対策は常に動作します)。
SecureCookies false SSL/TLS通信を使用する環境でcookieにsecure属性を付与する場合はtrueを指定。
DisableMvcResponseHeader false レスポンスヘッダに "X-AspNet-Mvc-Version"ヘッダを含めないようにする場合にtrueを設定します。※.NetFramework版のみ有効
DisableDeletingSiteAuthentication false サイト削除時に認証情報(ログインID/パスワード)を入力せずに削除を許可する場合はtrueを指定。
AccessControlAllowOrigin ["*"] オリジン間リソース共有 (CORS)の許可するサイトのURLを指定。["*"]の場合には全てを許可。nullの場合にはクロスオリジンリクエストを全て拒否。
EnforcePasswordHistories 12 過去に設定されたパスワードの履歴を記録する回数を指定します。過去に使用したパスワードの再利用を禁止します。
DisableCheckPasswordPolicyIfApi false APIでユーザを作成する際にパスワードポリシーを無視する場合にはtrueを指定。LDAP認証の場合などで、作成するユーザのパスワードを指定したくない場合に利用します。
PasswordPolicies 設定方法は後述 パスワードポリシーとエラーメッセージを指定します。複数のポリシーを組み合わせて設定できます。
PasswordGenerator true ユーザ管理などのパスワード入力欄の右側にパスワード自動生成用のアイコン(鍵アイコン)を表示する場合にtrueを指定。
SecondaryAuthentication 設定方法は後述 二段階認証を行う場合はEnabledをtrueに設定します。
AspNetCoreDataProtection 設定方法は「ASP.NET Coreデータ保護キーを外部保存する」を参照 ASP.NET CoreのData Protectionのデータ保護キーの保存先を指定するパラメータです。
HttpStrictTransportSecurity 設定方法は後述 HTTP Strict Transport Security プロトコルを適用して、HTTPSでの通信を強制させます。
SecureCacheControl 設定方法は後述 レスポンスヘッダにCache-Controlヘッダを含めるよう設定します。
HealthCheck 設定方法は後述 ヘルスチェック機能を使用する場合はEnabledをtrueに設定します。
ContentSecurityPolicy 設定方法は後述 コンテンツセキュリティポリシー機能を使用する場合はEnabledをtrueに設定します。
ShowLoginPageOnAuthError true プリザンターにログインしていない状態で、プリザンターが解釈可能なURLへアクセスした場合、ログイン画面へ遷移させる場合はtrueに、404ページへ遷移させる場合はfalseに設定します。フォーム機能での使い方は「より安全に利用するための設定」を参照。
CaptchaConfig 設定方法は後述 フォーム機能で使用するCAPTCHAを構成します。
ForwardedHeaders 設定方法は後述 信頼するリバースプロキシのネットワーク・IPを指定します。信頼済みリバースプロキシ認証(Authentication.jsonのパラメータTrustedProxyParameters)と組み合わせて使用します。
ExcludeCookiePrefixes ["AWSALB", "AWSELB"] ログアウト時に削除対象外とするCookieのプレフィックスを指定します。

AllowIpAddresses/IpRestrictionExcludeMembersの組み合わせ

下記1.~3.のいずれかの組み合わせで、AllowIpAddresses/IpRestrictionExcludeMembersを設定してください。

  1. AllowIpAddresses:null / IpRestrictionExcludeMembers:null

    内容 対象のアクセス
    アクセスを許可する接続 すべてのIPアドレスからのアクセス
    アクセスを制限する接続 なし
  2. AllowIpAddresses:IPアドレスを設定 / IpRestrictionExcludeMembers:null

    内容 対象のアクセス
    アクセスを許可する接続 AllowIpAddressesに設定したIPアドレスからのアクセス
    アクセスを制限する接続 AllowIpAddressesに設定したIPアドレス以外からのアクセス
  3. AllowIpAddresses:IPアドレスを設定 / IpRestrictionExcludeMembers:後述する「IpRestrictionExcludeMembersの設定例」の通りにユーザID/組織ID/グループIDを設定

    内容 対象のアクセス
    アクセスを許可する接続 ①AllowIpAddressesに設定したIPアドレスからのアクセス
    ②AllowIpAddressesに設定したIPアドレス以外からのアクセス、かつ、後述する「IpRestrictionExcludeMembersの設定例」の形式で許可されたユーザのアクセス
    アクセスを制限する接続 AllowIpAddressesに設定したIPアドレス以外からのアクセス、かつ、後述する「IpRestrictionExcludeMembersの設定例」の形式で許可されたユーザ以外のアクセス

IpRestrictionExcludeMembersの設定例

設定例 結果
["User1"] ユーザID:1のユーザのアクセスを許可します。
["Dept1"] 組織ID:1に所属するユーザのアクセスを許可します。
["Group1"] グループID:1に所属するユーザ/「グループID:1に所属する組織」に所属するユーザのアクセスを許可します。

["User1","Dept1","Group1"]のようにカンマ区切りで複数のIDをIpRestrictionExcludeMembersに指定すると、いずれかと一致するユーザのアクセスを許可します。

PasswordPoliciesの設定

パラメータ名 設定例 説明
Enabled true このポリシーを利用するかどうかをtrue/falseで設定します。
Regex 設定方法は後述 パスワードに含む必要のある文字列を正規表現で設定します。
Languages 任意のエラーメッセージ エラーメッセージを対応する言語毎に設定します。

Regexに設定する正規表現の例

正規表現 説明
".{8,}" パスワードの長さは8文字以上必要です。
"[a-z]+" アルファベット小文字が1文字以上必要です。
"[A-Z]+" アルファベット大文字が1文字以上必要です。
"[0-9]+" 数字が1文字以上必要です。
"[^a-zA-Z0-9]+" アルファベットと数字以外の文字(記号)が1文字以上必要です。

SecondaryAuthenticationの設定

パラメータ名 設定例 説明
Enabled true このポリシーを利用するかどうかをtrue/falseで設定します。 1
Mode "None" 2段階認証機能の利用を設定します。2
NotificationType "Mail" 認証方式を設定します。"Mail"または"Totp"が設定可能です。3
CountTolerances 1 TOTP認証時、有効とする確認コードの世代数を指定します。3
NotificationMailBcc true 認証コードをSupportFromのアドレスにBCCで送付するかどうかをtrue/falseで設定します。
AuthenticationCodeCharacterType "Number" 認証コードの文字種を設定します。(Number: 数字のみ、Letter: 英字のみ、NumberAndLetter: 数字と英字)
AuthenticationCodeLength 128 文字数を設定します。
AuthenticationCodeExpirationPeriod 300 認証コードの有効時間を秒単位で設定します。

Modeの設定

設定値 説明
None 2段階認証機能を無効にします。
DefaultEnable 2段階認証機能を有効にし、既定設定として全てのユーザに対して2段階認証を有効化します。ユーザ管理から、任意のユーザに対し2段階認証を無効化する設定ができます。
DefaultDisable 2段階認証機能を有効にし、既定設定として全てのユーザに対して2段階認証を無効化します。ユーザ管理から、任意のユーザに対し2段階認証を有効化する設定ができます。

HttpStrictTransportSecurityの設定

HTTP Strict Transport Security (HSTS)について

HTTP Strict Transport Security (HSTS) は、応答ヘッダーを使って Web アプリによって指定されるオプトイン セキュリティ拡張機能です。HSTS をサポートするブラウザーがこのヘッダーを受け取ると、次のようになります。

  • ブラウザーに、HTTP 経由の通信を送信できないようにするドメインの構成が保存されます。 ブラウザーでは、すべての通信が強制的に HTTPS 経由で実行されます。
  • ブラウザーによって、ユーザーが信頼されていない証明書や無効な証明書を使えなくなります。 ユーザーがそのような証明書を一時的に信頼できるようにするプロンプトがブラウザーで無効になります。

詳細は下記ドキュメントを参照ください。
HTTP Strict Transport Security プロトコル (HSTS)|Microsoft Learn

パラメータ一覧

パラメータ名 設定例 説明
Enabled true HSTS機能を有効にします
Preload false Strict-Transport-Security ヘッダーのプリロード パラメーターを設定します。 プリロードは RFC HSTS 仕様の一部ではありませんが、Web ブラウザーでは、新規インストール時に HSTS サイトのプリロードを行うことがサポートされています。
IncludeSubDomains false includeSubDomain を有効にします。これにより、HSTS ポリシーがホスト サブドメインに適用されます。
MaxAge 30.00:00:00 Strict-Transport-Security ヘッダーの max-age パラメーターを設定します。設定しない場合、既定値は 30 日です。次のフォーマットに従って値を設定します。 "{日数}.{時間}:{分}:{秒}"
ExcludeHosts ["abc.example.com", "xyx.example.com"] 除外するホスト名を配列形式で指定します。

SecureCacheControlの設定

パラメータ名 設定例 説明
NoCache false Cache-Controlヘッダにno-cacheパラメータを付与します。
NoStore false Cache-Controlヘッダにno-storeパラメータを付与します。
Private false Cache-Controlヘッダにprivateパラメータを付与します。
MustRevalidate false Cache-Controlヘッダにmust-revalidateパラメータを付与します。
PragmaNoCache false Pragma:no-cache ヘッダをレスポンスに含めます。

※NoCache,NoStore,Private,MustRevalidateの何れかをtrueとした場合にCache-Controlヘッダがレスポンスに付加されます。

※各パラメータの詳細については下記ドキュメントを確認してください
Cache-Control|MDN
Pragma|MDN

HealthCheckの設定

パラメータ一覧

パラメータ名 設定例 説明
Enabled true ヘルスチェック機能を有効にします。
EnableDatabaseCheck true ヘルスチェック機能でデータベースの接続確認を有効にします。4
HealthQuery "select 1;" データベースの接続確認で使用するSQLを指定します。
RequireHosts ["192.168.1.100"] 指定したホストからのみヘルスチェックが行えるよう制約を適用する場合に指定します。
EnableDetailedResponse false ヘルスチェックで詳細なレスポンスを返却する場合に有効にします。
EnableDetailedResponse
パラメータ名 説明
status すべての正常性チェックの集計状態を示します。
totalDuration ヘルスチェックにかかった時間を示します。
entries 各正常性チェックの結果を示します。結果の各パラメータについては後述の entries を確認してください。
entries
パラメータ名 説明
data コンポーネントの正常性を説明する追加のキーと値のペアを示します。
description チェック対象のコンポーネントの状態を示します。
duration 正常性チェックの実行時間を示します。
exception 状態をチェックするときにスローされた例外を示します。
status チェック対象のコンポーネントの正常性状態を示します。
tags 正常性チェックに関連付けられているタグを示します。
参考情報

上記のパラメータ(プロパティ)についての詳細につきましては、Microsoft社の公式ドキュメントを確認してください。
ASP.NET Core のルーティング > RequireHost とルートが一致するホスト
HealthReport クラス (Microsoft.Extensions.Diagnostics.HealthChecks)
HealthReportEntry 構造体 (Microsoft.Extensions.Diagnostics.HealthChecks)

ContentSecurityPolicyの設定

パラメータ一覧

パラメータ名 設定例 説明
Enabled false コンテンツセキュリティポリシー機能を利用するかどうかをtrue/falseで設定します。5 7 8
ReportOnlyEnabled true コンテンツセキュリティポリシーレポートオンリー機能を利用するかどうかをtrue/falseで設定します。6 7
Values 設定方法は後述 コンテンツセキュリティポリシー機能に適用する設定を指定します。

Values

パラメータ名 設定例 説明
default-src 'self' 既定のリソースの読み込み元を指定します。
script-src 'self' 'strict-dynamic' スクリプトの読み込み元を指定します。
script-src-attr 'self' 'unsafe-inline' 属性内スクリプトの許可元を指定します。
script-src-elem - <script>要素として読み込まれるスクリプトの読み込み元を指定します。
style-src 'self' スタイルシートの読み込み元を指定します。
style-src-attr 'self' 'unsafe-inline' 属性内スタイルの許可元を指定します。
style-src-elem 'self' 'unsafe-inline' style要素の許可元を指定します。
img-src 'self' data: 画像の読み込み元を指定します。
font-src 'self' data: フォントの読み込み元を指定します。
object-src 'none' オブジェクトの読み込み元を指定します。
connect-src 'self' 外部通信先のURLを指定します。
frame-src 'none' フレームで読み込み元を指定します。
manifest-src - マニフェストファイルの読み込み元を指定します。
media-src - <audio>、<video>などメディア要素の読み込み元を指定します。
worker-src - Worker、SharedWorker、ServiceWorkerスクリプトの読み込み元を指定します。
base-uri 'self' baseタグの許可元を指定します。
form-action 'self' フォーム送信先を指定します。
frame-ancestors - <frame>、<iframe>、<object>、<embed>などのフレーム読み込み元を指定します。
report-uri /CspReport/Report 違反レポートの送信先を指定します。
report-to - 違反レポートの送信先エンドポイントを指定します。
sandbox - スクリプト禁止、フォーム送信禁止などのページ操作に適用するサンドボックス制限を指定します。
upgrade-insecure-requests false HTTPリソース要求を自動的にHTTPSに書き換えて安全にロードを行うかを指定します。

各パラメータの設定値についてはMDN Web Docs: Content Security Policy (CSP) を参照してください。
パラメータの設定値を変更した場合はReportOnlyEnabledをtrueに設定した状態でプリザンターの動作に影響がないことを確認してください。

CaptchaConfigの設定

パラメータ名 設定例 説明
Type None 使用するCAPTCHAサービス名を設定します。設定手順は「フォーム:操作:reCAPTCHAの設定」を参照してください。
SiteKey - CAPTCHAサービスプロバイダが発行するサイトキーを設定します。取得の手順は「フォーム:操作:reCAPTCHAの設定」を参照してください。
SecretKey - CAPTCHAサービスプロバイダが発行するシークレットキーを設定します。
RecaptchaV3 {"DefaultScoreThreshold": "0.7"} Google社のreCAPTCHA v3スコアの閾値を設定します。

ForwardedHeaders

このパラメータには、リバースプロキシとして信頼するネットワーク・IPアドレスを指定します。以下の2つの用途に使用されます。それぞれ独立した効果があります。

  1. 信頼済みプロキシ認証の送信元制限(Authentication.jsonのTrustedProxyParametersを参照)
    設定されている場合、送信元IPがKnownNetworks/KnownProxiesのいずれかに一致したリクエストのみを自動ログイン対象とします。
    両方が空の場合、1.5.7.0以降は信頼済みプロキシ認証による自動ログインを行いません。1.5.6.x以前は送信元IPの検証がスキップされます(すべての送信元が対象になります)。
  2. Forwarded Headers Middlewareの警告ログ抑止
    .NET 8系の環境では、Pleasanterをクラスタリング構成で実行する際、以下のような警告ログが表示されることがあります。
pleasanter-1  | warn: Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersMiddleware[1]
pleasanter-1  |       Unknown proxy: [::ffff:172.18.0.4]:45988

これは、ASP.NET CoreのForwarded Headers Middlewareが、リクエスト元のプロキシIPアドレスを信頼できないものとして認識しているために発生します。Docker環境では、コンテナ間通信に使用される内部IPアドレスが動的に割り当てられるため、この警告が表示されることがあります。本パラメータを正しく設定することで、この警告ログを抑止できます。

パラメータ名 設定例 説明
KnownNetworks ["172.17.0.0/16", "172.18.0.0/16", "172.19.0.0/16"] 信頼するネットワーク範囲(CIDR形式)を指定します。
KnownProxies ["10.0.0.5"] 信頼する特定のIPアドレスを指定します。

対応バージョン

対応バージョン 内容
1.4.8.0 以降 HealthCheckパラメータ追加
1.4.19.0 以降 ContentSecurityPolicyパラメータ追加
1.4.23.0 以降 ContentSecurityPolicyパラメータに以下を追加
・script-src-elem
・manifest-src
・media-src
・worker-src
・frame-ancestors
・report-to
・sandbox
・upgrade-insecure-requests

ShowLoginPageOnAuthErrorパラメータ追加
1.5.2.0 以降 ForwardedHeadersパラメータ追加
ExcludeCookiePrefixesパラメータ追加
1.5.7.0 以降 信頼済みプロキシ認証で、KnownNetworks・KnownProxiesが両方空の場合は自動ログインを行わないよう変更
AspNetCoreDataProtectionにKeyValueStoreConnectionString・KeyValueStoreKeyNameパラメータ追加

関連情報


  1. プリザンター 1.3.2.0 以降、プリザンター .NET Framework版 0.51.2 以降のバージョンより廃止となりました。代替パラメータとして、Modeを利用してください。 ↩

  2. 認証方式が"Mail"の場合、メールアドレスを設定していないユーザは、2段階認証を有効にするとログインできなくなります。プリザンターを構築した直後は、管理者ユーザ「Administrator」にメールアドレスが設定されていません。Modeに"None"以外を設定する前に、対象となるすべてのユーザにメールアドレスを設定してください。手順はメールによる二段階認証を利用するを確認してください。 ↩

  3. 各認証方式についての詳細は、下記マニュアルを確認してください。
    メールによる二段階認証を有効にする
    TOTP(Time-based One-Time Password)による二段階認証を有効にする ↩↩

  4. Rds.jsonのUserConnectionStringに設定された接続文字列をもとにデータベースの接続確認を行います。 ↩

  5. trueを設定した状態でポリシー違反が検出された場合はブラウザのコンソールログに違反レポート出力され違反対象となったリソースの読み込みがブロックされます。 ↩

  6. trueを設定した状態でポリシー違反が検出された場合はブラウザのコンソールログに違反レポート出力されます。 ↩

  7. report-uriが指定されている場合は違反レポートを送信します。 ↩↩

  8. Enabledをtrueに設定する場合はReportOnlyEnabledをtrueに設定した状態でプリザンターの動作に影響がないことを確認後に設定してください。 ↩