連載:いまさら聞けないWindows Serverの開発活用術

第1回 Windows上で開発するための開発環境構築入門

亀川 和史
2012/05/16
Page1 Page2

チーム開発用サーバの基本設定

 マイクロソフトのサイトや@ITのWindows Server Insiderでも、サーバの個々の機能に関して説明する記事はたくさんあり、それらは非常に詳しく分かりやすいものが多い。しかし、チーム開発用に設定する場合、どれを取捨選択すればいいか分からなくなることもあるだろう。

 そこで次に、チーム開発向けサーバ用のお勧め設定をいくつか紹介する。より詳細な設定に関しては参考記事も紹介するので、それらの関連記事も見てほしい。

多くのサーバを効率的に運用する

 最初に書いたとおり、仮想環境を使用してチームで開発を始めると、いつの間にか多くのサーバを運用していた……ということも多い。3〜4台のうちは開発者が片手間に運用を始められても、その後、台数が増えてきて負担になってしまう。例えば20台にまで増えてしまったら、全てのサーバにいちいちログオンしてイベント・ビューアを見たり、ディスクの残量を確認したりというサーバ管理作業は片手間ではできないだろう。だからといって、サーバ管理作業を省くわけにはいかない。最初から完璧にとはいかないまでも、ある程度はサーバ管理作業をしておかないと、後で大きな手間になってしまう可能性がある。

 Windows環境で開発を行う場合、Active Directoryで運用を始めれば、複数サーバの管理も行いやすくなり、運用上の効率化を図れる。以下では、そのための運用TIPSをいくつか紹介しよう。

※注意点: 本連載では、開発環境向けに運用しやすくするために意図的にセキュリティを緩めている場所がある。本番環境では薦められない点もあるため、本番環境に設定する場合は専門の運用者に従ってほしい。

Active Directory

 そもそもActive Directoryを使用することに関して筆者の周りでも「Active Directoryは難しい」「大規模向けだから開発環境には必要ない」という声をよく聞く。しかし、仮想化を使用することにより開発用サーバを多く構築できるようになってきた現在では、多くのサーバを効率的に管理・運用するためには、Active Directoryの、特にグループ・ポリシー、アカウント管理よる効率的な運用は不可欠だ。

 そこで開発者の運用コストを抑えるためのActive Directory活用について解説を行う。

 Active Directoryには、大きく3種類のコンピュータの役割がある。開発で運用するサーバは、「メンバ・サーバ」となり、最も台数が多くなる。

  • ドメイン・コントローラ(多くの場合、DNSサーバも兼ねる)
  • メンバ・サーバ(何らかのサーバ機能を提供する)
  • クライアント・コンピュータ(サーバ機能を提供しない)

 ドメイン・コントローラは1台でもよいが、可能であれば物理サーバで1台、仮想サーバで1台あると、障害時の復旧の手間を最小限にできる。Server Coreで実行すれば、必要なメモリもフルインストール版(GUI版)に比べて軽減される。注意点として、物理環境と仮想環境のドメイン・コントローラを同じサーバで実行している場合、物理サーバが壊れると、一緒に壊れてしまう可能性があるので、仮想環境と物理環境は異なるサーバで実行しておく必要がある。

 ドメイン・コントローラを2台使う場合、以下のいずれかの構成が考えられる。ドメイン・コントローラは必ず異なるマシンで実行してほしい。

ドメイン・コントローラを2台使う場合の構成例(左は仮想環境と物理環境、右は仮想環境と仮想環境)

 仮想環境でドメイン・コントローラを実行する場合、いくつか設定変更しておく必要がある。TechNetに注意すべき点が載っているので、参考にしてほしい。

基本設定

 Active Directoryを使って開発環境を運用する場合、開発環境が常時起動していない(=停止しているときがある)こともある。Active Directoryの既定では30日でコンピュータ・アカウントのリセットが行われてしまうため、長い間起動していなかった仮想マシンの認証が行われなくなる。また、Hyper-Vのスナップショットを適用して、30日以前の古い環境に戻してしまった場合も同じ現象が起きる。

 このような現象を回避するため、ドメインのセキュリティ・ポリシーでドメインのコンピュータ・アカウント・パスワードを無期限に設定しておくことをお勧めする(次の画面を参照)。もちろん開発環境でのみ設定した方がよい項目であり、本番環境では基本的に使うべきではない。

[ドメイン メンバー:コンピューター アカウント パスワード:定期的な変更を無効にする]ポリシーをダブルクリック
[有効]ラジオボタンにチェックを入れる
ドメインのコンピュータ・アカウント・パスワードを無期限に設定
具体的には、以下の記事を参考にしてほしい。

 開発環境で次にお勧めしたいポリシーは、「監査ポリシー」の「アカウント ログオン イベントの監査」に「失敗」の設定を追加することだ(次の画面を参照)。

アカウント・ログオン・イベントの監査を失敗に設定

 アカウントの監査は、セキュリティで不正アクセスの検知にも使えるが、開発環境では「期待する認証を使用しているか」という確認のために使うことができる。上記のポリシーを設定しておけば、統合Windows認証を使ってログオンしている場合で正しいアカウントでアクセスしているにもかかわらずIISがエラーを返すといった場合、IISのイベント・ビューアのセキュリティ・ログに、どのアカウントで認証失敗したのかが記録されるため、認証時のトラブル対応の時間を短縮できる。

