SQL Server でのユーザとロールの設定

Microsoft SQL Server は、ユーザとロールを格納するための 1 つの場所です。SQL Server の完全版または SQL Server Express Edition を使用できます。SQL Server がインストールされている場合は、その SQL Server を使用してユーザとロールを格納できます。SQL Server がインストールされていなくても、次に説明するように、ArcGIS Server の Workgroup レベルには SQL Server Express が付属しています。インストールの完了後、ArcGIS Server Manager で SQL Server 内にユーザとロール用のデータベースを作成できます。ASP.NET メンバーシップとロールのための正しいスキーマを持つデータベースがすでに存在する場合は、ArcGIS Server Manager でユーザとロールを設定するときに、そのデータベースを使用できます。

ライセンスライセンス:

Microsoft SQL Server Express は、ArcGIS Server Enterprise for Microsoft .NET Framework に含まれていません

Microsoft SQL Server Express Edition のインストール

SQL Server Express は ArcGIS Server for Microsoft .NET Framework に含まれていますが(Workgroup レベルのみ)、ArcGIS Server のインストール時にはインストールされません。ArcSDE for SQL Server Express パッケージをインストールしている場合は、SQL Server Express がプロセスの一部としてインストールされています。SQL Server Express をまだインストールしていない場合は、次の手順に従って、ユーザとロールを格納するために使用するソフトウェアを設定します。SQL Server の完全版がすでにインストールされていて、ユーザとロールにそれを使用したい場合、この手順を実行する必要はありません。

手順:
  1. Microsoft SQL Server Express がインストールされていないことを確認します。
    1. [コントロール パネル][プログラムの追加と削除] の順に開きます。
    2. スクロールして「Microsoft SQL Server」のエントリを探します。エントリが存在しない場合は、[プログラムの追加と削除] を閉じて、次の手順をスキップします。
    3. このアイテムが存在する場合は、[変更] ボタンをクリックします。[Microsoft SQL Server のメンテナンス] パネルで [SQLEXPRESS: Database Engine] が表示されているかどうかを確認します。表示されていない場合、SQL Express はインストールされていません。インストールされている場合は、SQL Server をインストールするための残りの手順をスキップしてください。[プログラムの追加と削除] を閉じます。
  2. ArcGIS Server for Microsoft .NET Framework(Workgroup レベルのみ)のインストール メディアで、ArcSDE_Workgroup フォルダを開きます
  3. ArcSDE_Workgroup ディレクトリ内に、32 ビット フォルダと 64 ビット フォルダが表示されます。オペレーティング システム環境に対応したフォルダを開き、SQLEXPR.exe を実行します。たとえば、Windows Server 2008 R2 などの 64 ビット オペレーティング システムを使用している場合は、64-bit フォルダを開いて SQLEXPR.exe を実行します。SQL Server Express を Microsoft からダウンロードして直接インストールすることもできますが、ここではその手順を示しません。
  4. インストール ウィザードの指示に従って SQL Server Express をインストールします。インストール先のディレクトリや他のオプションのデフォルト設定を組織に合わせて変更します。
  5. SQL Server Express コンピュータとは別のコンピュータに ArcGIS Server をインストールする場合は、SQL Server Browser サービスが実行されていて、自動的に開始するように設定されていることを確認します。そのためには、[サービス] パネルを開き([スタート][ファイル名を指定して実行] の順にクリックし、「services.msc」と入力して Enter キーを押す)、スクロールして [SQL Server Browser] を確認します。サービスが実行されていない場合は、開始します。[スタートアップの種類][自動] でない場合は、サービスを右クリックして [プロパティ] をクリックします。[SQL Server Browser のプロパティ] ダイアログ ボックスの [一般] タブで、[スタートアップの種類][自動] に設定します。[OK] をクリックして設定を保存します。[サービス] ウィンドウを閉じます。

SQL Server をインストールして実行した後、ArcGIS Server Manager を使用してセキュリティを設定する必要があります。また、「ユーザの管理」および「ロールの管理」の説明に従って、ユーザとロールを追加する必要があります。

ユーザとロールの格納場所としての SQL Server の指定

