ウォークスルー: SQL Server に格納されたユーザとロールのセキュリティの実装
このウォークスルーでは、Web アプリケーションと GIS サービスのセキュリティを実装する方法を示します。このウォークスルーでは、ユーザとロールは Microsoft SQL Server Express データベースに格納されています。SQL Server は、ユーザとロールを格納するためのさまざまな場所の 1 つです。このオプションは、ユーザがインターネット経由でサーバにアクセスするときによく使用されますが、ローカル ネットワークでも使用することができます。
ここでは、必要に応じて SQL Server Express をインストールし、Manager でユーザとロールの場所を設定し、Web アプリケーションと GIS Web サービスの権限を設定し、GIS Web サービスのセキュリティを有効にします。
ここでは、GIS Web サービスのセキュリティを有効にします。サービスのセキュリティを有効にした後は、すべてのサービスの権限を管理する必要があります。権限を継続的に管理する準備が整うまで、セキュリティを有効にしないでください。
ここでの手順は次のとおりです。
- 必要なコンポーネントのインストール
- Manager でのユーザとロールの格納場所の設定
- ユーザとロールの追加
- Web アプリケーションへのセキュリティの適用
- GIS Web サービスの権限の設定
- GIS Web サービスへのセキュリティの適用
必要なコンポーネントのインストール
以下の手順を実行する前に、次に示す 2 つのアイテムのどちらか 1 つまたは両方をインストールする必要があるかもしれません。
- SQL Server Express: Microsoft SQL Server Express がまだインストールされていない(またはインストールされているかどうかわからない)場合は、「Microsoft SQL Server 2008 Express のインストール」の手順に従います。そのセクションだけを実行し、その後のセクションは実行しないでください。作業が完了したら、このページに戻って手順を続行します。
- SSL 証明書: セキュリティで保護された GIS Web サービスにアクセスするためには、Web サーバが HTTPS の使用をサポートする必要があります。そのためには、Web サーバに SSL(Secure Sockets Layer)証明書がインストールされている必要があります。SSL 証明書がインストールされているかどうかわからない場合は、「SSL 証明書がインストールされているかどうかの判定」の手順に従います。証明書がインストールされていない場合は、次のいずれかを実行する必要があります。
- 認証機関に証明書をリクエストする。このオプションは、アプリケーションまたはサービスをクライアントに提供するために、プロダクション Web サーバまたは公開されている Web サーバを使用する場合に適しています。詳細については、「認証機関からの SSL 証明書の取得とインストール」をご参照ください。
- ローカルで使用するための独自の証明書を作成します。このオプションは、開発またはテスト目的にのみ適しています。詳細および手順については、「自己署名 SLL 証明書の使用」をご参照ください。
- SSL の要件を無効にします。このオプションは、開発コンピュータにのみ適しています。ArcGIS Server とともにインストールされるトークン サービスは HTTPS を必要としません。パスワードはネットワーク上を平文(テキスト)で流れるため、ネットワークにアクセスできる何者かに傍受されるおそれがあります。ログイン情報がセキュリティで保護されずに送信されることをクライアントがユーザに警告することもあります。このオプションを使用するには、「トークン サービスに必要なセキュリティで保護された接続(HTTPS/SSL)」をご参照ください。
Manager でのユーザとロールの格納場所の設定
必要なコンポーネントをインストールしたら、Manager を使用して、SQL Server Express をユーザおよびロールの格納場所として設定します。
- ArcGIS Server Manager を起動してログインします。
- Manager で [セキュリティ] パネルを展開し、[設定] をクリックします。
-
[構成] リンクをクリックします。
- [ユーザの格納場所] ダイアログ ボックスで [SQL Server] を選択します。[次へ] をクリックします。
-
SQL Server の設定を指定するダイアログ ボックスで、[サーバ] テキスト ボックスにデータベース サーバの名前を入力します。
ローカル コンピュータに SQL Server Express がインストールされている場合は、「localhost」を使用することができます。SQL Server Express の場合は、localhost\SQLEXPRESS のように、名前の最後に「\SQLEXPRESS」を追加します。
注意:デフォルトの SQL Server Express インスタンス名を変更した場合は、変更したインスタンス名に SQLEXPRESS を置き換えます。
-
[接続] をクリックして、利用可能なデータベースとオプションのリストを表示します。
接続に失敗した場合は、データベース サーバが稼動していてネットワーク上で利用できることと、Manager にログインするために使用したアカウントに SQL Server の管理が許可されていることを確認してください。
- 必要に応じて、[信頼された接続を使用] をオンにして、ASP.NET を実行するアカウントでユーザを認証し、Windows 認証を使用してロールをチェックできるようにします。SQL Server を混合認証モードで構成し、SQL データベースへのログインを必須にする場合は、[信頼された接続を使用] をオフにすることもできます。可能な限り、信頼された接続を使用することをお勧めします。
- [新規データベースの作成] をクリックして、名前(aspnetdb など)を入力します。[データベースに Everyone、Anonymous、Authenticated Users のロールを追加します] がオンになっていることを確認します。[次へ] をクリックします。
- パスワードの復旧に関するパネルでは、オプションのチェックを外したままにしておきます。必要であれば、後からウィザードを再実行し、パスワードの復旧に必要なメール サーバの設定を入力することができます。[完了] をクリックします。ウィザードが終了し、[場所] ボックスに [SQL Server ユーザとロール] が表示されます。
サービスのセキュリティが [無効] に設定されていることを確認します。この時点では、セキュリティを有効にしないでください。このウォークスルーの最後のステップでセキュリティを有効にします。セキュリティを有効にするのが最後のステップである理由は、まず最初に Web サービスの権限を設定する必要があるからです。セキュリティを有効にすると、GIS Web サービスにアクセスできるのは、アクセスが許可されたロールを持つユーザのみになります。
ユーザとロールの追加
アプリケーションまたはサービスへの権限を割り当てる前に、ユーザとロールを追加する必要があります。
-
Manager で [セキュリティ] タブをクリックし、[設定] をクリックします。上記の手順に従ってデータベースを作成したばかりである場合、ユーザはまったく表示されません。
- [ユーザ] パネルで [ユーザの追加] リンクをクリックし、新しいユーザを追加するためのダイアログ ボックスを表示します。
-
新しいユーザの情報を入力します。次に例を示しますが、各自の環境に合わせてユーザ設定を入力してください。
- ユーザ名: staff1
- パスワード: staff1$
- 電子メール: staff1@yourcompany.com
- セキュリティの質問: 最初に飼ったペットの名前は?
- セキュリティの答え: Fido
注意:デフォルトでは、パスワードは 7 文字以上で、少なくとも 1 文字が英数字以外の文字(@、#、$、% など、ただし & を除く)でなければなりません。
- ロールはまだ設定されていないので、その部分は空白にしておきます。[ユーザの追加] をクリックして新しいユーザを追加します。Manager の [ユーザ] リスト ページに戻ると、新しいユーザが表示されます。
- engineer1 などの別のユーザを追加します。パスワードなどは、個別の値を指定します。必要に応じて、この時点でユーザをさらに追加します。
-
[セキュリティ] セクションの [ロール] リンクをクリックします。ロールはまだ存在していません。
- [ロール] パネルで [ロールの追加] リンクをクリックし、新しいロールを追加するためのダイアログ ボックスを表示します。
-
ロールの名前(Staff など)を入力します。staff1 など、前に作成したユーザをハイライト表示し、[追加] ボタンをクリックして [ロール メンバ] リストに追加します。
- [ロールの追加] をクリックしてロールを追加し、[ロール] リストに戻ります。新しいロールがリストに表示されます。
-
ロールをもう 1 つ(Engineers など)作成し、前に作成した 2 つ目のユーザをこのロールに追加します。
ロール リストを展開すると、ロールのメンバを表示することができます。
- 必要に応じて、ユーザとロールをさらに追加します。各ユーザを少なくとも 1 つのロールに追加します。サービスとアプリケーションの権限は個々のユーザではなくロールに基づきます。
Web アプリケーションへのセキュリティの適用
次に、割り当てたロールへのアクセスを制限することにより、Web アプリケーションをセキュリティで保護します。
-
Manager で新しい Web アプリケーションを作成します。
アプリケーションがマップ サービスだけで構成されるシンプルなもので、追加のツールやタスクを持たないことがあります。アプリケーションを作成する必要がある場合は、「チュートリアル: Web アプリケーションの作成」をご参照ください。既存のアプリケーションを使用することもできますが、このウォークスルーを実行する間、アプリケーションのユーザはすべて、アクセスが許可されたロールのメンバとしてログインする必要があります。
- ユーザは Web ページのフォームを使ってログインするため、ログイン情報を保護するために、ユーザに HTTPS を使ってアプリケーションに接続することを要求することができます。これが可能となるのは、「必要なコンポーネント」で説明したように、SSL 証明書をインストールしている場合だけです。Manager でアプリケーションを作成するときに、ウィザードの最初のパネルの [高度なオプション] で HTTPS を選択することにより、アプリケーションの URL として HTTPS を指定することができます。
-
Manager の [アプリケーション] タブをクリックして、Web アプリケーションのリストを表示します。セキュリティで保護するアプリケーションをリストから選択します。
[権限] 列に、鍵のかかっていないアイコン が表示されていることに注目してください。これはアプリケーションが制限されていないことを示すため、現時点では、ユーザはログインを要求されません。
- 鍵のかかっていないアイコン をクリックして、Web アプリケーションの [権限] ダイアログ ボックスを表示します。
- [この Web アプリケーションのセキュリティを有効化] チェックボックスをオンにします。これにより、アクセスが許可されたロールのリストが有効になります。
-
[利用可能なロール] リストで Staff ロール(または先に追加した他のロール)をハイライト表示します。[追加] ボタンをクリックして [許可するロール] のリストに追加します。
- [保存] をクリックして権限を保存し、アプリケーションのリストに戻ります。アイコンが鍵のかかった状態 に変化し、アプリケーションにアクセスするためにはログインが必要であることを示します。
-
Web アプリケーションのリストで URL ハイパーリンクをクリックし、アプリケーションをテストします。
アプリケーションが新しいブラウザ ウィンドウで表示され、ログイン ページへリダイレクトされます。アクセスが許可されたロールに属しているユーザ(たとえば先に追加した staff1 ユーザ)のユーザ名とパスワードを入力します。ログインに成功すると、アプリケーションは ArcGIS Server Web アプリケーション ページを表示します。
-
Web アプリケーション ページの [ログアウト] リンクをクリックします。
アプリケーションの [ログイン] ページに戻ります。必要に応じて、ロール メンバーシップに基づいてアクセスが許可されていない別のユーザ ログインでログインを試みます。ユーザはアプリケーションにログインできないはずです。アプリケーションを閉じて Manager に戻ります。
GIS Web サービスの権限の設定
Web アプリケーションをセキュリティで保護することに加えて、Manager を使って GIS Web サービスへのアクセスを制限することもできます。ここでは、サービスの権限を設定する方法を示します。これらの権限は、セキュリティをサービスに適用するこの後の手順を実行するまで、実際には適用されません。このワークフローでは、サービスの権限を設定してセキュリティを適用することで、セキュリティ プロセスを通じてユーザが引き続きサービスにアクセスできるようにします。
デフォルトでは、ログインしなくてもサービスにアクセスできるようにセキュリティを設定します。その後、いくつかのサービスでログインを要求するように設定します。そのためには、フォルダへのアクセスを指定されたロールに制限します。この方法は、セキュリティで保護されたサービスと公開されたサービスが混在するサイトに適しているかもしれません。組織内のすべてのサービスでログインを要求したい場合は、次に説明するものとは別の方法を使用することをお勧めします。
- Manager で、サービスの ルート フォルダにサービスが少なくとも 1 つ存在することを確認します。サービスが存在しない場合は、サービスを追加します。サービスの作成については、「チュートリアル: マップ サービスの公開」をご参照ください。
-
[フォルダ管理] をクリックし、ドロップダウン リストで [追加] をクリックして、サーバのサービスにフォルダを追加します。
[フォルダの追加] テキスト ボックスにフォルダ名(SecureServices など)を入力します。[OK] をクリックして、フォルダを追加します。
- サービスを新しいフォルダに追加します。[GIS リソースの公開] を使ってサービスを追加し、サービスの格納場所として SecureServices フォルダを指定します([新規サービスを追加] ウィザードを使用することもできますが、[場所] リストに SecureServices フォルダが表示されていることを確認してください。また、ArcCatalog を使ってサービスを追加することもできます)。必要であれば、ウォークスルーが終了した後にサービスとフォルダを削除することができます。
- ルート フォルダの権限を設定して、ユーザがログイン情報を提供するかどうかにかかわらず、誰でもサービスにアクセスできるようにします。この方法は、デフォルトですべてのユーザを許可し、特定のサービスまたはフォルダで有効なログイン情報を要求するようにしたい場合に適しています。権限を設定するには、[場所] ボックスに「<サーバ名> (ルート)」が表示されていることを確認します。<サーバ名> はサーバのコンピュータ名です(必要に応じて、ドロップダウン リストをクリックして、このアイテムを選択します)。[フォルダ管理] をクリックし、ドロップダウン リストで [権限] を選択します(上の図をご参照ください)。[権限] ダイアログ ボックスにフォルダ名(この場合はルート)が表示されます。
-
[権限] ダイアログ ボックスで Everyone ロールを選択し、[追加] をクリックします。
Everyone ロールが [許可するロール] リストへ移動します。Everyone には、ログイン情報を提供するかどうかにかかわらずすべてのユーザが含まれるため、他のロールを追加する必要はありません。サービスのセキュリティが有効でないことを示す警告に注目してください。この後でセキュリティを有効にします。[保存] をクリックして権限リストを保存します。
- 先に作成したフォルダの権限を制限します。[場所] リストでフォルダ(SecureServices)を選択し、[フォルダ管理] をクリックして、[権限] をクリックします。
- [権限] ダイアログ ボックスの [許可するロール] リストで [Everyone] ロールをクリックし、[削除] をクリックします。ロールが [利用可能なロール] リストへ移動します。
- 次に、許可するロール(Staff など)をクリックします。必要に応じて、複数のロールを追加します。[保存] をクリックして権限リストを保存します。
これでサービスの権限が設定されました。ただし、セキュリティはまだ適用されません。つまり、この時点では、すべてのユーザがログイン情報を提供せずに SecureServices フォルダ内のサービスにアクセスできます。次のセクションでは、セキュリティを有効にし、これまでに設定したアクセス権限を適用します。
GIS Web サービスへのセキュリティの適用
GIS Web サービスをセキュリティで保護するための最後の手順は、サービスにセキュリティを適用することです。ここでは、GIS Web サービスを制限し、アクセスが許可されたロールに属しているユーザだけがサービスにアクセスできるようにします。この手順を実行するまでは、ここまでに適用した権限は実際には効力を持たず、誰でもサービスにアクセスできます。先に説明したように、権限を設定するまではこの手順を実行しないでください。
警告:サービスのセキュリティを一度有効にしたら、Manager でセキュリティを無効にすることはできません(必要に応じて、ArcGIS Server ヘルプのセキュリティを手動で無効にする方法をご参照ください)。サービスのセキュリティは一方向のプロセスです。GIS Web サービスのセキュリティを有効にする準備ができていない場合は、このセクションをスキップして次のセクションに進んでください。
- Manager で [セキュリティ] タブをクリックし、[設定] をクリックします。
-
[セキュリティ設定] パネルの [GIS サービスのセキュリティ] に表示されている情報を読んでください。ArcGIS Server をインストールしている場合は、セキュリティが [無効] に設定されています。
- [有効] をクリックします。サービスのセキュリティを有効にする前に権限を設定するように警告するメッセージが表示されます。[サービスのセキュリティを有効化] ボタンをクリックして確認します。[セキュリティ設定] パネルに戻り、セキュリティが有効であることが示されます。
- Manager で [サービス] タブをクリックします。サービスのリストにおいて、アイコンが鍵のかかった状態 で表示されます。赤い感嘆符(!)の付いたアイコン が表示されている場合は、サービスの権限リストが空であることを示します。これらのサービスには、各サービスの [許可するロール] リストにロールが少なくとも 1 つ追加されるまで、どのユーザもアクセスできません。
- サービスのセキュリティが有効であることを確認するには、ArcCatalog を使ってサービスに接続します。ローカル コンピュータまたは ArcGIS Server の Web サーバにアクセスできるコンピュータで ArcCatalog を起動します。
- ArcCatalog のカタログ ツリーで [GIS Servers] ノードを展開します。[ArcGIS Server サーバを追加] アイテムをダブルクリックします。
- [ArcGIS Server サーバを追加] ダイアログ ボックスで [GIS サービスの使用] をクリックします。[次へ] をクリックします。
- 次のパネルで、接続タイプとして [インターネット] をクリックし、サーバの URL(たとえば http://myserver/arcgis/services)を入力します。この接続では、[認証] セクションは空のままにしておきます。[完了] をクリックします。ダイアログ ボックスが閉じ、[GIS Servers] リストに新しい接続(たとえば arcgis on myserver)が表示されます。
- このノードを展開します。サーバのルートにサービスが表示されます。ただし、先の設定でセキュリティを適用したフォルダ(SecureServices)は表示されません。Everyone ロールにはルート フォルダへのアクセスが許可されているので、ルート内のサービスとその設定を上書きしていないフォルダはすべて、ログインを要求することなくすべてのユーザに表示されます。適切なログインで接続していないので、この接続では SecureServices フォルダは提供されません。
-
手順 6 ~ 8 を繰り返して、ArcCatalog で別の GIS サーバ接続を追加します。同じサーバ URL を入力しますが、手順 8 では、接続ダイアログの [認証] セクションでユーザ名とパスワードを入力します。SecureServices フォルダの使用が許可されているロールのユーザ(staff1 など)に対して、先ほど作成したログインを使用します。[完了] をクリックして接続を追加します。
- この接続(たとえば arcgis on myserver (2))を展開します。SecureServices フォルダが表示され、Everyone にアクセスが許可されているサービスとフォルダが表示されます。
- 終了したら、Manager と ArcCatalog を閉じます。
これで Web サービスがセキュリティで保護されます。特定のロールにアクセスが許可されているサービスは、そのロールに属しているユーザにのみ提供されます。ここまで説明してきたように、サービスまたはサービスを含んでいるフォルダへのアクセスが許可されているロールのリストに Everyone ロールを追加すると、ログイン情報を提供しないユーザにサービスを公開することができます。
セキュリティで保護されたサービスは、ArcGIS Desktop、Web ADF アプリケーション、JavaScript API アプリケーションなど、さまざまなクライアントで使用することができます。セキュリティで保護されたサービスを Web ADF アプリケーションに追加するには、新しい ArcGIS Server Internet 接続を追加し、Manager または Visual Studio の接続ダイアログの [セキュア サービスへのアクセス] に適切なユーザ名とパスワードを入力します。
必要であれば、ここで作成したサービス、フォルダ、ユーザ、ロールを削除することができます。サービスのセキュリティを一度有効にしたら、すべてのフォルダとサービスの権限を管理しなければならないことに注意してください。サービスを追加しただけで、アクセスが許可されるロールを追加していない場合は、すべてのユーザがサービスにアクセスできなくなります(この問題を知らせるために警告アイコン が表示されます)。少なくともデフォルトの権限が設定されるようにする方法の 1 つは、ルートまたはサブフォルダでサービスを含んでいるフォルダに権限を追加することです。サービスはそのサービスを含んでいるフォルダの権限を継承するため、サービスのセキュリティ設定が容易になります。