Azureの上にActive Directory を構築したらハマった話

この記事は、インフラ勉強会 Advent Calendar 2018 (Qiita版)の第23日目の記事です

そういえば今日は、インフラ勉強会発足からちょうど1周年の日ですね

qiita.com

いつもどおりタイトル同様の内容です

結論を先にかいておきます

  • 失敗談です
  • 少なくともAWSでは起こらない(はず)
  • クラウド上って言ったって仮想マシンと同じだろ、とか思うんじゃないぞ
  • 公式ドキュメントはちゃんと読め
  • 調子こいた結果のやらかしなので割と反省していて、禊として書きます

なにをしたのか

  • Azure のVMインスタンス上に、Windows Server 2016でActive Directoryを2台構成で構築した
  • 一般ユーザーがRDPできるようにGPO周りの設定をした
  • 当時は構築フェーズだったこともあり、週末はADを2台とも停止させて退勤し、週明けに2台とも起動させた

なにがおきたのか

  • 一部のメンバーサーバーで、一般ユーザーがRDPできなくなった
  • 事象発覚時点では、特に規則性は思いつかなかった
  • どちらのADから確認しても、ユーザーの追加/更新/削除は同期されるので権限「だけ」が割り当たっていない
    • ちなみにユーザー追加/削除はちゃんと同期される

どう対応したのか

暫定対応

  • 問題が発生しているサーバーは、全て02号機側のADからGPOを割り当たっていることがわかった
  • 02号機を停止させて GPOを強制的に再適用したところ、一般ユーザーでRDPできるようになった
  • プロジェクトに時間的余裕がなかったこともあり、ログのみ取得して02号機を降格させて再構築した

原因調査

  • 02号機を停止し、再度起動した段階でSYSVOLの同期が壊れていることが判明
    • なんかDFSレプリケーションが失敗してるログ出てる
    • 検証環境で同じことをしたら、SYSVOLのバージョンに差異が発生
    • 同期されているはずのフォルダ内にデータを作成したり更新したりしても、同期がかからないことも確認

原因調査その2

  • SYSVOL同期が直接の原因だったことはわかったが、根本的な原因はなんやねん
    • なんやこのクソややこいバグは…とか思ってたので本当にすみませんでした
  • というか公式にちゃんと「やるな!」って書いてあった
  • 公式の推奨事項から抜粋

    • Active Directory 用の データベース、ログ、および SYSVOL を格納するための個別の仮想データ ディスクを作成します。 オペレーティング システムと同じディスクにこれらの項目を格納しないでください。
  • 抜粋その2

    • Azure Portal を使用してドメイン コントローラー VM をシャットダウンしないでください。 代わりに、ゲスト オペレーティング システムをシャットダウンして再起動します。 Portal を使用してシャットダウンすると、VM の割り当てが解除され、Active Directory リポジトリVM-GenerationID と invocationID の両方がリセットされます。 これにより、AD DS 相対識別子 (RID) プールが破棄され、SYSVOL が権限なしとしてマークされます。また、ドメイン コントローラーの再構成が必要になる場合があります。

はい、すみませんでした

反省

  • AD構築自体は何回もやっていたので、コケることないやろ〜と思っていたら無事に死亡した感じです
  • みんな、ちゃんと公式ドキュメント読もうな
  • Windows Serverを構築するにはAWSが最適やな!