> ## 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.

# セキュリティのベストプラクティス

> CData Arc インストールのセキュリティ関連機能と推奨されるベストプラクティス。

export const companyName = "CData";

export const siteNameShort = "Arc";

export const siteName = "CData Arc";

{/*
Cloud-env gating note (preserved from the original Jekyll source):

The Jekyll source wrapped everything from "Security topics are divided..." down through
"The following sections relate to the security of data..." in {% if site.cloud_env == false %}.
Intent: hide these on-prem-only sections in the cloud build.

The converted MDX initially honored that gating with `<>...</>`, but the
combination of multiple top-level conditional JSX blocks and Markdown code fences in the same
file caused Mintlify to silently drop the entire body during render. To get the code blocks
to render with Mintlify's standard treatment (syntax highlighting, copy button) AND keep the
page from breaking, the gating was removed: every section now renders unconditionally.

If cloud-env gating needs to come back, the cleanest approach is to split this file in two:
one for shared content, one for on-prem-only content, with the cloud build's docs.json
navigation linking only to the shared page.
*/}

このページでは、{siteName} で利用可能なセキュリティ関連の機能に関する情報、および推奨するベストプラクティスについて説明します。

セキュリティのトピックは、大きく2つのカテゴリに分類されます：

* {siteNameShort} が動作するインフラストラクチャの保護
* {siteNameShort} 内のデータの保護

これらのセクションはどちらも、関連するセキュリティ概念について説明し、ベストプラクティスの推奨事項を備えたサブセクションを含んでいます。

## {siteName} インフラストラクチャの保護

多くのセキュリティ設定は、サーバーの設定ファイルによって管理されます。{siteNameShort} に含まれる組み込みWeb サーバーを使用する場合、サーバー設定ファイルは次の場所にあります：

* .NET 版—{siteNameShort} インストールディレクトリ内の`www` フォルダにある`Web.Config` ファイル（デフォルトでは`C:\Program Files\CData\CData Arc`）
* Java 版—{siteNameShort} インストールディレクトリにある`arc.properties` ファイル

{siteNameShort} を外部サーバーにデプロイする場合は、その外部サーバーの設定ファイルを代わりに使用する必要があります。

### インバウンドトラフィックのTLS/SSL の有効化

CData では、サーバーでTLS/SSL を有効にすることを強くお勧めします。TLS/SSL は、公開鍵 / 秘密鍵暗号化を使用して、クライアントとサーバー間の通信チャネルを暗号化します。この暗号化により、{siteNameShort} においてデータの機密性、信頼性、完全性が保護されます。さらに、デジタル証明書を使用することで、TLS はクライアント / サーバーのID 確認機能を提供します。

インバウンドTLS/SSL の有効化は、2つのカテゴリに分類できます：

* ホストWeb サーバーのTLS。これは、下位でHTTP を使用するプロトコル（[AS2](../../connectors/as2) や[AS4](../../connectors/as4) など）を含むHTTP トラフィックに関連します。これらのリクエストの処理には、{siteNameShort} をホストするWeb サーバーが使用されるため、Web サーバーレベルでTLS を有効にする必要があります。
* その他すべてのサーバーのTLS。これは、[FTP](../../connectors/ftp) や[OFTP](../../connectors/oftp) のような非HTTP トラフィックに関連します。これらのインバウンド接続を処理するサーバーは{siteNameShort} をホストするWeb サーバーとは異なるため、{siteNameShort} インターフェースの[プロファイル](./profiles)ページのタブで、適切なプロトコルに対しこれらのオプションを有効にする必要があります。

#### Web サーバーのTLS/SSL

