Simple AD (AWS Directory Service)を消したら大変なことになった話


何をしたか

Simple ADは、AWS Managed Microsoft ADが提供する機能のサブセットを提供しており、ユーザーアカウントやグループメンバーシップの管理、グループポリシーの作成と適用、Amazon EC2インスタンスへのセキュアな接続、Kerberosベースのシングルサインオン(SSO)の提供などが可能です。

こいつを削除しました。

なぜ消したか

AWSのアカウント自体が特定のプロジェクトのサービス用のアカウントで、
その中にSimple ADがポツリと存在していました。

特にユーザー認証を行っているサービスでもなく、EC2への接続もSSHのため、
「誰かがテストで作ってそのまま忘れたのかな?」と思いました。

月5,000円 くらいかかっており、費用削減になるかなと思い、
(2年前に) プロジェクトのサーバー構築を担当した(既に退社している相談役の)インフラエンジニアの方に、

ワイ「これ消していいですかー?
インフラニキ「使ってないので消しちゃってください

というやり取りのもと、削除しました

どうなったか

10分も経たずに「 ページ見れないんだけど? 」と連絡が来ました。

すべてのEC2からAurora MySQLへの接続ができなくなりました。
本番環境だけでなく開発環境などの すべてのEC2 において機能しなくなりました。

どうやら、EC2の 名前解決用のDNSサーバー として運用していたそうです。
EC2からMySQLへはパブリックアクセスとなっており、そのときに指定していたエンドポイントURLからIPが引っ張ってこれない状態になりました。

復旧までの死闘

~30分

連絡が来てから真っ先にするのは、とりあえずWebサーバーの稼働確認。
SSHでログインして、Webサーバーのサービス確認。

そして、確認中にデータベースへ接続できないことが判明した。

~1時間

どうやら、ネットワーク周りが怪しい。
curl ipconfig.io をやっても curl: (6) Couldn't resolve host のようなエラーが出る。
ホスト名が解決できていない、つまり名前解決ができていないのだ。

よし、Simple AD を作り直そう!

~2時間

もちろん、作り直したところで元に戻るわけでもなく…。
うろ覚えの設定だけ 打ち込んだ Simple AD に立ち上げました。
(こんなことなら消す前に スナップショット 作っておけばよかった)と思っても後の祭り。

今までは妖精さんが勝手に設定してくれてたから、ネットワーク設定なんてわからん。

Simple ADの詳細画面にも「ディレクトリの DNS 名」くらいしか書いてない。
他の紐づくサービスへのリンクがあるわけでもない。
もちろん Route 53 も確認、しかしそんなDNS名は存在していない。

~2時間30分

ネットワークのサービスっぽいやつを、手当り次第に確認!
VPC、サブネット、ネットワークACL、DHCPオプションセット…。 DHCPオプションセット !!

やりました! ドメイン名 がSimple ADで設定されているものと同じだ!
じゃあリンクつけといてくれよ!!!)と思いながら設定を確認!!

Simple AD ⇔ DHCPオプションセット ⇔ VPC ⇔ EC2 のような感じで紐付いているようだ。

~3時間

なんか「ドメインネームサーバー」とかいう項目にローカルIPアドレスっぽいのが2つ書いてある…。
何これと思いつつも、EC2の /etc/resolve.conf と比較。

/etc/resolve.conf
search {Simple ADのDNS名と同じ}
nameserver {DHCPオプションセットの1番目のIPと同じ}
nameserver {DHCPオプションセットの2番目のIPと同じ}

これじゃダメなのか!?

~4時間

インフラニキ「AWSに問い合わせてみたら?
ワイ「!!」

早速、代理店経由でAWSに問い合わせ。
現在の症状を詳しく記述、急いでるからこそ 1発で的確な返事がほしいので、できる限り詳しく

色々調べつつ、40分後くらいに返事。

AWS様「Simple ADのディレクトリのIPアドレスを確認いたしましたところ 現在の設定とは別のIP で作成されておりました。」

「よし来た!」と思う反面「Simple AD作ったときにそんな項目どこにもなかったけど!?」って思ってしまった。

~5時間

新しいIPアドレスで /etc/resolve.conf を書き換えよう!

/etc/resolve.conf`
search {Simple ADのDNS名と同じ}
nameserver {新しいの1番目のIPと同じ}
nameserver {新しいの2番目のIPと同じ}

再起動!!

がっ……駄目っ……!

名前解決できない、設定が元に戻ってしまった!!

~5時間30分

どうやらDHCPの設定が反映される模様?
そういえば、DHCPオプションセットの設定を変えていなかった!

新しい DHCPオプションセット を作成し、新しい ドメイン名ドメインネームサーバー を設定!
そして、VPCの紐付け!
EC2を再起動!

いけた!

つながった!!

~終戦

すべてのEC2を再起動し、無事完了。

戦後処理

無事に終わったと思ったけど、まだまだやることは多い。

顛末書

やり取りなどを事細かにまとめました。
ただ、「 再発防止策 」については頭を抱えました。

とりあえず、「属人化を防ぎ、複数人でサーバーの構成を理解し、サーバー設定を触る際はできるだけ大勢に確認したうえでやる」みたいなことを書いた。

終わり

反省はしつつ、インフラエンジニア増やしてくださいと思いました。