設定ウィザードを使用してユーザとロール用の SQL Server を指定するには、SQL Server に対して、インスタンス内のすべてのデータベースを一覧表示し、必要に応じて新しいデータベースとスキーマを作成するための権限が必要です。通常、これは、ArcGIS Server Manager へのログインに使用される Windows アカウントが SQL Server のログインとしても追加され、SQL Server の [サーバーの役割]sysadmin または dbcreator ステータスが割り当てられる必要があることを意味します。このようなアカウントで ArcGIS Server Manager にログインできない場合は、後述の代替手順に従って、手動でデータベースを作成してメンバーシップ プロバイダを指定することができます。

手順:
  1. ArcGIS Server Manager にログインするためのユーザ アカウントが、SQL Server インスタンスにデータベースを作成する権限を持っていることを確認します。通常、SQL Server Express を使用しており、ユーザがコンピュータの管理者で、ArcGIS Server Manager と SQL Server が同じコンピュータ上に存在する場合は、この権限がすでに設定されています。権限が設定されていない場合は、SQL Server Management Studio アプリケーションを使用して、SQL Server のインスタンス レベルでこのアカウントをログインとして追加し、[サーバーの役割] リストでこのログインに sysadmin または dbcreatorlist ステータスを割り当てます。ArcGIS Server Manager から SQL Server への接続では、SQL データベース ログインではなく、Windows 認証を使用します。
  2. ArcGIS Server Manager を起動し、[セキュリティ] タブを展開し、[設定] をクリックします。
  3. [構成] リンクをクリックします。
  4. 表示される [ユーザの格納場所] ダイアログ ボックスで、[SQL Server] を選択します。[次へ] をクリックします。
  5. SQL Server の設定を指定するダイアログ ボックスで、[サーバ] テキスト ボックスにデータベース サーバの名前を入力します。SQL Server Express を使用している場合は、名前の末尾に \SQLEXPRESS を追加します(または、SQL Server Express のインストール時に別のインスタンス名を使用した場合は、該当するインスタンス名を使用します)。
  6. [接続] をクリックして、利用可能なデータベースとオプションのリストを表示します。
    • 接続に失敗し、「Login failed for user \'<user name>\'(ユーザ \'<ユーザ名>\' のログインに失敗しました)」や「Login failed for user \'\', The user is not associated with a trusted SQL Server connection.(ユーザ \'\' のログインに失敗しました。ユーザは信頼された SQL Server 接続に関連付けられていません。)」のようなメッセージが表示される場合は、ArcGIS Server Manager にログインするためのアカウントが、SQL Server インスタンス上のデータベースに接続して管理する権限を持っていることを確認します。他のエラーが発生した場合は、データベース サーバが動作していて、ネットワーク上で利用可能なことを確認してください。
  7. 接続に成功した後、[信頼された接続を使用] オプションを使用して、ArcGIS Server Web サービスを含むアプリケーションが SQL Server データベースに接続する方法を定義します。この接続は、ArcGIS Server Manager でのユーザとロールの作成および編集にも使用されます。そのオプションを選択した場合、このアカウントは、データベースの作成に使用されず、ユーザとロールを格納するためのテーブルの作成にも使用されないことに注意してください。その代わり、ArcGIS Server Manager を起動するためのアカウントが、データベースとテーブルのスキーマの作成に使用されます。
    • [信頼された接続を使用]オンの場合、アプリケーションは Windows 認証を使用して SQL Server に接続します。これは SQL Server Express の標準方式ですが、SQL Server の完全版にも使用できます。この場合、Web アプリケーションを実行するアカウントを使用して、データベースに接続します。ほとんどの場合、これは ASP.NET プロセスを実行するアカウントです。Windows 2000 および XP では、これは通常 ASPNET アカウントです。Windows Server 2003、Windows Vista、Windows Server 2008 では、これは通常 Network Service アカウントで、Windows 7 および Windows Server 2008 R2 では、ArcGISServicesAppPool というアプリケーション プール アイデンティティです(アプリケーション プールと同じ名前)。ArcGIS Server Manager は、ウィザードの終了時に必要に応じて、このアカウントを SQL Server ログインに追加します。ArcGIS インスタンスが IIS アプリケーション プール内の固定アイデンティティで実行するように設定されている場合は、そのユーザ アカウントに SQL Server データベースに対する権限(最低でも Membership_FullAccess および Roles_FullAccess ロール メンバーシップ)を割り当てなければならないことがあります。ArcGIS Server インスタンスが Windows 2000 または XP を実行するコンピュータ上にあり、SQL Server が別のコンピュータ上にある場合は、信頼された接続が機能しない可能性があることに注意してください。その理由は、ASPNET(Windows XP)、Network Service(Windows Server 2003 および 2008)、およびアプリケーション プール アイデンティティ仮想アカウント(Windows Server 2008 R2 および Windows 7)のアカウントが、コンピュータごとに異なるパスワードを持つローカル アカウントであるためです。その症状の 1 つは、ユーザまたはロールを追加または編集しようとしてエラーが発生することです。その場合は、セキュリティ ウィザードを再度実行して SQL Server ログインを使用するか、またはリモート SQL Server データベースにアクセスできる固定アカウント、管理アカウント、またはドメイン アカウントを使用して ArcGISServicesAppPool アプリケーション プールを実行しなければならないことがあります。
    • [信頼された接続を使用]オフの場合は、データベースへの接続に使用される SQL Server ログインを入力します。この SQL ログインは、SQL Server インスタンス内にすでに作成されている必要があります。このログインに sysadmin や他のデータベース全体の権限を割り当てる必要はありません。このログインには、ユーザとロールを格納するためのデータベースに対して最低でも Membership_FullAccess と Roles_FullAccess の権限が必要です。SQL Server 管理ツールで、これらの権限を割り当てる必要があります。データベースがまだ存在しない場合は、このアカウントに一時的に sysadmin ロールを割り当てることができます。ArcGIS Server Manager によってデータベースが作成された後、sysadmin ロールを削除して Membership_FullAccess ロールと Roles_FullAccess ロールを割り当ててください。データベースが存在するが、データベースにまだ ASP.NET ユーザとロールのスキーマが設定されていない場合は、このアカウントにデータベースに対する db_owner 権限を一時的に割り当て、セキュリティ ウィザードの完了後、Membership_FullAccess と Roles_FullAccess だけを含むようにアカウントのロールを変更します。
  8. ロールを格納するためのデータベースをまだ用意していない場合は、新しいデータベースを作成するためのオプションをクリックし、名前(aspnetdb など)を入力します。ASP.NET メンバーシップとロールのためのデータベースをすでに設定している場合は、既存のデータベースを使用するオプションをクリックし、ドロップダウン リストからデータベースを選択します。ArcGIS Server Manager ウィザードによってデータベースが作成されていない場合は、後述の「既存のユーザまたはロールのデータベースの使用」の説明をご参照ください。
  9. [データベースに Everyone、Anonymous、Authenticated Users のロールを追加します] オプションは、データベースに Everyone、Authenticated Users、Anonymous の 3 つの汎用ロールを追加します。これらのロールを使用して、ユーザ全員または、有効なログイン情報を持つユーザにのみ、1 つ以上のサービスへのアクセスを許可することができます。これらのロールを追加しても、匿名ユーザが自動的に許可されることはありませんが、汎用ロールにアクセスを許可すれば、それらのロールが利用できるようになります。これらのロールの使用については、「サービスへのインターネット接続のセキュリティ」をご参照ください。これらのロールは Web サービスでのみ使用され、Web アプリケーションでは使用されません。[次へ] をクリックします。
  10. 次のパネルには、パスワードを回復するためのメール サーバを設定するオプションが用意されています。これを設定すると、忘れてしまったパスワードをユーザが回復またはリセットすることができます。メール サーバが設定されていない場合、忘れてしまったパスワードを回復するリンクを使用できません。忘れてしまったパスワードに対する機能の詳細については、「ユーザの管理」をご参照ください。メール サーバを設定するには、パスワード回復メッセージの送信に使用できるメール サーバの名前または IP アドレスを入力します。このサーバは、標準の SMTP(Simple Mail Transfer Protocol)で動作する必要があります。必要に応じて、ポートを設定します(デフォルトの SMTP ポートは 25 です)。必要に応じて、サーバのユーザ名(通常は電子メール アドレスとして設定)とパスワードを入力します。ほとんどのメール サーバは、スパムを防止するため、メッセージの送信時にアカウント ログインを要求します。アカウント認証情報は、構成ファイル内で暗号化されます。また、[送信元のアドレス] に、電子メールの From フィールドに表示されるアドレスを入力します。
  11. [完了] をクリックして設定を保存し、メインのセキュリティ設定パネルに戻ります。
  12. Web サーバの SSL(Secure Sockets Layer)証明書をまだインストールしていない場合は、ここでインストールする必要があります。デフォルトでは、SQL Server でユーザを認証するトークン サービスは、HTTPS を使用する接続を要求します。この接続は、SSL 証明書によって有効になります。開発の目的で、この要件を無効にすることができます。その手順および詳細については、「トークン サービスの設定」をご参照ください。

