Azureサブスクリプションと規定のディレクトリの関係(Visual Studio Team ServicesでO365で利用しているAADディレクトリと紐付けようとしてはまった)

Azureにはサブスクリプションという管理単位が存在します。サブスクリプション単位で管理者を設定したり、課金管理をしたりする事ができます。新しいポータルになってAzure Resource Managerが全面的に採用となりリソースグループ単位でのアクセス制御や課金管理が行えるようになりましたが、それまではサブスクリプション単位での管理が主体でしたので「自分が自由に使って良いサブスクリプション」が用意されていて、その中でのみ利用できる…という状況の人も多いと思います。

私もこの状況でして、その状況でVisual Studio Team Servicesを無償枠の5人を超えたチームで使い出そうとして色々と無駄にはまってしまったのでその記録を残しておきます。

やりたかったのですが断念したのは以下の事です

  • VSTSにO365で利用しているAADを紐付ける
  • 現在自分のチームに割りあてられているAzureサブスクリプションにVSTSの無償枠を超えた分を課金する

もちろんこれは適切に設計されていれば当たり前にできる事ですし、頑張れば今回の私の状況でも実現できたはずです。ですが、色々とやりづらくなってしまったのはAzureサブスクリプションに紐付いている「規定のディレクトリ」が異なっていた事が原因でした。

「規定のディレクトリ」という概念は結構難しいので、少し説明しておきます。

  • ディレクトリの実態はAzure Active Directoryのディレクトリです。(ディレクトリのディレクトリ……)
  • Azureサブスクリプションは作成されるときに同時にそれに紐ずくAADディレクトリが生成されます(以前、生成されなかった時期もあったそうです)
  • 1つのAzureサブスクリプションに紐ずくAADディレクトリは1つのみです
  • AzureサブスクリプションとAADディレクトリの関係は1対1の固定的なものではなく後から変更する事ができます
  • AADディレクトリはそれ単体で(事実上)いくつでも無償で作成する事ができ
  • O365の契約をするとO365で利用するその組織専用のAADディレクトリが生成され、O365で利用されます
  • 複数のAzureサブスクリプションの規定のディレクトリを単一のAADディレクトリに設定する事ができます
  • Azureサブスクリプションを削除しても、それに紐付いていたAADディレクトリは削除されません
  • Azureポータルから、AADディレクトリを作成するときには「新規に作成する」のか「既存のものを接続」するのかを選択できます

このようにAzureサブスクリプションとAADディレクトリはそれぞれ独立して存在しつつ、くっつけたり、切り離したりする事ができます。

そもそもなぜAzureサブスクリプションにAADディレクトリを紐付ける必要があるのか?というのは正直なところ私にもよくわかりません。ごめんなさい。より正確に言うと「紐付ける必要がある現状の設計は悪い設計なんじゃないの?」と思います。今回はまったのもこのあたりが関係しています。

AzureサブスクリプションとAADディレクトリを紐付けないとできない事を知っている範囲で書いてみます。

  • Azureサブスクリプションの管理者は規定のディレクトリのアカウントか、Microsoftアカウントでなければいけない(規定でない別のAADディレクトリのアカウントは管理者に指定できない)
  • Azure Powershellで利用するアカウントはAADのユーザーでないといけない(Microsoft アカウントではだめ)
  • Azure Automationで保存して使用するクレデンシャル(アカウント)はAzureサブスクリプションの規定のディレクトリのアカウントでないといけない(Microsoftアカウントではだめ)

おそらく他にも色々とあると思いますが、私が知っているのはこれだけです。

さて、やっとVSTSの話になります。VSTSに限らない話なのですが、Azureポータル上で操作をしている時に何か既存の他のサービスとひも付けたりするときに「現在のアカウント」でアクセスできるものが自動的に表示され、それ以外が選択できないGUIがほとんどです。別のアカウントを入力できるケースのほうがレアですね。ですので、具体例としてVSTSの場合には以下の条件を満たさないと意図する結果にできません。

  • 自分が使えるサブスクリプションの規定のディレクトリが、VSTS上で参照したいディレクトリと一致している
  • そのディレクトリ上に組織アカウントがあり、その組織アカウントがサブスクリプションの管理者である

あるAzureサブスクリプションの共同管理者として規定ではないAADディレクトリのユーザーが指定さえできればこのあたり何も問題ないんですけどね。これができないので混乱、苦労します。

そして、Microsoftアカウントはとりあえずどこにでもなんにでも権限つけられちゃうのでそちらのほうが楽に使えちゃうんですよね。でも、他要素認証とか色々企業でコントロールするには組織アカウントを事実上つかわないと色々とやりづらくなってしまうわけで…。このあたりもう少しアーキテクチャ的に改善されて欲しいところです。

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for Cloud and Datacenter Management.

コメントを残す

メールアドレスが公開されることはありません。