次の方法で共有


チーム ビルド配置のアクセス許可を構成する

作成者: Jason Lee

このトピックでは、ビルド サーバーが自動ビルド プロセスの一環として Web サーバーとデータベース サーバーにコンテンツを展開できるようにアクセス許可を構成する方法について説明します。

このトピックは、Fabrikam, Inc. という架空の会社のエンタープライズ配置要件を題材にしたチュートリアル シリーズの一部です。このシリーズでは、サンプル ソリューション (Contact Manager ソリューション) を使用して、現実的なレベルの複雑さを持った、ASP.NET MVC 3 アプリケーション、Windows Communication Foundation (WCF) サービス、データベース プロジェクトなどを含んだ Web アプリケーションを取り上げます。

これらのチュートリアルの核心である配置方法は、「プロジェクト ファイルについて」で説明した分割プロジェクト ファイルのアプローチを基にして、ビルド プロセスを 2 つのプロジェクト ファイル (すべての配置先環境に適用されるビルド命令を含んだファイルと、環境に特化したビルド設定や配置設定を含んだファイル) で制御するものになっています。 ビルド時には、環境に特化したプロジェクト ファイルが環境に依存しないプロジェクト ファイルにマージされ、ビルド命令の完全なセットが形成されます。

タスクの概要

Team Foundation Server (TFS) 2010 ビルド サービスをインストールするときに、サービスを実行する ID を指定します。 既定では、これは Network Service アカウントです または、ドメイン アカウントを使用して実行するようにビルド サービスを構成することもできます。

Windows 認証を必要とし、Team Build を使用して自動化する予定の展開タスクは、ビルド サービス ID を使用して実行されます。 そのため、Web サーバーとデータベース サーバーに必要なアクセス許可をビルド サービス ID に付与する必要があります。

Note

ネットワーク サービス アカウントは、マシン アカウントを使用して他のコンピューターに対する認証を行います。 マシン アカウントは、[ドメイン名][マシン名]$ という形式になります (例: FABRIKAM\TFSBUILD$)。 そのため、ネットワーク サービス ID を使用してビルド サービスを実行する場合は、ビルド サーバーのマシン アカウント ID に必要なアクセス許可を付与する必要があります。

Web サーバーのアクセス許可を構成する

Web 配置に対する適切なアプローチを選択する」の説明に従って、Web パッケージをリモート Web サーバーに展開する場合に使用できる主なアプローチは 2 つあります。

  • 宛先サーバー上の Web 配置エージェントサービス (リモート エージェントとも呼ばれます) をターゲットにして、リモートの場所からアプリケーションを配置します。
  • 宛先サーバーのインターネット インフォメーション サービス ( IIS) Web 配置ハンドラーをターゲットにして、リモートの場所からアプリケーションを展開します。

この場合、リモート エージェントには 2 つの重要な制限があります。

  • リモート エージェントでは、NTLM 認証のみがサポートされます。 つまり、デプロイではビルド サービス ID を使用する必要があります。別のアカウントを偽装することはできません。
  • リモート エージェントを使用するには、デプロイを実行するアカウントがターゲット サーバーの管理者である必要があります。

これら 2 つの制限を組み合わせると、リモート エージェントのアプローチは Team Build の自動デプロイに望ましくありません。 この方法を使用するには、ビルド サービス アカウントを任意のターゲット Web サーバーの管理者にする必要があります。

これに対し、Web 配置ハンドラーのアプローチには、さまざまな利点があります。

  • Web 配置ハンドラーでは、HTTPS 経由の基本認証がサポートされています。これにより、代替アカウントの資格情報を IIS Web 配置ツール (Web 配置) に渡すことができます。
  • 管理者以外のユーザーが Web 配置ハンドラーを使用して特定の IIS Web サイトにコンテンツを展開できるように、ターゲット Web サーバーを構成できます。

そのため、Team Build から Web パッケージのデプロイを自動化するときは、Web 配置ハンドラーをターゲットにすることが推奨されます。 推奨されるプロセスは以下のとおりです。

  1. デプロイに使用する低い特権のドメイン アカウントを作成します。
  2. Web 配置発行用の Web サーバーを構成する (Web 配置ハンドラー)」の説明に従って、Web 配置ハンドラーを構成し、特定の IIS Web サイトにコンテンツを展開するために必要なアクセス許可をアカウントに付与します。
  3. Web 配置を呼び出し、基本認証を使用して Web 配置ハンドラーを対象とし、作成したドメイン アカウントの資格情報を指定してデプロイを実行します。

Contact Manager のサンプル ソリューションでは、環境固有のプロジェクト ファイルで、認証の種類 (基本または NTLM)、Web 配置の資格情報、エンドポイント アドレス (リモート エージェントまたは Web 配置ハンドラー) を指定します。 これらの値は、プロジェクト ファイルの実行時に Web 配置コマンドを作成して実行するために使用されます。 詳細については、「Web パッケージを展開する」を参照してください。

アクセス許可の構成方法など、Web 配置ハンドラーの構成の詳細については、「Web 配置発行用の Web サーバーを構成する (Web 配置ハンドラー)」を参照してください。 リモート エージェントの構成の詳細については、「Web 配置発行用の Web サーバーを構成する (リモート エージェント)」を参照してください。

データベース サーバーのアクセス許可を構成する

SQL Server にデータベースをデプロイするには、次の操作を行う必要があります。

  • SQL Server インスタンスにデプロイするアカウントのログインを作成します。
  • SQL Server インスタンスに対するログイン DBCreator のアクセス許可を付与します。
  • 初期デプロイの後、ターゲット データベースの db_owner ロールにログインを追加します。 これは、以降のデプロイでは、新しいデータベースを作成するのではなく、既存のデータベースを変更するために必要となります。

NTLM 認証または SQL Server 認証を使用して、SQL Server インスタンスに対して認証を行うことができます。

  • NTLM 認証を使用する場合は、上記のアクセス許可をビルド サービス アカウントに付与する必要があります。
  • SQL Server 認証を使用する場合は、上記のアクセス許可を SQL Server アカウントに付与する必要があります。 また、データベースのデプロイに使用する接続文字列に、SQL Server のユーザー名とパスワードを含める必要があります。

データベース デプロイのアクセス許可を構成する方法の詳細については、「Web 配置発行用のデータベース サーバーを構成する」を参照してください。

まとめ

この時点で、Team Build から Web アプリケーションとデータベースのデプロイを自動化するときに必要なアクセス許可と利用可能な認証オプションが理解できているはずです。 また、IIS Web サーバーと SQL Server のデータベース サーバーに必要なアクセス許可を実装できるようになっているはずです。

もっと読む

リモート展開をサポートするように Windows サーバー環境を構成する方法の詳細については、「Web 配置用にサーバー環境を構成する」を参照してください。