Windows Server 2000 で、ユーザまたはロールの追加を試行したときにエラーが表示された場合は、ASPNET アカウントを SQL Server データベースへ手動で追加する必要があるかもしれません。これを行うには、次に示すセクション「手動設定の代替手順」の手順 1 ~ 9 に従います。

既存のユーザまたはロールのデータベースの使用

ユーザとロールを含む既存の SQL Server データベースがある場合は、ArcGIS Server のサービスおよびアプリケーションのユーザとロール用にそのデータベースを使用できます。そのデータベースは、標準の ASP.NET メンバーシップとロール(あるいはそのいずれか)のスキーマに準拠している必要があります。たとえば、後述の「Microsoft SQL Server Express 2008 のインストールと、データベースの手動での作成」の説明に従って、データベースが作成済みであるとします。

既存のデータベースを使用するには、アプリケーションの名前または ID を設定しなければならない場合があります。SQL Server のメンバーシップまたはロールのデータベースでは、ユーザとロールに一意なアプリケーション ID が割り当てられ、この ID がデータベースの aspnet_Applications テーブルでアプリケーション名に関連付けられます。1 つのデータベース内に複数のアプリケーション名を保持できます。これにより、複数の Web アプリケーションで 1 つのデータベースを共有でき、各 Web アプリケーションが特定のアプリケーション名でデータベース内のユーザを認証します。このようにして、ある Web アプリケーションのユーザは、別のデータベース アプリケーション名に関連付けられている Web アプリケーションへのアクセスが許可されません。