アカウント管理

 筆者がActive Directoryを使用することによって最も恩恵を受けると考えている点がアカウント管理だ。

 Active Directoryがない状態でも運用することは可能ではあるが、管理するサーバおよびクライアント台数が増加した場合、その運用は現実的ではなくなる。組み込みAdministratorアカウントのパスワードを共有してアクセスしているという開発現場もあるのではないだろうか。

 次の2つの図は、Active Directoryがある場合と、なくてAdministratorアカウントのパスワードを共有している場合を表している。

Active Directoryがある場合と、なくてAdministratorアカウントのパスワードを共有している場合

 Active Directoryを使えばアカウントを集中管理できるので、どのサーバにでも同じアカウントでログオンすることができる。最初にActive Directoryにセキュリティ・グループを作っておき、各セキュリティ・グループ内に開発者アカウント、開発はしないがサーバにアクセスする必要があるアカウントをセキュリティ・グループで分類しておけば、ファイル共有や、SQL Serverのログオン制御が便利になるだけでなく、IISのWindows統合認証もこのセキュリティ・グループで制御できる。

 「開発者だからあらゆる機能を使う必要があるので、結局は、各サーバに対して各開発者のアカウントに管理者権限を与えなければならなくなるのではないか?」という疑問もあると思う。それが面倒だからといって、全員がAdministratorアカウントを使用していると、「共有フォルダにアクセスしていたり、SQL Serverにアクセスしたりしているユーザーが、どの開発者なのか分からない」などの問題が起きたりする。そうならないためにも、開発者ごとにActive Directoryのアカウントを割り当て、それを適切なセキュリティ・グループに所属させるなどして管理者に近い権限を与えてやると、各サーバで開発に必要十分な権限を持ちつつも、誰が使用しているのかもすぐに分かるようになるので、開発が便利になる。

 例えば、「開発者」というセキュリティ・グループを作成して、その中に任意の開発者アカウントを登録する。ファイル共有では、個別のアカウントではなく、このグループに対してアクセス権限を指定する(以下の画面を参照)。そうすれば、自動的に「開発者」グループに所属しているメンバー全員に対して、指定したアクセス権限が与えられる。

[グループ名]に「開発者」を入力
作成した「開発者」グループに、全開発者のアカウントをメンバーとして追加する
共有フォルダのセキュリティ設定で、「開発者」グループを追加、選択したうえで、[フル コントロール]の[許可]チェックボックスにチェックを入れる
共有フォルダにおける「開発者」セキュリティ・グループへのセキュリティ権限設定例
例えば「D:\public」フォルダを共有した場合、開発者全員のアカウントがメンバーとして追加されているセキュリティ・グループ「開発者」に対してフルコントロールのアクセス権限を与えれば、開発者全員が管理者権限で共有フォルダを扱えるだけでなく、誰が共有フォルダにアクセスしているかも判別できるようになる。

 SQL Serverも同様だ。Windows認証を使用している場合、以下のようにセキュリティ・グループ「開発者」をログイン・メンバーとして追加すれば、開発者グループに所属するメンバー全員がSQL Serverにログインできるようになる。

SQL Serverにおける「開発者」セキュリティ・グループへのセキュリティ権限設定例

 もし、開発者グループに所属するメンバーが開発者グループではなくなった後も、まだドメインにアクセスする必要がある場合、該当のアカウントを開発者グループから削除すれば自動的に全ての共有フォルダなどからフルコントロール権限がなくなる。Active Directoryのアカウントを無効状態にすることでも同様に対応できるが、継続してドメインへのアクセスが必要な場合は「別のグループ(例えばこのグループには、フルコントロール権限ではなく、読み取り権限のみを付与するなど)」へメンバーとして追加する方が便利だ。このようにしてセキュリティ・グループをうまく使えば、開発中のアプリケーションを評価するときも、特定の権限を落とした状態で評価することもできるのでお勧めだ。

【コラム】アクセス権限を効率的に設定するための「拒否」の活用について

 Windowsのセキュリティには「許可」と「拒否」が用意されており、「拒否」が最優先で評価される。「許可されていなければ、アクセスできないのでは?」と考えて「拒否」というセキュリティ設定は不要と思われがちだが、「拒否」をうまく使えば、意図しないアクセスを防ぐための効率的なアクセス権限を構築できる。

 例えば、Active Directoryドメインの「UserA」というユーザー・アカウントが「開発者」と「Domain Users」の2つのグループに所属していたとする。「Domain Users」グループに「読み取りのみ」の権限がある状態で、ファイル共有のセキュリティで「開発者」グループに「拒否」を設定すると、「UserA」はこのフォルダにアクセスできるだろうか?

 「拒否」が最優先で評価されるため、「UserA」はファイル共有にアクセスできない。

 グループの中の特定の人だけアクセスさせたくないような場合、「拒否」は非常に便利だ。ほかのマイクロソフト製品でも「拒否」が用意されているものは多いので、うまく使ってほしい。

 次回は、サーバ・トラブル時の対応、日常のトラブル、性能問題に対応するためのTIPSを紹介する。end of article


 INDEX
  [連載]いまさら聞けないWindows Serverの開発活用術
  第1回 Windows上で開発するための開発環境構築入門
    1.チーム開発に用いるサーバOSを何にするか?/チーム開発に必要なソフトをそろえよう
  2.チーム開発用サーバの基本設定

インデックス・ページヘ  「いまさら聞けないWindows Serverの開発活用術」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH