> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# .NET 版

> Windows で組み込みサーバーまたはIIS を使用してCData Arc をホストする方法。TLS/SSL、Windows 認証、アプリケーション設定を含みます。

export const versionMajor = "26";

export const companyName = "CData";

export const siteNameShort = "Arc";

export const siteName = "CData Arc";

{siteName} の.NET 版にはスタンドアロンの組み込みWeb サーバーが同梱されていますが、IIS にホストすることもできます。このトピックでは、Windows でアプリケーションをホストするさまざまなオプションについて説明します。

IIS の使用経験がない場合は、{companyName} は組み込みサーバーの使用を推奨します。組み込みサーバーはインストール時に自動的に配布され、ログの設定、アプリケーションをサービスとして実行、TLS / SSL の有効化などのサーバーレベルの管理タスクのシンプルなインターフェースを提供します。

## 組み込みサーバーの使用

このセクションでは、スタンドアロンの組み込みWeb サーバーの設定方法について示します。これには、SSL / TLS 接続および[Cloud Gateway](#cloud-gateway) の設定、リバースSSH トンネルについての説明が含まれます。

組み込みサーバーにホストされている場合、アプリケーションはWindows サービスとして実行されます：

1. タスクバーの{siteName} のアイコンを右クリックし、**サーバーオプション**をクリックします。
2. **Windows サービスとして実行**を選択します。
3. 変更を保存します。

<Note>[Connections](../administration/settings/connections) **設定**タブで{companyName} ドライバーをインストールする必要があり、インストール中に権限エラーが発生した場合は、Arc サービスアカウント（デフォルトではNetwork Service）に対して`www\Web.Config` および`www\bin` への`write` 権限を付与してください。</Note>

### TLS/SSL 接続のホスト（組み込みサーバー）

プレーンテキストでのサービスのほかに、TLS を要求することができます。このセクションでは、アプリケーションのWindows 版に同梱されている組み込みサーバーで、TLS/SSL 接続をホストする方法を説明します。Java 版にTLS/SSL を配布する方法は、アプリケーションをホストするJava Servlet のドキュメントを参照してください。

1. Windows システムトレイのアプリケーションのアイコンを右クリックして、**Server Options** をクリックします。
2. Web サーバータブで、**TLS を有効化**を選択し、TLS を扱うポートを選択します。
3. **TLS サーバー証明書**ボックスの隣のボタンをクリックし、秘密鍵証明書を選択します。秘密鍵付き証明書は、ローカルコンピュータの証明書ストアにインストールする必要があります。もし、条件を満たす証明書がない場合には、**新しい証明書の作成**をクリックして、シンプルな証明書を作成してください。

   <img src="https://mintcdn.com/cdata-arc/Lo_2D5t4szDfleFN/public/images/ServerDialog.png?fit=max&auto=format&n=Lo_2D5t4szDfleFN&q=85&s=516bc9ce042f000c97a633025e99702b" alt="TLS 設定用のサーバーオプションダイアログ" width="500" data-path="public/images/ServerDialog.png" />

変更を保存すると、サーバーが再起動し、TLS リクエストの処理が開始されます。

#### パーソナル証明書の管理

証明書選択ダイアログで使用可能な証明書は、ローカルコンピュータの証明書ストアにあります。Windows ストアに証明書を追加するには：

1. 実行メニューで**mmc** を入力してMicrosoft 管理コンソールを立ち上げます。

2. **ファイル -> スナップインの追加と削除**をクリックします。

3. 利用可能なスナップインテーブルから**証明書**を選択し**追加**をクリックします。

   <img src="https://mintcdn.com/cdata-arc/Lo_2D5t4szDfleFN/public/images/AddSnapIn.png?fit=max&auto=format&n=Lo_2D5t4szDfleFN&q=85&s=c4b4aa2a5c802f280f073497613511f5" alt="MMC のスナップインの追加ダイアログ" width="500" data-path="public/images/AddSnapIn.png" />

4. **コンピューターアカウント -> ローカルコンピューター**を選択します。

5. スナップインを追加したら、**証明書（ローカルコンピューター） -> 個人 -> 証明書**をクリックして、利用可能な証明書を表示します。秘密鍵が利用可能な証明書には、証明書アイコンの上に鍵のアイコンが表示されます。

6. ローカルディスクからストアに証明書をインポートするには、**アクション -> すべてのタスク -> インポート**をクリックします。インポートウィザードを完了すると、証明書はアプリケーションの証明書選択ダイアログにて利用可能となります。

### Cloud Gateway

Cloud Gateway は、ファイアウォールを変更することなしにアプリケーションをインターネットに公開する簡単な方法を提供します。公開アクセス可能なSSH サーバーが利用できる場合に限り、SSH リバーストンネルを利用して、公開アクセス可能なSSH サーバー上のポート経由で{siteNameShort} にアクセスできます。

この機能を活用するには、システムトレイのアプリケーションアイコンを右クリックし、**サーバーオプション**をクリックします。下記のように**Cloud Gateway** タブに移動して、次の情報を入力します：

<img src="https://mintcdn.com/cdata-arc/Lo_2D5t4szDfleFN/public/images/CloudGateway.png?fit=max&auto=format&n=Lo_2D5t4szDfleFN&q=85&s=688fed964f62c7b66c35982309d054e8" alt="Cloud Gateway の設定タブ" width="500" data-path="public/images/CloudGateway.png" />

| 設定                      | 説明                                                                                               |
| ----------------------- | ------------------------------------------------------------------------------------------------ |
| **Host**                | {siteNameShort} の接続先のSSH サーバー。                                                                   |
| **Port**                | SSH ホストが接続をリッスンするポート。ほとんどのSSH サーバーは、デフォルト値のポート22でリッスンします。                                        |
| **Authentication Type** | 使用する認証のタイプ。{siteNameShort} はPassword、Public Key、Multi-Factor、およびKeyboard Interactive をサポートしています。 |
| **User**                | {siteNameShort} がSSH サーバーへの認証に使用するユーザー名。                                                         |
| **Password**            | 選択された**Authentication Type** で必要な場合に認証に使用するパスワード。                                                |
| **Certificate**         | Public Key 認証する場合に{siteNameShort} がSSH サーバーへの認証に使用する証明書。                                         |
| **Server Fingerprint**  | SSH サーバーのSSH ホストキーフィンガープリント。この値はread-only の情報です。                                                 |
| **Forwarding Port**     | 公開されているSSH サーバーが、{siteNameShort} に転送する接続をリッスンするポート。                                              |

また、ポート開放を許可するために、SSH サーバーの設定を変更する必要がある場合があります。デフォルトのSSH サーバー設定では、非ローカルホストアドレスへのポート開放を常に有効にするとは限りません。例えば、OpenSSH サーバーに接続する場合は、SSH サーバーコンフィギュレーションファイルで、**GatewayPorts** プロパティを**yes** または**clientspecified** に設定する必要があります。

情報を入力したら**Test Connection** をクリックしてSSH サーバーへの接続をテストし、提供された情報を確認します。成功した場合は、アプリケーションを再起動すると、SSH ホストの**Forwarding Port** 経由で{siteNameShort} にアクセスできるようになります。例えば、SSH サーバー *my.ssh.host* を指定して**Forwarding Port** で8401 を使用している場合、ブラウザに`https://my.ssh.host:8401` と入力すると、通信は{siteNameShort} が実行されているローカルマシンに転送されます。これは、ローカルマシンに直接アクセスできなくても公開アクセスが許可されているためです。

### Windows 認証

組み込みWeb サーバーはデフォルトでASP.NET フォームベース認証を使用しており、管理コンソールへのアクセスを許可するには、ユーザー名とパスワードの組み合わせをWeb フォーム（ログインポータル）に入力する必要があります。{siteNameShort} はWindows 認証にも対応しており、特定のWindows ユーザーやセキュリティグループに対してアプリケーションのアクセスを許可することができます。

組み込みWeb サーバーでWindows 認証を有効にする前に、{siteNameShort} へのアクセスが必要なすべての[ユーザー](../administration/settings/user-roles#ユーザー)を{siteNameShort} アプリケーションに追加する必要があります。すべてのWindows AD {siteNameShort} ユーザー名は、次の構文を使用する必要があります： *DOMAIN\Username* 。次の画像で構文が示されています。

<img src="https://mintcdn.com/cdata-arc/Lo_2D5t4szDfleFN/public/images/add_ad_user.png?fit=max&auto=format&n=Lo_2D5t4szDfleFN&q=85&s=2fb36769727aba045c3a7a24904217d7" alt="DOMAIN\Username 形式を示すAD ユーザー追加ダイアログ" width="600" data-path="public/images/add_ad_user.png" />

<Note>グループ全体にアクセス権を付与することができないため、個別にユーザーを追加する必要があります。</Note>

次に、Windows 認証を有効化するには、組み込みWeb サーバーの設定UI を開き（システムトレイの{siteNameShort} アイコンを右クリックして**Server Options** を選択）、**Web Server** タブの**Authentication Type** フィールドを切り替えるだけです。**変更を保存**をクリックします。これにより、Web サーバーとアプリケーションが再起動します。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/windows_auth_type.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=98adce61e8d90fcfd72fe55ab54bc7a7" alt="サーバーオプションの認証タイプの切り替え" width="600" data-path="public/images/windows_auth_type.png" />

以降、{siteNameShort} に追加されたWindows AD ユーザーが自分のマシンにログオンし、ブラウザで{siteNameShort} に移動すると、自動的にログインされます。

## IIS の使用

{siteNameShort} はIIS 10 をサポートしており、[システム要件](./installation-configuration#システム要件)では、マシンがWindows 10 またはWindows Server 2016 以降の環境を指定しています。IIS の設定で問題が発生した場合は、[IIS のトラブルシューティング](#iis-のトラブルシューティング)のセクションを参照してください。ご不明な点がございましたら、弊社の<a href="https://cdata.com/jp/support/submit.aspx" target="_blank">サポートフォーム</a>よりご連絡ください。

#### 新しいWeb アプリケーションの作成

<Note>この例では、デフォルトWeb サイトを使用します。</Note>

Web サイトでアプリケーションをホストするには：

1. IIS マネージャーで、**接続**パネルのサーバーのノードを展開します。
2. サイトノードを展開し、Web サイトを右クリックして、**アプリケーションの追加**をクリックします。
3. **アプリケーションの追加**ダイアログが表示されたら、以下の情報を入力します：

| 設定                   | 説明                                                                                          |
| -------------------- | ------------------------------------------------------------------------------------------- |
| **Alias**            | アプリケーション名。例：`arc`                                                                           |
| **Application Pool** | アプリケーションに関連するアプリケーションプール。例では、`DefaultAppPool` を使用します。                                       |
| **Physical Path**    | アプリケーションがインストールされているディレクトリのwww ディレクトリパス。デフォルトの場所は`C:\Program Files\CData\CData Arc\www` です。 |

#### ディレクトリ権限の設定

アプリケーションが完全に機能するには、{siteNameShort} アプリケーションディレクトリにフルアクセスできる必要があります。

ArcESB 2021 以前のバージョンでは、アプリケーションディレクトリとインストールディレクトリはデフォルトでは同じ `C:\Program Files\ArcESB\` でした。{siteNameShort} の以前のバージョンから{siteNameShort} 20{versionMajor} にアップグレードしている場合は、まだここがアプリケーションディレクトリである可能性が高いです。

{siteNameShort} 2021 で、インストールディレクトリからアプリケーションディレクトリが分割されました。現在のインストールディレクトリは `C:\Program Files\CData\CData Arc` です。現在のアプリケーションディレクトリは `C:\ProgramData\CData\Arc\` です。

アプリケーションディレクトリには次のフォルダが含まれます：

* connectors
* data
* db
* locks
* logs
* schemas
* workspaces

インストールディレクトリには、以下が含まれます：

* プログラム実行ファイル（`CData.Arc.exe`、`arc.exe`）およびコンフィギュレーションファイル
* `www` フォルダとサブフォルダ
* `www_services` フォルダとサブフォルダ

アクセス許可を設定するには、{siteNameShort} インストール用のアプリケーションディレクトリを探して以下の手順に従います：

1. フォルダを右クリックして、**プロパティ**をクリックします。［セキュリティ］タブで**編集** -> **追加**をクリックします。
2. **選択するオブジェクト名を入力してください**ボックスに、アプリケーションプール名を置き換えて以下のように入力します：`IIS AppPool\[your-application-pool]`。例えば、`IIS AppPool\DefaultAppPool` です。
3. アプリケーションプールが、次の権限を持っていることを確認します：

   * 読み出し
   * 書き込み
   * 変更
   * 読み出しと実行
   * フォルダコンテンツをリスト

<Note>アプリケーションプールへのアクセスの許可にはコマンドラインを使うこともできます。次に例を示します：`icacls "<application directory>" /grant "IIS APPPOOL\DefaultAppPool":(OI)(M)`</Note>

#### サーバー権限の設定

sftpserver またはftpserver を使用している場合は、アプリケーションプールに、サーバー用に構成したルートディレクトリに対する正しい権限が設定されていることを確認する必要があります。ルートディレクトリをアプリケーションディレクトリパスの子として作成した場合、親となるアプリケーションディレクトリとそのサブフォルダに権限を設定すれば十分です。

#### アプリケーションプロセスのアンローディングの防止

IIS は、アイドルタイムアウト超過、アプリケーションプールのリソース使用が高すぎる場合など、Web アプリケーションをいくつかの理由でシャットダウンすることがあります。これにより、アプリケーションのバックグラウンドタスクが実行されなくなる可能性があります。次の設定を変更することで、アプリケーションを常時実行しておくことができます：

1. オプションのApplication Initialization 機能を有効化します。

   Windows Server 2016では、**サーバーマネージャー**を開き、**ダッシュボード -> クイックスタート -> 役割と機能の追加**をクリックします。**役割と機能の追加**ウィザードが開きます。「サーバーの役割」のステップで、**Web サーバー（IIS）-> Web サーバー -> アプリケーション開発 -> Application Initialization** をクリックします。

   Windows 10 では、**コントロールパネル**を開いて、**プログラムと機能 -> Windows の機能の有効化または無効化**をクリックします。**インターネットインフォメーションサービス -> World Wide Web サービス -> アプリケーション開発機能 -> Application Initialization** をクリックします。

2. IIS マネージャーで、**接続**パネルの**アプリケーションプール**をクリックします。

3. ワークスペースで、アプリケーションプールを右クリックし、**詳細設定**をクリックします。

4. 全般設定の、**開始モード**を**AlwaysRunning** に設定します。

5. プロセスモデル設定では、**アイドルタイムアウト**プロパティを**0** に設定します。

6. CPU セクションでは、**制限間隔**プロパティを**0** に設定します。

7. リサイクルセクションでは、**定期的な期間（分）** を**0** に設定します。

8. リサイクルセクションのリサイクルイベントログエントリの生成ノードでは、**定期的な期間**プロパティを**False** に設定します。**OK** ボタンをクリックします。

9. IIS マネージャーに戻ってWeb サイトを右クリックし、**Web サイトの管理 > 詳細設定**をクリックします。

10. 全般設定で、**有効化されたプリロード**を**True** に設定して、**OK** をクリックします。これで、リサイクル後すぐにアプリケーションが起動するようになります。

#### ASP.NET アプリケーションプールのリサイクル設定

IIS は定期的にリサイクルし、ASP.NET アプリケーションプールのプロセスをクリーンアップします。リサイクルをオフピーク時にスケジュールすることもできます。リサイクルセクションに移動して**Specific Time** を**True** に設定し、リサイクルする時間をhh:mm:ss 形式で入力します。

#### アプリケーションのプリロード

IIS のプリロード機能は、ユーザーが接続する前にアプリケーションを実行することで、パフォーマンスを向上させることができます。この機能を有効にするには、**接続**ペインで、{siteNameShort} に関連しているWeb アプリケーションを右クリックし、**アプリケーションの管理 -> 詳細設定**を選択します。「有効化されたプリロード」メニューで、**True** を選択します。

「有効化されたプリロード」が**True** に設定されている場合、IIS はユーザーリクエストをWeb サイトのデフォルトページ、または仮想ディレクトリにシミュレートして、アプリケーションを初期化します。

#### 設定の確認

アプリケーションを開くには、`http://localhost/arc` に移動します。エラーが発生した場合は、[IIS のトラブルシューティング](#iis-のトラブルシューティング)を参照してください。

#### TLS/SSL 接続のホスト（IIS）

取引先とあなたのビジネスクリティカル・ミッションクリティカルな通信の機密を保持するためにTLS/SSL を使用できます。次の手順では、すでにお客様のサーバーにTLS/SSL を有効化させるための証明書を持っていることが前提となっています。

1. IIS マネージャーの**接続**ペインでWeb サイトのノードをクリックします。
2. **操作**ペインで**バインド**をクリックします。
3. **追加** をクリックし、**HTTPS** を選択します。
4. サーバー証明書を選択します。
5. TLS/SSL を要求したい場合には、Web サイトのノードが選択されている状態で、ワークスペースで「SSL/TLS 設定アイコン」をダブルクリックします。**SSL/TLS が必要**を選択して、操作ペインで**適用**をクリックします。

### Windows 認証

{siteNameShort} をIIS でホストしている場合に、Windows 認証を使用するように{siteNameShort} を設定する方法は、.NET [組み込みWeb サーバー](#組み込みサーバーの使用)を使用するために必要な設定と類似しています。ただし、組み込みWeb サーバー内で変更を行うのではなく、IIS 内で必要な変更を加えます。

{siteNameShort} がIIS でホストされている場合にWindows 認証を設定するには、以下の手順に従います：

1. {siteNameShort} にログインし、{siteNameShort} へのアクセスが必要なすべての Windows AD [ユーザー](../administration/settings/user-roles#ユーザー)をアプリケーションに追加します。Windows AD {siteNameShort} ユーザー名には、次の構文を使用する必要があります： *DOMAIN\Username*。

   <Note>グループ全体にアクセス権を付与することができないため、個別にユーザーを追加する必要があります。</Note>

2. IIS を開いて、{siteNameShort} 用に構成されているサイトを停止します。サイトを右クリックし、**Web サイトの管理 > 停止**を選択します。

3. {siteNameShort} サイトをクリックして**ホーム**ページを開きます。**IIS** セクションの**認証**を選択します。

   <img src="https://mintcdn.com/cdata-arc/AKthyJ-LnqphL8js/public/images/iis_authentication.png?fit=max&auto=format&n=AKthyJ-LnqphL8js&q=85&s=fee2f2e104b32a452cbda28e5ed0e994" alt="IIS 認証設定ページ" width="600" data-path="public/images/iis_authentication.png" />

   認証方式がリストされた画面が表示されます。**フォーム認証**を右クリックして**無効にする**を選択します。これにより、ユーザー名とパスワードを入力してログインする必要があるデフォルトの認証方式が無効になります。

4. **Windows 認証**を右クリックして**有効にする**を選択します。

5. IIS でサイトを再起動します。

{siteNameShort} にアクセスするときにIIS がユーザー名とパスワードの入力を求めないようにするには、IIS でWindows 認証プロバイダーを編集する必要がある場合があります。IIS 認証設定からこれを行うには、**Windows 認証**を右クリックして**プロバイダー**を選択します。プロバイダーのリストが開きます：

<img src="https://mintcdn.com/cdata-arc/AKthyJ-LnqphL8js/public/images/iis_providers.png?fit=max&auto=format&n=AKthyJ-LnqphL8js&q=85&s=8a99580b1dd5da6e8a90a43353398804" alt="IIS 認証プロバイダーのリスト" width="500" data-path="public/images/iis_providers.png" />

{siteNameShort} が認証を行う際にプロバイダーが優先されるように、リストの一番上に**NTLM** があることを確認してください。ユーザー名とパスワードの要求を停止するには、**Negotiate** を完全に削除する必要がある場合があります。

IIS でWindows 認証が正しく設定されると、アプリケーションにアクセスするときに、ログインした Windows AD ユーザーとして{siteNameShort} に自動的にログインされます。

### IIS のトラブルシューティング

次のセクションは、いくつかの共通して発生するエラーの解決方法を説明します。

#### ログアウトして、しばらく経つとアプリケーションが応答しなくなる

IIS が、非アクティブ状態からタイムアウトした後にアプリケーションをアンロードしている可能性があります。デフォルトで、IIS は20分間動きがない場合にアプリケーションにアサインされたワーカープロセスを終了します。この機能を回避する方法については、[アプリケーションプロセスのアンローディングの防止](#アプリケーションプロセスのアンローディングの防止)を参照してください。

#### [http://localhost/application](http://localhost/application) にアクセスすると、"Page Cannot Be Displayed" エラー（HTTP 404 エラー）が返される

ASP.NET が有効になっていない可能性があります。favicon.ico のような静的な画像（例えば、`http://localhost/arc/favicon.ico`）は正常に閲覧できるのに、login.rst が閲覧できない場合は、ASP.NET が有効化されていない可能性が高いです。

IIS で、**コントロールパネル -> プログラム（もしくはプログラムと機能） -> Windows 機能の有効化または無効化 -> インターネットインフォメーションサービス -> World Wide Web サービス -> アプリケーション開発機能**を選択します。**ASP.NET** の隣のチェックボックスにチェックを入れます。

#### 親レベルでセクションがロックされている

ロックは、デフォルト（`overrideModeDefault="Deny"`）、もしくは`overrideMode="Deny"`またはレガシーの`allowOverride="false"` ロケーションタグで明示的に設定されているかが原因です。

このエラーはASP.NET がインストールされていない場合に発生します。

#### HTTP 503 エラー：サービスが利用できません

このエラーは、{siteNameShort} の組み込みWeb サーバーで以前使用したポートをIIS で選択した場合に表示されることがあります。これは、サービスが正常に開始されなかったことを意味します。IIS はサービスの開始時に問題を報告しませんが、サイトにアクセスしようとするとエラーが表示されます。これは、組み込みWeb サーバーがバインド対象のポートを予約するため、そのポートにバインドを試みる他のプロセスがその予約を取得できないためです。

問題がポート予約によるものかどうかを確認するには、コマンドプロンプトを開いて次のコマンドを実行します：

```
netsh http show urlacl
```

これにより、マシン上のすべての予約エントリが表示されます。バインドしようとしているURL がリスト内にある場合（例：`Reserved URL : http://+:8001/`）、別の`netsh` コマンドを使用してその予約を削除できます（`show` リストと同じ値を使用）。例えば、次のコマンドはポート`8001` から予約を削除します：

```
netsh http delete urlacl http://+:8001/
```

## ユーザー管理

初めて{siteNameShort} を起動する際、ユーザー名 / パスワードの資格情報を持つユーザーの作成を求められます。最初のユーザーが作成されると、[設定ページ](../administration/settings/settings-page)の**ユーザー**タブで、ユーザーの追加、削除、および管理を行うことができます。

ユーザーの管理とロールの詳細については、[ユーザーロール](../administration/settings/user-roles)を参照してください。

## アプリケーションディレクトリの設定

{siteNameShort} のアプリケーションディレクトリフォルダには、アプリケーションで使用されるすべてのデータ（設定データ、アプリケーションデータ、ログデータ、証明書など）が格納されます。アプリケーションディレクトリはデフォルトで次の場所にあります：

```
C:\ProgramData\CData\Arc
```

アプリケーションディレクトリは別のフォルダに設定することもでき、これは次のようなシナリオで役立ちます：

* {siteNameShort} の複数インスタンスの[クラスタリング](../administration/clustering)
* アプリケーションデータ用の共有ネットワークドライブの使用
* 同じフォルダにアクセスする他のシステム内への{siteNameShort} の組み込み

アプリケーションディレクトリを変更するとアプリケーションのデータファイルは移動しますが、.exe や.jar などのその他のアプリケーションリソースは移動しません。

### アプリケーションディレクトリの変更

カスタムアプリケーションディレクトリを設定するには、インストールディレクトリ内の`www` フォルダにある`Web.Config` ファイルを開きます。ファイルの一番下にある`<appSettings>` タグの中に次の値を見つけます：

```xml theme={null}
<add key="AppDirectory" value="C:\ProgramData\CData\Arc" />
```

`value` に続く引用符の中のテキストを、新しいアプリケーションディレクトリに置き換えます。これは、アプリケーションが読み取りと書き込みの権限を持つ、任意のローカルまたはネットワークパスにすることができます。

## アプリケーションデータベースの設定

{siteNameShort} のアプリケーションデータベースは、以下のようなアプリケーションデータの複数のテーブルを保存します：

* トランザクションログ（アプリケーションによって処理される各トランザクションのメタデータ）
* アプリケーションログ（アプリケーションレベルのエラーとイベント）
* アクセスログ（アプリケーションのWeb エンドポイントへのリクエスト）
* 監査ログ（ユーザーによる{siteNameShort} の設定変更）

デフォルトでは{siteNameShort} はインストールディレクトリにあるSQLite データベースをアプリケーションデータベースとして使用します。このデータベースは最大100,000 トランザクションまでを推奨します。その件数に達したら、{companyName} は外部データベースへの移行を推奨します。SQL Server、PostgreSQL、MySQL などのエンタープライズデータベースを使用するようにアプリケーションを設定できます。

<Note>セキュリティ上の理由から、アプリケーションデータベースを切り替える場合は、必ず[integrityResetTampering](../../scripting/operations/op-integrity-reset-tampering) オペレーションを実行してハッシュチェーンをリセットする必要があります。</Note>

アプリケーションデータベースは、インストールディレクトリの`www` フォルダにある`Web.Config` ファイルで構成されます。このファイルには、コメントアウトされた`AppDb` ブロックがあり、以下の`connectionStrings` タグが記述されています。ターゲットデータベースの接続文字列とプロバイダー名を、`AppDb` キーに設定します。

### 接続文字列の設定

以下のセクションでは、`Web.Config` ファイルでさまざまなサーバー設定を行った場合の接続文字列の例を示します。これらの値はプレーンテキストで設定することも、[暗号化された接続文字列を生成](#暗号化されたデータベース接続文字列の生成)して`connectionString` 値に使用することもできます。

#### SQL Server

```xml theme={null}
<connectionStrings>
   <add name="AppDb" connectionString="server=localhost;database=sqlserver;user=MyUserName;password=MyPassword;" providerName="System.Data.CData.SQL" />
</connectionStrings>
```

<Note>アプリケーションデータベースとしてSQL Server を使用する際のデッドロックの可能性を減らすため、CData ではREAD\_COMMITTED\_SNAPSHOT が有効化されていることの確認を推奨しています。</Note>

#### MySQL

```xml theme={null}
<connectionStrings>
   <add name="AppDb" connectionString="server=localhost;database=appdb;user=MyUserName;password=MyPassword;" providerName="System.Data.CData.MySQL" />
</connectionStrings>
```

#### PostgreSQL

```xml theme={null}
<connectionStrings>
   <add name="AppDb" connectionString="server=localhost;port=5432;database=postgres;user=postgres;password=MySecretPassword;" providerName="System.Data.CData.PostgreSQL" />
</connectionStrings>
```

### 暗号化されたデータベース接続文字列の生成

{siteNameShort} は、アプリケーションのデータベース接続用に暗号化された接続文字列を生成する機能を提供します。この暗号化された接続文字列を使用することで、{siteNameShort} 設定ファイルにログイン認証情報をプレーンテキストで保存することなく、アプリケーションデータベースを指定することができます。暗号化された接続文字列を生成するには、`CData.Arc.exe` があるインストールディレクトリで、接続情報を文字列の例の末尾に置き換えて、以下のコマンドを発行します：

```
CData.Arc.exe -EncryptConnectionString server=serverName;database=databaseName;user=userName;password=passwordSample;
```

コマンドを発行すると、コマンドウィンドウに暗号化された文字列が出力されます。次に例を示します：

```
ENCRYPTEDA:XuUY73BQHKdzWn52z6AqLvZ7uG6jlwkcsQL8yGM8sQ2Znfm1HwG6BpH+LP92mGBBCQX2/IWMal2V5a1AujfltOwResXjAijDzxJ7JmvgUt4=
```

[接続文字列の設定](#接続文字列の設定)で示したように、この暗号化された文字列を`connectionString` のプレーンテキスト値の代わりに使用することができます。

### デフォルト文字セットの指定（MySQL のみ）

MySQL 8.0 以降などのバージョンでは、データベースとそのテーブルのデフォルト文字セット（charset）はUTF8（具体的には`utf8mb4`）です。ただし、MySQL 8.0 より前のバージョンでは、デフォルトのcharset は通常Latin1 であり、基本的なラテンアルファベット以外の文字を含むデータで問題が発生する可能性があります。

古いバージョンのMySQL を使用している場合は、代わりに`utf8mb4` を使用するようにデータベースを設定することで、これらの問題を回避できます。この変更には2つの方法があります。既存のデータベースを直接更新するか、MySQL のエクスポートおよびインポートツールを使用してデータを新しいUTF8 エンコードのデータベースに移行します。

#### データベースを直接更新する

1. データベースをバックアップします：`mysqldump -u root -p --default-character-set=latin1 --databases [database name] > backup.sql`

2. デフォルトのcharset をUTF8 に変更します：`ALTER DATABASE [database name] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`

3. すべてのデータベーステーブルのデフォルトのcharset をUTF8 に変更するSQL ステートメントを生成します：

   ```
   SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') AS alter_sql
   FROM information_schema.TABLES
   WHERE table_schema = '[database name]' AND table_type = 'BASE TABLE';
   ```

4. 前のステップで生成したSQL ステートメントを実行します。

#### エクスポートおよびインポートツールを使用する

1. データ定義言語（DDL）とデータをエクスポートします：

   ```
   mysqldump -u root -p --default-character-set=latin1 --no-create-info [database name] > data.sql
   mysqldump -u root -p --no-data [database name] > schemas.sql
   ```

2. schemas.sql のデフォルトのcharset を`CHARSET=latin1` から`CHARSET=utf8mb4` に変更します。

3. UTF8 をデフォルトのcharset とする新しいデータベースを作成します：`CREATE DATABASE [new database name] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`

4. 新しいデータベースにインポートします：

   ```
   mysql -u root -p [new database name] < schema.sql
   mysql -u root -p [new database name] < data.sql
   ```

## ログインのロックアウト設定

ブルートフォースアタックを防ぐために、{siteNameShort} は不正なパスワードを何度も入力するユーザーを自動的にロックアウトします。デフォルトでは、5分以内に6回不正なパスワードを入力したユーザーは、7回目の試行に失敗すると30分間ロックアウトされます。

これらの設定は、インストールディレクトリの`www` フォルダにある`Web.Config` ファイルを編集することで変更できます。ロックアウトに関連する設定は3つあります：

* **LockoutFailedAttempts**：ロックアウトのトリガーとなる不正なパスワードの数（ロックアウトを無効にするには0に設定）
* **LockoutMinutes**：ロックアウトする時間（デフォルトは30分）
* **LockoutTimeCheckPeriod**：失敗した試行回数を0にリセットするまでの時間（デフォルトは5分）

これらはそれぞれ`Web.Config` ファイルの`<appSettings>` タグで設定できます。例えば、以下のスニペットはロックアウトを無効にします：

```xml theme={null}
<appSettings>
     <add key="LockoutFailedAttempts" value="0"/>
</appSettings>
```