デフォルトでは、ArcGIS Server Manager および ArcGIS Server のサービスとアプリケーションは、esriags というアプリケーション名を使用します。これは、machine.config ファイルで ASP.NET に定義されているデフォルトのアプリケーション名とは異なります。そのデフォルト名は、スラッシュ(/)です。また、既存のデータベースを使用して Web アプリケーションに別のアプリケーション名を定義していることもあります。これらの異なるアプリケーションのために作成されたユーザは、他のアプリケーションからは見えません。

たとえば、ArcGIS Server をインストールする前に、ユーザとロール用の SQL Server データベースを作成したとします。ASP.NET のデフォルトで作成した場合、ユーザとロール用のアプリケーション名は / です。その後、ArcGIS Server をインストールし、ArcGIS Server Manager を使用して、既存の SQL Server データベースを使用するようにセキュリティを設定します。セキュリティの設定後、[ユーザ] パネルに移動します。デフォルトでは、既存のユーザが誰も表示されません。その理由は、ArcGIS Server Manager がユーザのアプリケーション名を esriags に設定し、デフォルト名 / を持つユーザを認識しないためです。

ArcGIS Server のサービスとアプリケーションが既存のユーザとロールを使用できるようにするには、ArcGIS Server が使用するアプリケーション名とデータベース内のアプリケーション名を一致させる必要があります。アプリケーション名を一致させるには、次のいずれかの手順を実行します。

手動設定の代替手順

何らかの理由で ArcGIS Server Manager を使用してメンバーシップ データベースを作成できない場合、またはメンバーシップ データベースを個別に作成する場合は、データベースとスキーマを作成するための他の標準的な方法をメンバーシップ データベースに使用することができます。次に、.NET Framework ツールを使用した Microsoft SQL Server Express 向けの手順の概要を示します。詳細については、ASP.NET のドキュメントをご参照ください。

Microsoft SQL Server Express 2008 のインストールと、データベースの手動での作成

