AWS Directory Service でディレクトリが削除できなくなった話

はじめに

本記事では私が AWS Directory Service の検証を行った際に発生したエラーについて紹介します。

本エラーが発生した場合、AWS サポートに連絡し対応してもらう必要があります。
そのため、本エラーを再現させようとする行為はお控えください。
本記事を見て「この操作はやってはいけないんだな」と知っていただければと思います。

私が検証していたこと

AWS Managed Microsoft AD (以下 MSAD) には Active Directory 機能および
WorkSpaces などのAWSアプリケーションとの連携機能があります。

連携機能の1つとして、ドメインユーザーに対して IAM ロールを割り当てることで
そのユーザーの認証情報を利用して AWS マネジメントコンソールにアクセスできる、というものがあります。

また、Active Directory 自体の機能として他のドメインとの信頼関係を確立することで
他のドメインのリソースを利用することが可能です。

この2つの機能を利用して、以下のような構成を検証していました。

MSAD (msad.com) と EC2 上の AD (ec2.local) に信頼関係を確立し、
MSAD の機能により ec2.local のドメインユーザーに IAM ロールを割り当てることで、
ec2.local のドメインユーザーの認証情報を使って AWS マネジメントコンソールにフェデレーションログインすることが可能になります。

発生した事象、エラー

検証にあたり MSAD や EC2 のリソースを作っては消していたのですが、
ある時 MSAD が削除できなくなってしまいました。

AWS マネジメントコンソールへのフェデレーションログイン機能を有効化しているとディレクトリは削除できません。
フェデレーションログイン機能を無効化しようとすると、画像の赤枠のように “You cannot disable …” と表示されます。
(もう1つの赤枠は気にしないでください)
ドメインユーザーに IAM ロールを割り当てていると無効化できないようです。

そしてロールの割り当てを外そうとすると、以下のようなエラーが発生してドメインユーザーが表示されませんでした。

An error occured
Your request has a problem. Please see the following details.
Directory Error: InvalidParameterException

EC2 ドメイン (ec2.local) のドメインユーザーにこのロールを割り当てていたのですが、
その EC2 を消してしまったため、どうやらドメインユーザーの取得が出来なくなっているようでした。

こちらのエラーがどうやっても解消できず、結果的にディレクトリの削除が出来なくなってしまいました。

対応

AWS サポートに状況を説明し、ディレクトリを消せるように手配していただきました。

スクリーンショットが残っておらず詳細は覚えていないのですが、
たしかフェデレーションログイン機能の無効化までをサポートに対応いただいて、
ディレクトリ削除自体は私の方で実施した覚えがあります。

まとめ

以下のような流れで作業するとAWSユーザー側でディレクトリが削除できなくなります。

  1. MSAD ドメイン ~ その他ドメイン間で信頼関係を確立
  2. 「その他ドメイン」のドメインユーザーに IAM ロールを割り当て
  3. 「その他ドメイン」のサーバー(ドメインコントローラー)を削除

同じような状況に陥らないように気を付けましょう。
(ロールの割り当てを解除してからドメインを消しましょう)