ArcGIS Server をセキュリティで保護する場合は、ArcGIS Server を実行する環境を保護することも重要です。 セキュリティを最大限に高めるためのベスト プラクティスについて説明します。
独自のサーバー証明書の要求と構成
ArcGIS Server には、自己署名証明書が事前に構成されています。これを使用してサーバーで初期テストを行い、インストールが成功したことをすばやく確認できます。 ただし、ほとんどの場合、組織では、信頼された認証機関 (CA) からの証明書を要求し、それを使用するようにサーバーを構成しています。 これには、組織が発行したドメイン証明書または CA 署名証明書を使用できます。
ArcGIS Server と同様に、ArcGIS Enterprise ポータルにも事前に自己署名証明書が付属しています。 サイトをポータルとフェデレートする場合は、信頼された CA に証明書を要求し、それを使用するようにポータルを構成する必要があります。
信頼された認証機関からの証明書を構成することによって、Web ベース システムを安全に保護し、ブラウザーの警告メッセージなどの予期しない動作が発生するのを防ぎます。 ArcGIS Server と ArcGIS Enterprise ポータルに付属する自己署名証明書をテスト中に使用する場合、以下の状況が生じます。
- 信頼されないサイトに関して Web ブラウザー、ArcGIS Desktop、または ArcGIS Pro から警告メッセージが表示されます。 Web ブラウザーは、自己署名証明書を検出すると、通常は警告を表示し、そのサイトに移動するか確認します。 多くのブラウザーは、自己署名証明書を使用した場合、アドレス バーに警告アイコンや赤色を表示します。
- フェデレーション サービスをポータルの Map Viewer または Map Viewer Classic で開くこと、セキュリティ保護されたサービス アイテムをポータルに追加すること、フェデレーション サーバー上で ArcGIS Server Manager にサイン インすること、または ArcGIS for Office からポータルに接続することはできません。
- ユーティリティ サービスを構成するとき、ホストされたサービスを印刷するとき、およびクライアント アプリケーションからポータルにアクセスするときに、予期しない動作が発生します。
注意:
上記の問題のリストは、自己署名証明書を使用したときに発生するすべての事象を網羅しているわけではありません。 CA 署名証明を使用してポータルを完全にテストしてから配置することは不可欠です。
CA 署名証明書を使用した ArcGIS Enterprise の構成方法については、以下のトピックをご参照ください。
クロスサイト スクリプティング攻撃のスキャン
クロスサイト スクリプティング (XSS) 攻撃は、コードを既存の Web ページに挿入して実行します。 多くの場合、攻撃者は被害者を欺いて、攻撃者が提供するデータまたは入力を使ってそのページを開かせます。 ArcGIS Server サイトでは、その入力またはデータは、フィーチャ サービスから返されるフィーチャです。
ArcGIS Server は、フィーチャが潜在的な XSS 攻撃を受けていないかスキャンできます。 フィーチャがフィーチャを通じて追加または更新された場合とそれらのフィーチャがクライアント アプリケーションに送信された場合にもフィーチャをスキャンできます。 ただし、フィーチャ内の悪意のあるコードをスキャンすると、誤検知につながるか、HTML ポップアップの機能に含まれている正規の HTML を無効化する可能性があります。 スキャン動作は、サービスごとに構成できます。
デフォルトでは、サービスが作成されると、通常は編集をスキャンし、潜在的なスクリプトを検出してブロックするように構成されますが、フィーチャ サービスから取得されたフィーチャはスキャンしません。 攻撃者は、SQL を通じてデータベースを直接編集するなど、スキャンされない方法でフィーチャを編集することにより、この編集のスキャンを回避する可能性があります。 最も安全な方法は、すべてのフィーチャをスキャンするようにサービスを構成することです。 スクリプトから取得されるすべてのフィーチャをスキャンすると、パフォーマンスが低下する可能性がありますが、これがセキュリティに関するベスト プラクティスです。
個々のサービスごとに値を変更すると管理が困難になるため、featureServiceXSSFilter プロパティを使用してデフォルト値を定義する方法をお勧めします。 このシステム プロパティは、サービスを作成する場合に使用されます。 既存のサービスに対しては効果がなく、サービスが作成された後に上書きできます。
このシステム プロパティを設定するには、ArcGIS Server Administrator Directory にサイン インして、[System] > [Properties] の順にクリックします。 プロパティは JSON オブジェクトで表されます。 既存の JSON オブジェクトをコピーして、その既存の JSON オブジェクトに featureServiceXSSFilter プロパティを追加することで修正します。
featureServiceXSSFilter プロパティは、input または inputOutput のいずれかに設定できます。 input 値がデフォルトです。この値は、編集をスキャンするように新しいフィーチャ サービスを構成するよう ArcGIS Server に指示します。 inputOutput 値は、編集と返されたフィーチャをスキャンするように新しいフィーチャ サービスを構成するよう ArcGIS Server に指示します。
特定のサービスの設定を上書きするには、ArcGIS Server Administrator Directory を使用して、特定のサービスを検索し、編集する必要があります。 個別のフィーチャ サービスごとに使用される 3 つのプロパティは次のとおりです。
- xssPreventionEnabled は、フィーチャ内のスクリプトとコードのスキャンを有効にします。 これを true に設定します。
- xssPreventionRule は、input または inputOutput に設定できます。 編集は常にスキャンされますが、出力されるフィーチャは、inputOutput が値の場合にのみスクリプトがスキャンされます。 これは、システム全体の featureServiceXSSFilter プロパティを上書きします。
- xssInputRule は、コードが検出された場合の応答を指定します。 オプションは、rejectInvalid または sanitizeInvalid です。 rejectInvalid 値はデフォルトであり、これをお勧めします。
ファイル権限の制限
ファイル権限を設定して、ArcGIS Server のインストール ディレクトリ、構成ストア、およびサーバー ディレクトリに、必要なアクセス権だけが付与されるようにします。 ArcGIS Server ソフトウェアがアクセスする必要があるアカウントは、ArcGIS Server アカウントだけです。 これは、ソフトウェアを実行するために使用されているアカウントです。 組織によっては、追加のアカウントにアクセス権を付与しなければならない場合もあります。 サイトを適切に機能させるには、ArcGIS Server アカウントにインストール ディレクトリ、構成ストア、およびサーバー ディレクトリに対するフル アクセス権が必要です。
ArcGIS Server は、ファイル権限をインストール場所の親フォルダーから継承します。 また、ArcGIS Server は ArcGIS Server アカウントにアクセス権を付与して、インストールされているディレクトリにアクセスできるようにします。 ArcGIS Server の実行時に作成されたファイル (ログなど) は、親フォルダーのアクセス権を継承します。 構成ストアとサーバー ディレクトリをセキュリティで保護する場合は、制限されたアクセス権を親フォルダーに設定します。
構成ストアへの書き込みアクセスが可能なアカウントは、通常はシステム管理者だけが変更できる ArcGIS Server の設定を変更できます。 組み込みのセキュリティ ストアを使用してユーザーを保守している場合は、構成ストアにこれらのユーザーの暗号化されたパスワードが格納されています。 この場合は、構成ストアの読み取りアクセス権も制限してください。
セキュリティ保護されたマップまたはジオプロセシング サービスを使用している場合は、サーバー ディレクトリのファイル権限をロックして、権限のないアカウントがマップやジオプロセシング ジョブの出力にアクセスできないようします。
プライマリ サイト管理者アカウントの無効化
プライマリ サイト管理者アカウントは、ArcGIS Server Manager でサイトを作成するときに指定するアカウントです。 このアカウントの名前とパスワードは ArcGIS Server のみで認識されます。これはオペレーティング システムのアカウントではなく、アイデンティティ ストアのユーザー アカウントとは別に管理されます。
プライマリ サイト管理者アカウントを無効化して、アイデンティティ ストアで指定したグループまたはロール以外の方法では ArcGIS Server を管理できないようにします。 詳細な手順については、「プライマリ サイト管理者アカウントの無効化」をご参照ください。
ArcGIS トークンの生成に使用される共有鍵の定義
ArcGIS トークンは、暗号化された情報の文字列です。 共有鍵は、この暗号化された文字列を生成するための暗号鍵です。 共有鍵が複雑であるほど、悪意のあるユーザーが暗号を破って共有鍵を解読することは困難になります。 共有鍵を解読し、ArcGIS Server の暗号化アルゴリズムを複製して認証済みユーザーのリストを取得したユーザーは、トークンを生成して、その ArcGIS Server 上にあるセキュリティで保護されたリソースを利用できるようになります。
共有鍵を定義する前に、次の点を考慮してください。
- 共有鍵は 16 文字に設定する必要があります (16 文字を超える文字は使用されません)。 鍵には一連のランダムな文字を使用することが推奨されます。 英数字以外の文字を含め、あらゆる文字を使用することができます。
- 鍵には、辞書にある単語や、簡単に推測できる一般的な値を使用しないでください。 鍵を覚えておく必要や、別の場所で鍵を使用する必要はないので、鍵の複雑さがパスワードの場合のように問題になることはありません。
- トークンは、Rijndael としても知られる AES (Advanced Encryption Standard) に基づいて、共有鍵とともに暗号化されます。 鍵を構成する 16 文字は、暗号化に使用される 128 ビットを表します。 暗号化と AES の詳細については、セキュリティ リファレンスを参照するか、組織内のセキュリティや暗号に詳しい担当者に問い合わせてください。
- セキュリティ レベルが高い環境では、定期的に共有鍵を変更することをお勧めします。 共有鍵を変更した場合は、新しい共有鍵を使用するためにアプリケーションの更新が必要になる場合があることに注意してください。 共有鍵を変更すると、埋め込まれているすべての既存のトークンが無効になります。
詳細については、「ArcGIS トークンについて」をご参照ください。
グループ管理サービス アカウントの使用
ArcGIS Server サービスを実行するアカウントとしてグループ管理サービス アカウント (gMSA) を使用します。 gMSA を使用すると、定期的なパスワード更新を通じてアカウントのセキュリティを保護しながら、Active Directory ドメイン アカウントのメリットが得ることができます。
ArcMap Runtime Support 機能の無効化によるシステムからの Python 2.x の削除
Python Software Foundation は、Python 2 プログラミング言語のサポートを終了しました。 ソフトウェアのセットアップでは ArcMap ベースのサービスで Python 2.x のインストールが使用されるため、これは ArcGIS Server に影響を及ぼします。 組織でシステムに Python 2.x がインストールされていることに懸念がある場合は、ArcGIS Server 配置から Python 2.x を削除することができます。
10.9.1 では、ArcMap Runtime Support 機能を次の方法によって無効化できます。
- ArcGIS Server のインストール時に、セットアップ プログラムまたはコマンド ラインを使用
- ArcGIS Server のアップグレード時に、セットアップ プログラムまたはコマンド ラインを使用
- ArcGIS Server のインストール後に、セットアップ プログラムまたはコマンド ラインを使用してインストールを修正
注意:
ArcGIS Enterprise Builder を使用している場合は、ArcMap Runtime Support 機能がデフォルトでインストールされます。 修正オプションの 1 つを使用してこの機能を配置から削除します。
ArcMap Runtime Support 機能を無効化すると、ArcMap サービス ランタイムは ArcGIS Server に含まれず、Python 2.x はインストールされません。 Python 3.x を使用する ArcGIS Pro サービス ランタイムを使用するには、すべての ArcMap ベースのサービスを移行または再公開する必要があります。 また、関連するサービスの移行または再公開後に、ArcObjects SDK ベースのサーバー オブジェクト エクステンション (SOE) とサーバー オブジェクト インターセプター (SOI) を再作成して、ArcGIS Enterprise SDK を使用する必要もあります。 さらに、Python 2.x スクリプトとツールを、Python 3.x 構文を使用するように更新する必要もあります。
注意:
ArcMap ベースのフィーチャ サービスを公開し、管理されたデータベースにデータがコピーされている場合、ArcMap Runtime Support 機能が無効の状態でサービスを削除すると、コピーされたデータが管理されたデータベースから削除されません。
ArcGIS Enterprise 10.9.1 は、ArcMap ベースのサービスをサポートする最後のリリースです。 これより後のリリースでは、ArcMap のサービス (ArcPy ベースの ArcMap サービスを含む) を ArcGIS Server サイトで公開したり、使用したりすることができなくなります。 ArcGIS Server の新しいリリースへのアップグレード時に存在した場合、ArcMap サービス ランタイムを使用するサービスは実行できなくなります。 このため、Esri では、できる限り早急に ArcGIS Pro ベースのサービスと Python 3.x に移行することをお勧めします。
現在実行中の 10.9.1 より前のバージョンで ArcGIS Pro ベースのサービスと Python 3.x に移行し、ArcMap Runtime をインストールせずに 10.9.1 にアップグレードしてから、移行が成功したことを検証することができます。 また、10.9.1 で ArcMap Runtime Support 機能をインストールし、その後、ArcGIS Pro ベースのサービスとカスタム ソリューションが移行された時点でこの機能を削除することもできます。 移行プロセス中に必要なことがわかったら、10.9.1 の配置で ArcMap Runtime Support 機能を再有効化できます。
ArcGIS トークンのセキュリティで保護された転送
トークンの傍受と悪用を避けるために、HTTPS を使用する安全な接続を使用します。 HTTPS を使用することで、クライアントから送信されたユーザー名とパスワードと、ArcGIS Server から返されたトークンが傍受されなくなります。 詳細については、「ArcGIS Server 通信のセキュリティ保護」をご参照ください。
GET リクエストを使用して ArcGIS トークンベースの認証でセキュリティ保護された Web サービスにアクセスするカスタム ArcGIS クライアント アプリケーションを構築する場合、クエリ パラメーターの代わりに X-Esri-Authorization ヘッダーでトークンを送信します。 これにより、プロキシ、ゲートウェイ、ロード バランサーなどのネットワーク上の中継機器がトークンを取得できないようにします。 下記の HTTP GET リクエストの例では、X-Esri-Authorization ヘッダーでトークンを送信します。GET https://arcgis.mydomain.com/arcgis/rest/services/SampleWorldCities/MapServer?f=pjson HTTP/1.1
Host: arcgis.mydomain.com
X-Esri-Authorization: Bearer xMTuPSYpAbj85TVfbZcVU7td8bMBlDKuSVkM3FAx7zO1MYD0zDam1VR3Cm-ZbFo-
ArcGIS Server が Web 層認証 (IWA、HTTP BASIC、PKI など) ではなく ArcGIS Server 認証を使用している場合、X-Esri-Authorization ヘッダーの代わりに標準の HTTP Authorization ヘッダーを使用できます。GET https://arcgis.mydomain.com/arcgis/rest/services/SampleWorldCities/MapServer?f=pjson HTTP/1.1
Host: arcgis.mydomain.com
Authorization: Bearer xMTuPSYpAbj85TVfbZcVU7td8bMBlDKuSVkM3FAx7zO1MYD0zDam1VR3Cm-ZbFo-
標準化されたクエリの使用
ArcGIS Server には、標準化されたクエリと呼ばれるセキュリティ オプションが含まれ、SQL インジェクション攻撃に対する優れた保護を提供しています。 このオプションはデフォルトで有効になっています。
サーバー管理者は、このセキュリティ オプションを有効のままにして、アプリケーション開発者に対しては、データベースに依存しない構文を使用する WHERE 句ステートメントを作成するように指示することをお勧めします。 このオプションを無効にすると、システムが SQL インジェクション攻撃に対して脆弱になります。
詳細については、「標準化されたクエリについて」をご参照ください。
ArcGIS Server Services Directory の無効化
ArcGIS Server Services Directory を無効化すると、サービスを参照されたり、Web 検索で見つけられたり、HTML フォームでクエリされたりする可能性を減らすことができます。 ArcGIS Server Services Directory を無効化すると、XSS 攻撃から保護することもできます。
Services Directory を無効化するかどうかは、サイトの目的と、ユーザーと開発者をそのサイトに案内する必要性の度合いによって変わります。 ArcGIS Server Services Directory を無効にした場合は、サイトで使用可能なサービスについて、他のリストやメタデータの準備が必要な場合があります。
ArcGIS Server Services Directory の無効化の詳細については、「ArcGIS Server Services Directory の無効化」をご参照ください。
ドメイン間リクエストの制限
クロス ドメインのリクエストは、多くのシステム攻撃で使用されます。 ArcGIS Server サービスの使用を、信頼できるドメイン内でホストされるアプリケーションのみに制限することをお勧めします。 詳細については、「ArcGIS Server へのクロス ドメイン リクエストの制限」をご参照ください。