手順:
  1. 前述の説明に従って、Microsoft SQL Server Express 2008 をインストールします。
  2. Microsoft SQL Server Management Studio Express をインストールします。これは、http://www.microsoft.com/express/Database/ からダウンロードできます。
  3. [スタート][すべてのプログラム][Microsoft SQL Server 2008][SQL Server Management Studio Express] の順にクリックして、SQL Server Management Studio Express を起動します。
  4. 接続のダイアログ ボックスで、SQL Server のインスタンス名(たとえば、<コンピュータ名>\SQLEXPRESS)を入力します。[認証] ドロップダウン リストから [Windows 認証] をクリックし、[接続] をクリックします。
  5. ASP.NET アカウント(または IIS APPPOOL\ArcGISServicesAppPool アカウントと IIS APPPOOL\ArcGISApplicationsAppPool アカウント)を、許可されたログインに追加します。
    1. メイン プログラム ウィンドウで、[セキュリティ] フォルダを展開します。
    2. [ログイン] を右クリックして [新しいログイン] を選択します。
    3. IIS 6 または 7 では、ログイン ダイアログ ボックスでログイン名として「<コンピュータ名>\ASPNET」を入力します(または [検索] ボタンを使ってアカウントを検索します)。[OK] をクリックしてログイン リストにアカウントを追加します。IIS 7.5 では、IIS APPPOOL\ArcGISServicesAppPool および IIS APPPOOL\ArcGISApplicationsAppPool を追加します。
    4. SQL Server が ArcGIS Server とは別のコンピュータにインストールされている場合は、上記の (b) と (c) を使用して、ArcGIS Server コンピュータをログインに追加します。コンピュータ名を指定し、最後にドル記号($)を追加します。コンピュータがドメインのメンバである場合は、ドメイン名を追加します。たとえば、city という名前のドメインの GIS1 という名前のコンピュータには、「city\GIS1$」と入力します。コンピュータ名を表示して選択することはできません。名前は手動で入力しなければなりません。
  6. メンバーシップ用の新しいデータベースを追加します。
    1. メイン プログラム ウィンドウで、[データベース] を右クリックし、[新しいデータベース] をクリックします。
    2. データベース ダイアログ ボックスに名前を入力します。ASP.NET メンバーシップ データベースの標準名は「aspnetdb」です。ArcGIS Server ユーザにのみ、データベースを作成するための別の名前を指定することができます。
    3. [OK] をクリックして、新しいデータベースを作成します。
  7. ASP.NET アカウントに、新しいデータベースへのアクセスを許可します。

    IIS 6 または 7 を使用している場合は、次の手順に従います(IIS 7.5 を使用している場合は、その次の手順に進んでください)。

    1. メイン プログラム ウィンドウで、[データベース] → [<新しいデータベースのフォルダ>] → [セキュリティ] フォルダ の順に展開します。
    2. [ユーザ] を右クリックして [新規ユーザ] をクリックします。
    3. [新規ユーザ] ダイアログ ボックスで、[ユーザ名] に「aspnet」と入力します。
    4. [ログイン名] で、「<コンピュータ名>\ASPNET」と入力するか、または [...] ボタンをクリックしてアカウントを検索します。
    5. [データベース ロールのメンバーシップ] 領域で、[db_owner] アイテムをオンにします。
    6. [OK] をクリックして、ユーザを追加します。
    7. 上記のステップ(b)~(f)を繰り返します。ただし、ステップ(d)では、<コンピュータ名>\Network Service アカウントを追加します。
    8. SQL Server Express が ArcGIS Server とは別のコンピュータにインストールされている場合は、ArcGIS Server コンピュータもログインとして追加します。上記の(b)~(f)を繰り返します。ただし、ステップ(d)では、末尾にドル記号($)を付けてコンピュータ名を追加します。コンピュータがドメインのメンバである場合は、ドメイン名を含めます(たとえば、citydomain\gisserver1$)。

    IIS 7.5 を使用している場合は、次の手順に従います。

    1. メイン プログラム ウィンドウで、[データベース] → [<新しいデータベースのフォルダ>] → [セキュリティ] フォルダ の順に展開します。
    2. [ユーザ] を右クリックして [新規ユーザ] をクリックします。
    3. [新規ユーザ] ダイアログ ボックスで、[ユーザ名] に「arcgisservicesapppool」と入力します。
    4. [ログイン名] で、「IIS APPPOOL\ArcGISServicesAppPool」と入力するか、または [...] ボタンをクリックしてアカウントを検索します。
    5. [データベース ロールのメンバーシップ] 領域で、[db_owner] アイテムをオンにします。
    6. [OK] をクリックして、ユーザを追加します。
    7. 上記のステップ(b)~(f)を繰り返します。ただし、ステップ(c)では、アカウントの名前を arcgisapplicationsapppool に設定し、ステップ(d)では IIS APPPOOL\ArcGISApplicationsAppPool アカウントを追加します。
    8. SQL Server Express が ArcGIS Server とは別のコンピュータにインストールされている場合は、ArcGIS Server コンピュータもログインとして追加します。上記の(b)~(f)を繰り返します。ただし、ステップ(d)では、末尾にドル記号($)を付けてコンピュータ名を追加します。コンピュータがドメインのメンバである場合は、ドメイン名を含めます(たとえば、citydomain\gisserver1$)。
  8. SQL Server Management Studio Express を終了します。
  9. [ASP.NET SQL Server Wizard] を使用して、データベースのメンバーシップ スキーマを設定します。
    1. [スタート][すべてのプログラム][Microsoft .NET Framework SDK v2.0][SDK コマンド プロンプト] の順にクリックして、Microsoft .NET SDK コマンド プロンプトを開きます。
    2. コマンド プロンプトで、「aspnet_regsql.exe」と入力し、Enter キーを押します。これにより、[ASP.NET SQL Server セットアップ ウィザード] が起動します。
    3. ウィザードで [次へ] を 2 回クリックします(デフォルトを使用します)。
    4. [サーバとデータベースを選択します] で、サーバ名を入力し、SQL Server Express を指定するために「sqlexpress」を追加します(例: 「MYSERVER\SQLEXPRESS」)。
    5. 認証は [Windows 認証] のままにしておき、[データベース] リストから前に作成したデータベース(aspnetdb など)を選択します。
    6. [次へ] をクリックし、再び [次へ] をクリックしてスキーマを作成します。
    7. [完了] をクリックしてウィザードを終了します。
    8. exit」と入力して Enter キーを押し、コマンド プロンプトを閉じます。

