パラメータ設定:Security.json
## 注意事項
パラメータ変更時は[パラメータ変更時の確認事項](/ja/manual/parameter-edit)をご確認ください。
## 制限事項
### IpRestrictionExcludeMembersに設定した組織/グループについて
組織/グループ単位でプリザンターへアクセスを許可している場合、[組織管理機能](/ja/manual/dept)/[グループ管理機能](/ja/manual/group)を使用して、該当組織/該当グループの削除/無効化/所属するユーザの削除を行うと、所属ユーザはプリザンターへアクセスできなくなります。テナント管理者等の重要な管理権限をもつユーザがプリザンターへアクセスできなくなった場合、使用機器の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||
|PrivilegedUsers|[ "Administrator", "AdminUser1", "AdminUser2" ]|[特権ユーザ](/ja/manual/user-management-privileged-users)のログインIDを指定します。[特権ユーザ](/ja/manual/user-management-privileged-users)は権限の無いサイトの操作を含め、すべての操作を行うことができます。複数のユーザをカンマ区切りで指定することができます。|
|RevealUserDisabled|false|ユーザが無効化されている事をログイン時にエラーとして表示する場合にはtrueを指定。|
|LockoutCount|10|パスワードを間違った回数が設定回数を超えた場合に自動的にアカウントをロックします。ロックされたアカウントはユーザ管理画面で解除する必要があります。0に設定した場合にはアカウントはロックされません。|
|PasswordExpirationPeriod|90|ローカルユーザのパスワードの有効期間を計算するための日数を指定。0に設定した場合には有効期間無し。|
|JoeAccountCheck|true|同一のログインIDとパスワードを使用することを禁止する場合にはtrueを指定。|
|TokenCheck|false|セッション毎にトークンを発行しトークンがリクエストに含まれないPOST要求を不正なリクエストとして拒絶する場合はtrueを指定。|
|SecureCookies|false|SSL通信を使用する環境でcookieにsecure属性を付与する場合はtrueを指定。|
|DisableMvcResponseHeader|false|レスポンスヘッダに "X-AspNet-Mvc-Version"ヘッダを含めないようにする場合にtrueを設定します。※.NetFreamework版のみ有効 |
|DisableDeletingSiteAuthentication|false|サイト削除時に認証情報(ログインID/パスワード)を入力せずに削除を許可する場合はtrueを指定。|
|AccessControlAllowOrigin|["*"]|オリジン間リソース共有 (CORS)の許可するサイトのURLを指定。*の場合には全てを許可。|
|EnforcePasswordHistories|12|過去に設定されたパスワードの履歴を記録する回数を指定します。過去に使用したパスワードの再利用を禁止します。|
|DisableCheckPasswordPolicyIfApi|false|APIでユーザを作成する際にパスワードポリシーを無視する場合にはtrueを指定。LDAP認証の場合などで、作成するユーザのパスワードを指定したくない場合に利用します。|
|PasswordPolicies|設定方法は後述|パスワードポリシーとエラーメッセージを指定します。複数のポリシーを組み合わせて設定できます。|
|PasswordGenerator|true|[ユーザ管理](/ja/manual/user-new)などのパスワード入力欄の右側にパスワード自動生成用のアイコン(鍵アイコン)を表示する場合にtrueを指定。|
|SecondaryAuthentication|設定方法は後述|二段階認証を行う場合はEnabledをtrueに設定します。|
|AspNetCoreDataProtection|設定方法は後述|Microsoft Azure の環境でASP.NET Coreデータ保護の構成を行う際の設定を記述します。|
|HttpStrictTransportSecurity|設定方法は後述|HTTP Strict Transport Security プロトコルを適用して、HTTPSでの通信を強制させます。|
|SecureCacheControl|設定方法は後述|レスポンスヘッダにCache-Controlヘッダを含めるよう設定します。|
|HealthCheck|設定方法は後述|[ヘルスチェック機能](/ja/manual/enable-health-check)を使用する場合はEnabledをtrueに設定します。|
### 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アドレスからのアクセス<br/>②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段階認証機能の利用を設定します。|
|NotificationType|"Mail"|認証方式を設定します。"Mail"または"Totp"が設定可能です。※2|
|CountTolerances|1|TOTP認証時、有効とする確認コードの世代数を指定します。※2|
|NotificationMailBcc|true|認証コードをSupportFromのアドレスにBCCで送付するかどうかをtrue/falseで設定します。|
|AuthenticationCodeCharacterType|"Number"|認証コードの文字種を設定します。(Number: 数字のみ、Letter: 英字のみ、NumberAndLetter: 数字と英字)|
|AuthenticationCodeLength|128|文字数を設定します。|
|AuthenticationCodeExpirationPeriod|300|認証コードの有効時間を秒単位で設定します。|
※1 プリザンター 1.3.2.0 以降、プリザンター .NET Framweork版 0.51.2 以降のバージョンより廃止となりました。代替パラメータとして、Modeをご利用ください。
※2 各認証方式についての詳細は、下記マニュアルをご確認ください。
[メールによる二段階認証を有効にする](https://pleasanter.org/manual/secondary-authentication)
[TOTP(Time-based One-Time Password)による二段階認証を有効にする](https://pleasanter.org/manual/totp-authentication)
### Modeの設定
|設定値|説明|
|:--|:--|
|None|2段階認証機能を無効にします。|
|DefaultEnable|2段階認証機能を有効にし、既定設定として全てのユーザに対して2段階認証を有効化します。[ユーザ管理](user-new)から、任意のユーザに対し2段階認証を無効化する設定ができます。|
|DefaultDisable|2段階認証機能を有効にし、既定設定として全てのユーザに対して2段階認証を無効化します。[ユーザ管理](user-new)から、任意のユーザに対し2段階認証を有効化する設定ができます。|
### AspNetCoreDataProtectionの設定
#### データ保護キーを永続化する場所について
BlobContainerUriとKeyIdentifierを両方指定した場合は、BlobContainerUriで指定したURL上に永続化します。BlobContainerUriとKeyIdentifierのどちらかまたは両方nullの場合は、DBに永続化します。
#### Asp.NET Coreのデータ保護について
Asp.NET Coreのデータ保護の詳細や設定方法につきましては、Microsoft社の公式ドキュメントをご確認ください。
[ASP.NET Core データ保護の構成](https://docs.microsoft.com/ja-jp/aspnet/core/security/data-protection/configuration/overview)
[ASP.NET Core でのデータ保護のキー管理と有効期間](https://docs.microsoft.com/ja-jp/aspnet/core/security/data-protection/configuration/default-settings)
[ASP.NET Core でのキー ストレージ プロバイダー](https://docs.microsoft.com/ja-jp/aspnet/core/security/data-protection/implementation/key-storage-providers)
#### パラメータ一覧
|パラメータ名|設定例|説明|
|:--|:--|:--|
|BlobContainerUri|"https://stragename.blob.core.<br>windows.net/containername"|データ保護キーを永続化するBlobコンテナのURLを指定します。|
|KeyIdentifier|"https://keyvalult-name.vault.<br>azure.net/keys/key-name/...."|データ保護キーを保護するための暗号化キーを管理するAzure Key Vaultのキー識別子を指定します。|
|KeyFileName|"keys.xml"|Blobコンテナに永続化されるデータ保護キーのファイル名を指定します。|
|XmlAesKey|"a0b1c2..."|データ保護キーを保護するための暗号化キーを生成するための文字列を指定します。nullの場合は内部で自動的に文字列を指定します。ロードバランサーによる負荷分散構成で複数のプリザンターがある場合でかつこのパラメータで文字列を指定する場合は、全てのプリザンターで同じ文字列を指定してください。|
### HttpStrictTransportSecurityの設定
#### HTTP Strict Transport Security (HSTS)について
HTTP Strict Transport Security (HSTS) は、応答ヘッダーを使って Web アプリによって指定されるオプトイン セキュリティ拡張機能です。HSTS をサポートするブラウザーがこのヘッダーを受け取ると、次のようになります。
・ブラウザーに、HTTP 経由の通信を送信できないようにするドメインの構成が保存されます。 ブラウザーでは、すべての通信が強制的に HTTPS 経由で実行されます。
・ブラウザーによって、ユーザーが信頼されていない証明書や無効な証明書を使えなくなります。 ユーザーがそのような証明書を一時的に信頼できるようにするプロンプトがブラウザーで無効になります。
詳細は下記ドキュメントを参照ください。
[HTTP Strict Transport Security プロトコル (HSTS)|Microsoft Learn](https://learn.microsoft.com/ja-jp/aspnet/core/security/enforcing-ssl#http-strict-transport-security-protocol-hsts)
#### パラメータ一覧
|パラメータ名|設定例|説明|
|:--|:--|:--|
|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,Pricate,MustRevalidateの何れかをtrueとした場合にCache-Controlヘッダがレスポンスに付加されます。
※各パラメータの詳細については下記ドキュメントをご確認ください
[Cache-Control|MDN](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Cache-Control)
[Pragma|MDN](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Pragma)
### HealthCheck
#### パラメータ一覧
|パラメータ名|設定例|説明|
|:--|:--|:--|
|Enabled|true|ヘルスチェック機能を有効にします。|
|EnableDatabaseCheck|true|ヘルスチェック機能でデータベースの接続確認を有効にします。※|
|HealthQuery|"select 1;"|データベースの接続確認で使用するSQLを指定します。|
|RequireHosts|["192.168.1.100"]|指定したホストからのみヘルスチェックが行えるよう制約を適用する場合に指定します。|
|EnableDetailedResponse|false|ヘルスチェックで詳細なレスポンスを返却する場合に有効にします。|
※[Rds.json](/ja/manual/rds-json)のUserConnectionStringに設定された接続文字列をもとにデータベースの接続確認を行います。
##### EnableDetailedResponse
|パラメータ名|説明|
|:--|:--|
|status|すべての正常性チェックの集計状態を示します。|
|totalDuration|ヘルスチェックにかかった時間を示します。|
|entries|各正常性チェックの結果を示します。結果の各パラメータについては後述の entries をご確認ください。|
##### entries
|パラメータ名|説明|
|:--|:--|
|data|コンポーネントの正常性を説明する追加のキーと値のペアを示します。|
|description|チェック対象のコンポーネントの状態を示します。|
|duration|正常性チェックの実行時間を示します。|
|exception|状態をチェックするときにスローされた例外を示します。|
|status|チェック対象のコンポーネントの正常性状態を示します。|
|tags|正常性チェックに関連付けられているタグを示します。|
##### 参考情報
上記のパラメータ(プロパティ)についての詳細につきましては、Microsoft社の公式ドキュメントをご確認ください。
[ASP\.NET Core のルーティング > RequireHost とルートが一致するホスト](https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/routing?view=aspnetcore-8.0#host-matching-in-routes-with-requirehost)
[HealthReport クラス \(Microsoft\.Extensions\.Diagnostics\.HealthChecks\)](https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.extensions.diagnostics.healthchecks.healthreport?view=net-8.0)
[HealthReportEntry 構造体 \(Microsoft\.Extensions\.Diagnostics\.HealthChecks\)](https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.extensions.diagnostics.healthchecks.healthreportentry?view=net-8.0)
## 対応バージョン
|対応バージョン|内容|
|:--|:--|
|1.4.8.0 以降|HealthCheckパラメータ追加|
## 関連情報
<div id="ManualList"><ul><li><a href="/ja/manual/parameter-edit">パラメータ設定:パラメータ変更時の確認事項</a><span>2023/04/05 up</span></li>
<li><a href="/ja/manual/rds-json">パラメータ設定:Rds.json</a><span>2024/11/07 up</span></li></ul></article>
<ul><li><a href="/ja/manual/enable-health-check">プリザンターのヘルスチェック機能を有効化する</a><span>2024/09/10 up</span></li></ul></article>
<ul><li><a href="/ja/manual/user-new">ユーザ管理機能:作成</a><span>2024/09/10 up</span></li>
<li><a href="/ja/manual/user-management-privileged-users">ユーザ管理機能:特権ユーザの設定</a><span>2023/12/13 up</span></li></ul></article>
<ul><li><a href="/ja/manual/health-check">ヘルスチェック機能</a><span>2024/09/10 up</span></li></ul></article>
<ul><li><a href="/ja/manual/faq-health-check-sql-server-unhealthy">FAQ:ヘルスチェック機能でデータベース(SQLServer)の接続確認が"UnHealthy"となる</a><span>2024/09/10 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />