OSGi サーバー上で AEM Forms を保護する場合の推奨事項とベストプラクティス
サーバー環境のセキュリティを強化することは、企業にとって最も重要な課題です。この記事では、AEM Forms が稼働するサーバーを保護する場合の推奨事項とベストプラクティスについて説明します。この記事では、オペレーティングシステム用のホストを保護するための包括的な情報ではなく、デプロイされているアプリケーションのセキュリティを強化するために実装する必要があるさまざまなセキュリティ設定について説明します。ただし、アプリケーションサーバーのセキュリティを確保するには、この記事に記載されている推奨事項だけでなく、セキュリティのモニター手順、検出手順、応答手順についても実施する必要があります。この記事では、PII(個人の特定が可能な情報)を保護する場合のベストプラクティスとガイドラインについても説明します。
この記事は、アプリケーションの計画、インフラストラクチャの開発、AEM Forms のデプロイメントを担当するコンサルタント、セキュリティスペシャリスト、システムアーキテクト、IT 専門スタッフを対象としています。また、この対象読者には、次のような一般的な職務の担当者も含まれます。
以下の図は、適切なファイアウォールトポロジーが設定された、AEM Forms の一般的なデプロイメント環境で使用されるコンポーネントとプロトコルを示しています。
AEM Forms は非常にカスタマイズ性が高いため、さまざまな環境で使用することができます。ここで紹介するいくつかの推奨事項は、お客様の組織に該当しない場合があります。
トランスポート層の脆弱性は、インターネットやイントラネットに接続されているアプリケーションサーバーにとって、最も重大な脅威の 1 つです。ここでは、このような脆弱性に対してネットワーク上のホストを堅牢化する手順について説明します。具体的には、ネットワークのセグメント化、TCP/IP(Transmission Control Protocol/Internet Protocol)スタックの堅牢化、ホスト保護のためのファイアウォールの使用などの手順を取り上げます。
外部のファイアウォールを使用して、エンドユーザーによる AEM Forms パブリッシュファームへのアクセスを制限することができます。また、内部のファイアウォールを使用して、社内の他の要素(オーサーインスタンス、処理インスタンス、データベースなど)とパブリッシュファーム間のアクセスを制限することもできます。これらのファイアウォールでは、エンドユーザーや組織内の各要素に、AEM Forms の一部の URL に対するアクセスを許可することができます。
外部のファイアウォールを設定することにより、AEM Forms の特定の URL に対して、インターネットへのアクセスを許可することができます。これらの URL にアクセスするには、アダプティブフォーム、HTML5 フォーム、Correspondence Management レターを入力するか(またはこれらを送信するか)、AEM Forms サーバーにログインする必要があります。
コンポーネント | URI |
アダプティブフォーム |
|
HTML5 のフォーム |
|
Correspondence Management |
|
Forms ポータル |
|
AEM Forms アプリケーション |
|
内部のファイアウォールを設定することにより、特定の AEM Forms コンポーネント(オーサーインスタンス、処理インスタンス、データベースなど)に対して、パブリッシュファームや、トポロジーダイアグラムに記述されている他の内部コンポーネントとの通信を許可することができます。
ホスト |
URI |
パブリッシュファーム(パブリッシュノード) | /bin/receive |
処理サーバー | /content/forms/fp/* |
Forms ワークフローのアドオンサーバー(JEE サーバー上の AEM Forms) | /soap/sdk |
パブリッシュノード上で使用可能なアセットには、デフォルトですべてのユーザーがアクセスすることができます。すべてのアセットで、読み取り専用アクセス権が有効になっています。匿名アクセスを有効にするには、読み取り専用アクセス権が必要になります。フォームの表示アクセス権と送信アクセス権を認証済みユーザーだけに制限する場合は、共通グループを使用して、パブリッシュノード上で使用可能なアセットに対する読み取り専用アクセス権を、認証ユーザーに対してのみ付与します。以下に示す場所(ディレクトリ)には、保護する必要があるフォームアセットが保管されています。これらのアセットには、認証済みユーザーに対する読み取り専用アクセス権が設定されています。
AEM Forms では、事前に定義された場所と一時フォルダーにデータが保管されます。これらのデータを保護して、データの不正使用を防ぐ必要があります。
ファイルの添付、コンポーネントの検証、コンポーネントのプレビュー用のフォームを設定すると、対応するデータが、/tmp/fd/ のパブリッシュノードに保管されます。これらのデータは定期的に削除されます。デフォルトのデータ削除ジョブを変更して、データの削除間隔を短くすることができます。スケジュール設定されているデータ削除ジョブを変更するには、AEM Web コンソールを開いて AEM Forms 一時ストレージクリーニングタスクを起動し、Cron 式を変更します。
上記のシナリオの場合、認証済みユーザーのデータだけが保存されます。また、アクセス制御リスト(ACL)によってデータが保護されます。そのため、データの削除間隔を短くすると、データの保護をさらに強化することができます。
デフォルトでは、アダプティブフォームのフォームポータル送信アクションを実行すると、パブリッシュノードのローカルレポジトリにデータが保存されます。このデータは、/content/forms/fp に保存されます。パブリッシュインスタンスにデータを保存することはお勧めしません。
ストレージサービスを設定して、データを有線で処理クラスターに送信することができます。ローカルのパブリッシュノード上にデータを保存する必要はありません。処理クラスターは、プライベートファイアウォールによって保護された安全な場所に配置されているため、データのセキュリティを確保することができます。
パブリッシュノードから処理サーバーにデータをポストするには、AEM DS 設定サービスに対する処理サーバーの資格情報を使用します。処理サーバーのリポジトリに対する読み取りアクセス権と書き込みアクセス権が設定された、権限が制限されている非管理者ユーザーの資格情報を使用することをお勧めします。詳細情報に関しては、ドラフトと送信に使用するストレージサービスの設定を参照してください。
最低限必要な権限だけが設定されているユーザーアカウントを使用して、フォームデータモデル(FDM)のデータソースを設定してください。管理者権限が設定されているアカウントを使用すると、認証されていないユーザーがメタデータとスキーマエンティティにアクセスする可能性があります。
データを統合して、FDM サービス要求を認証する方法を提供することもできます。実行前と実行後の認証メカニズムを挿入して、サービス要求を検証することができます。サービス要求は、フォームの事前入力時、フォームの送信時、ルールを使用したサービスの呼び出し時に生成されます。
処理前認証機能:処理前認証機能を使用すると、要求を実行する前に、その要求の妥当性を検証することができます。入力、サービス、要求の詳細情報を使用して、要求の実行を許可するか停止するかを選択することができます。実行を停止する場合は、データ統合例外として OPERATION_ACCESS_DENIED を返すことができます。また、クライアント要求を実行用として送信する前に、その要求を変更することもできます。例えば、入力を変更して追加情報を指定することができます。
処理後認証機能:処理後認証機能を使用すると、実行結果を要求者に返す前に、その結果の検証と制御を行うことができます。また、実行結果のフィルタリングやプルーニング、実行結果に対する追加データの挿入を行うこともできます。
オーサーインスタンス、パブリッシュインスタンス、処理インスタンスに対して、それぞれ異なるユーザー役割を設定する必要があります。いずれのインスタンスについても、管理者の資格情報を使用して実行することは避けてください。
パブリッシュインスタンスの場合:
オーサーインスタンスの場合:
各役割に対して、特定の権限が設定された異なる事前定義グループのセットが用意されています。ユーザーを各グループに割り当ててください。
forms-user グループに属しているユーザーの権限は、以下のようになっています。
forms-power-user グループに属しているユーザーは、すべてのタイプのフォームについて、作成、入力、発行、送信を行うことができます。また、アダプティブフォームのスクリプトの作成と、XDP が含まれているパッケージのインポートも実行することができます。
template-authors グループと template-power-user グループに属しているユーザーは、テンプレートのプレビューと作成を行うことができます。
fdm-authors グループに属しているユーザーは、フォームデータモデルの作成と変更を行うことができます。
cm-user-agent グループに属しているユーザーは、Correspondence Management レターの作成、プレビュー、発行を行うことができます。
workflow-editors グループに属しているユーザーは、インボックスアプリケーションとワークフローモデルを作成することができます。
処理インスタンスの場合:
通常、処理クラスタと Forms ワークフローアドオン(JEE 上の AEM Forms)は、ファイアウォールの背後で稼働します。そのため、これらのクラスタとアドオンのセキュリティは確保されています。いくつかの手順を実行することにより、こうした環境のセキュリティをさらに強化することができます。
処理クラスターはオーサーモードで稼働しますが、開発作業で処理クラスターを使用しないでください。また、一般ユーザーを、処理クラスターの content-authors グループや form-users グループに追加しないでください。
以下に示す「AEM セキュリティチェックリスト」には、AEM Forms 環境のセキュリティを確保するための手順が記載されています。デプロイメントを行う際に、ベースとなる AEM インストール環境のセキュリティを確保する必要があります。詳しい手順については、「AEM セキュリティチェックリスト」を参照してください。