SQL Server メンバーシップ プロバイダの手動での指定

通常は、上記の手順に従い、ArcGIS Server Manager を使用して SQL Server データベースをメンバーシップ プロバイダとして指定します。必要に応じて、「カスタム プロバイダでのユーザとロールの設定」の手順に従って、データベース プロバイダを手動で設定できます。プロバイダを設定する場合は、SQL Server データベースをメンバーシップ プロバイダとして指定します。メンバーシップ プロバイダを設定するには、ASP.NET の標準の設定構文を使用します。プロバイダの設定後、「カスタム プロバイダでのユーザとロールの設定」の説明に従って、必ず ArcGIS Server Manager を使用してこのプロバイダを選択してください。

SQL Server メンバーシップ データベースの手動での管理

SQL Server をユーザとロールの格納場所として使用する際には、標準データベースが ASP.NET メンバーシップとロールに使用されます。必要であれば、このデータベースを外部ツールで管理することもできますが、Esri はこうした外部ツールをサポートできません。外部ツールによってユーザまたはロールを追加する場合は、必ず、そのユーザまたはロールに対して正しいアプリケーション名が使用されるようにしてください。ユーザとロールのアプリケーション名の詳細については、上記の「既存のユーザまたはロールのデータベースの使用」をご参照ください。

ユーザとロールを管理するためによく使用されるのは、Web サイト管理ツール(WSAT)です。このツールを使用するには、Visual Studio(または Visual Web Developer Express)で [Web サイト][ASP.NET 構成] の順にクリックして、Web サイトを開きます。WSAT でユーザとロールを管理するには、Visual Studio で /ArcGIS/Security Web アプリケーションを開き、WSAT を開きます。WSAT ツールを使用して、ユーザやロールを追加、編集、削除することができます。

WSAT や他のツールを使用して、GIS サービスの権限ルールを管理することはできません。これらの権限は ArcGIS Server によって内部で管理されます。サービスが権限を管理する方法については、「サービスへのインターネット接続のセキュリティ」の「サービスまたはフォルダの権限の設定」をご参照ください。


7/10/2012