* .NET 版{siteNameShort} については、[組み込みサーバーの使用](../installation/windows-edition#組み込みサーバーの使用) または[IIS の使用](../installation/windows-edition#iis-の使用) を参照してください。
* クロスプラットフォーム版については、[TLS/SSL の有効化](../installation/cross-platform-edition#tls-ssl-の有効化) を参照してください。

#### その他のサーバーのTLS/SSL

次のサーバーのTLS/SSL を有効化するには、[プロファイル](./profiles)ページを使用します：

* [FTP サーバー](../../connectors/ftp-server)
* [OFTP サーバー](../../connectors/oftp)
* [HL7 MLLP サーバー](../../connectors/hl7mllp)

各サーバーには、プロファイルページにTLS/SSL を有効または無効にできるタブがあります。

### ファイアウォールの設定とDMZ の使用

{siteNameShort} がメッセージを送受信するには、関連する送信ポートと受信ポートでファイアウォールの干渉を受けないようにする必要があります。ファイアウォール内で特定のIP をホワイトリストに登録し、予想されるソースからのみトラフィックが送信されるようにすることが最善のオプションです。これが不可能な場合は、{siteNameShort} がインバウンドメッセージをリッスンする重要なポートでファイアウォールを開く必要があります。{siteNameShort} は、ログインポータルの背後で構成リソースを保護します。

デフォルトでは、{siteNameShort} Web サーバーはポート8001 をリッスンします。非Web プロトコルのポートは、アプリケーションで直接構成できます。例えば、[OFTP サーバー](../../connectors/oftp)のリスニングポートは、プロファイルページのOFTP サーバータブで設定可能です。

#### DMZ

.NET 版{siteNameShort} には、非武装地帯（DMZ）内で{siteNameShort} をホストするためのリバースSSH トンネルを確立するためのサポートが含まれており、プライベートネットワークのファイアウォールを直接開かないようにすることができます。クラウドホスティングについての詳細は、[DMZ Gateway](./dmz-gateway) を参照してください。

### パブリックエンドポイントをWeb インターフェースから分離

デフォルトでは、{siteNameShort} は同じWeb サーバーポートを使用して、管理コンソール（{siteNameShort} が構成および管理される場所）と、リモートパートナーがアプリケーションにデータを送信するために使用するパブリック受信エンドポイントの両方をホストします。管理コンソールは、リモートパートナーがアクセスできないように認証情報によって保護されています。しかし、パブリック受信エンドポイントを別のポートでホスティングすることで、ネットワーク / ファイアウォールのルールを使用して冗長性を追加し、セキュリティを強化することができます。別のネットワークポートでパブリック受信エンドポイントをホストする方法の詳細については、[分離プレーンデプロイメント](./split-plane-deployment)を参照してください。

### サーバーのセキュリティ設定の強化

Arc の設定ファイルに`ScriptingEngineHardeningLevel` コンフィギュレーションパラメータを設定することで、{siteNameShort} サーバーのセキュリティを高めることができます。デフォルトでは、このパラメータは`0` に設定されており、いかなる操作もブロックされません。値は`0` から`3` まで設定でき、値が大きいほど特定の操作が無効になり、セキュリティが強化されます。次のテーブルは、各ハードニングレベルでどの操作が無効になるかを示しています：

| レベル | 無効な操作                                                                                   |
| --- | --------------------------------------------------------------------------------------- |
| 0   | すべての操作が許可されます。これがデフォルトです。                                                               |
| 1   | 最も脆弱な操作は無効になります。これには、ユーザーが任意の方法でホストシステムと対話できるようにするあらゆる操作が含まれます。                         |
| 2   | レベル1で禁止されている操作に加えて、このレベルでは、新規ユーザーの作成、ディスク上のファイルへの恣意的でないアクセス、および繰り返しタスクの導入などの操作が無効になります。 |
| 3   | レベル1および2で禁止されている操作に加えて、このレベルでは、サーバーから機密情報を取得する操作や、任意のhttp リクエストを実行する操作が無効になります。         |

次のセクションを参考に、インストールのハードニングレベルを設定します。

#### .NET

テキストエディタを使用して、インストールディレクトリ内の`www` フォルダにある`Web.Config` ファイルを開きます。一番下の`<appSettings>` タグの中に次の行を追加し、`value` を希望のレベルに設定します：

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

#### Java

テキストエディタを使用して、インストールディレクトリにある`arc.properties` ファイルを開きます。次のプロパティの行を追加し、数値を希望のレベルに設定します：

```
cdata.initParameters=ScriptingEngineHardeningLevel:0
```

### 外部マルウェアおよびアンチウイルスファイルスキャナーとの関係

{siteNameShort} は、ファイル処理中にアプリケーションディレクトリのコンテンツに排他的にアクセスできることを想定しています。アプリケーションは、複数のスレッドが同じファイルを処理しないように、アプリケーションディレクトリのリソースロックなど、時間に敏感なリソースを使用します。コネクタの**トランザクション**タブ内のファイルをスキャンしてメッセージにメタデータを適用し、コネクタ間でファイルを移動するときは、コネクタのディレクトリ間で即座にファイルを移動してフロー内の複数ステップにわたる迅速な処理を保証します。

ファイルやファイルハンドルをスキャンするプロセスは{siteNameShort} のパフォーマンスに影響を与え、ファイル自動化の中断、トラフィックのログの失敗、コネクタ間のメッセージ移動の失敗、処理パフォーマンスの低下など、アプリケーションで予期せぬ動作を引き起こす可能性があります。

CData では、ファイルスキャンユーティリティを{siteNameShort} のアプリケーションディレクトリまたはそのサブディレクトリに指定しないことをお勧めします。ローカルシステムに到着したファイルに対してウイルスやマルウェアのスキャンを実行する必要がある場合は、[File コネクタ](../../connectors/file) を使用して、ファイルをアプリケーションディレクトリ外のディスク上のパスに移動することをお勧めします。その場所は、ファイルスキャン用のステージングフォルダとして使用できます。

#### File コネクタを使用してスキャンしたファイルの処理を続行する

他のプロセスと共有されているディスク上のフォルダからファイルを受信する場合、[File コネクタ](../../connectors/file)を使用して**受信の遅延**を設定し、コネクタが受信ファイルを受信および処理するまでの待機時間（秒単位）を設定できます。デフォルトの間隔は5秒です。この値を大きくすると、ファイルスキャナーが完了するまでの時間が長くなります。

## {siteName} 内のデータの保護

次のセクションは、{siteNameShort} 内のデータのセキュリティに関するものであり、アプリケーションを流れるメッセージ / データ、および[フロー](../../flows)設定そのものを含みます。

### アウトバウンドトラフィックのTLS/SSL の有効化

{siteNameShort} は、アウトバウンド接続のターゲットURL に基づいて、TLS/SSL をネゴシエートするかどうかを自動的にパースします。例えば、[AS2](../../connectors/as2) アウトバウンド接続が`https` URL をターゲットにしている場合、{siteNameShort} はTLS をネゴシエートします。

TLS/SSL は、暗号化メカニズムが組み込まれていないプロトコルを介してデータを転送する場合に強く推奨されます。つまり、Web トラフィックは`https` エンドポイントに送信され、FTP トラフィックは`ftps` エンドポイントに送信される必要がある、などです。ターゲットURL を正しく設定する以外に、{siteNameShort} がTLS/SSL 暗号化をネゴシエートするために追加の手順は必要ありません。

### TLS/SSL サーバー証明書とSSH キーの検証

TLS/SSL またはSSH サーバーへのアウトバウンド接続を行う場合、接続を確立するコネクタ（例えば、[REST](../../connectors/rest)、[AS2](../../connectors/as2)、[SFTP](../../connectors/sftp)）は、サーバーから提供された証明書またはキーの検証を試みます。コネクタ設定にサーバー証明書 / キーが設定されていない場合、{siteNameShort} は基盤となるシステム（OS やJRE）に存在する検証プロセスを使用して、サーバーの証明書が信頼できるかどうかを判断します。

特定のTLS/SSL 証明書またはSSH キーのサムプリントを使用してコネクタを構成して、基盤となるシステム動作をオーバーライドできます。アウトバウンド接続を行うときに、サーバーの証明書がコネクタで構成されている証明書と一致する場合、コネクタはサーバーを信頼します。このオプションは最高レベルのセキュリティを提供します。

**TLS サーバー証明書**フィールドを *Any Certificate* に設定すると、コネクタはサーバーのID を暗黙的に信頼します。サーバーのなりすまし攻撃の心配がない場合にのみ、これを実行してください。

### ユーザーと管理者の管理およびAPI へのアクセス

{siteNameShort} は、{siteNameShort} Web インターフェースにログインしてアプリケーションを使用する権限を持つユーザーの一連のユーザー名とパスワード資格情報を保持します。Admin ロールを含むユーザーとロールの詳細については、[ユーザー管理とロール](./settings/user-roles)を参照してください。

Admin ロールを持つユーザーは、他のユーザーのパスワードにアクセスして変更することができます。{siteNameShort} の最初の起動時に作成されたAdmin ユーザーの資格情報は、このアカウントが安全で回復可能であることを保証するために、外部の場所に安全に保存する必要があります。

### 管理API

ユーザーは、管理API への呼び出しを通じてすべてのアプリケーション管理タスクを実行できるため、このAPI へのアクセスを保護することは、Web インターフェースへのアクセスを保護することと同じくらい重要です。{siteNameShort} ユーザーが作成されると、このユーザーにAPI へのアクセスを許可する認証トークンを生成できます（アプリケーション内でのユーザーのロールに応じた制限があります）。認証トークンを使用して管理API にアクセスする方法の詳細については、[API 認証](../../admin-api/admin-api-authentication)を参照してください。

<Note>ユーザーの認証トークンは作成後は表示されないため、外部の場所に安全に保管する必要があります。</Note>

### FIPS 準拠

連邦情報処理標準（FIPS）は、セキュリティ、相互運用性、データの完全性を確保するため、コンピューターシステムでの使用を目的として米国連邦政府によって開発されたセキュリティ標準のセットです。{siteNameShort} でFIPS を有効にするには、以下のエディション固有の手順に従います。

#### Java 版

組み込みJetty Web サーバーでFIPS を有効にするには、まず必要なBouncy Castle FIPS jar ファイルをダウンロードしてインストールする必要があります。<a href="https://www.bouncycastle.org/download/bouncy-castle-java-fips/#latest" target="_blank">[https://www.bouncycastle.org/download/bouncy-castle-java-fips/#latest](https://www.bouncycastle.org/download/bouncy-castle-java-fips/#latest)</a> から以下のjar ファイルをダウンロードし、`arc.jar` と同じディレクトリにある`lib` フォルダに配置します：

* `bcutil-fips-2.x.jar`
* `bc-fips-2.x.jar`
* `bcpkix-fips-2.x.jar`
* `bctls-fips-2.x.jar`

FIPS の設定は、組み込みJetty Web サーバーがHTTP またはTLS/SSL のいずれを使用するように設定されているかによって異なります：

##### HTTP

{siteNameShort} がクライアントにTLS/SSL を提供するリバースプロキシの背後で動作し、{siteNameShort} を実行するサーバーがそのプロキシとHTTP 経由で通信している場合は、単に`arc.properties` ファイルに`cdata.fips.enabled=true` を追加します。

##### TLS/SSL

TLS/SSL（HTTPS）を使用するように設定されている場合にFIPS を有効にするには、まず以下のコマンドを使用してBCFKS キーストアを作成する必要があります：

```
keytool -genkeypair -alias jetty -keyalg RSA -keystore keystore.bcfks -storetype BCFKS -storepass xA123456 -keypass xA123456 -dname "CN=localhost" -validity 365 -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS -J-cp -J"bc-fips-2.1.0.jar"
```

キーストアを作成したら、`arc.properties` ファイルを以下の設定で更新します：

```
cdata.fips.enabled=true
;; TLS
cdata.tls.port=8443
cdata.tls.keyStoreType=BCFKS
cdata.tls.keyStorePath=/pathto/keystore.bcfks
cdata.tls.keyStorePassword=xA123456
```

<Note>組み込みJetty Web サーバーでFIPS を有効にする場合、最小パスワード長は14文字です。FIPS が有効になっていてパスワードが14文字未満の場合、{siteNameShort} にログインできません。</Note>

#### .NET 版

.NET の組み込みWeb サーバーでFIPS を有効にする場合、またはアプリケーションをIIS でホストする場合は、`Web.Config` ファイルに以下のステートメントを追加します。

```xml theme={null}
<configuration>
  <appSettings>
    <add key="EnableFIPSMode" value="true" />
  </appSettings>
</configuration>
```
