Microsoft アカウントを Azure ポータルに追加してもポータルにアクセスできないケースについて

スポンサーリンク

プロジェクトなどで Azure 上でシステムやサービスを構築する際、作業者に対して Azure ポータルへのアクセスを付与することがあるかと思います。

また、Azure ポータルへのアクセスを付与するアカウントについては、Azure サブスクリプションに紐付けられた Azure Active Directory (Azure AD) 上にアカウントを作成するケースがあるかと思いますが、会社から付与されているメール アドレスを Microsoft アカウントとして登録、使用しているケースが多いかと思います。

場合によっては、Microsoft アカウントを Azure ポータルに追加してもポータルにアクセスできないケースがあったので、纏めてみました。

Microsoft アカウントを Azure ポータルに追加してもポータルへのログインが不可となるケース

原因

Azure AD B2B コラボレーション (Preview) の挙動によるもので、下記のすべての条件に当てはまる場合に発生します。考えられるのは、Office 365 などの Microsoft クラウド サービスを会社として利用するために、Azure AD にドメインを登録、すぐには使わないけど勝手にユーザーを追加されるのは困るから、というパターンですね。

  • メール アドレスのメール ドメインが Azure Active Directory のドメインとして登録されている
  • その Azure Active Directory のドメインにメール アドレスのユーザーとして登録されていない
  • その Azure Active Directory のドメインで AllowEmailVerifiedUsers が $false となっている
  • メール アドレスが Microsoft アカウントとして登録している

Azure AD B2B コラボレーション (Preview) とは

平たく言うと、Azure AD に指定したグループへの参加やアプリケーション利用のプロセスを容易にするために、外部のユーザーを招待 (メール アドレス)する機能となります (2017/03/15 現在、Azure AD B2B コラボレーションはパブリック プレビュー)。

挙動としてざっくりではありますが、フローは下図のようになります。

通知メールは、以下のような内容で連絡がきます。

通知メールの [Get Started] をクリックすると、以下の画面が表示されます。

[Next] をクリック、サインイン処理を実施すると、アプリケーション利用の画面となりますが、Azure ポータルにアクセスできるようになります。

ここで、招待したメール アドレスのメール ドメインが「Azure AD のドメインとして登録されているかどうか」、「Azure AD のドメインにメール アドレスのユーザーが登録されているかどうか」、「Azure AD で AllowEmailVerifiedUsers の値が $true になっているかどうか」で挙動が変わります。

上記の判断から以下のパターンに分かれます。パターン 3-2 がポータルにアクセスできないケースとなります。

  • パターン 1 : メール ドメインが Azure AD ではない場合
  • パターン 2 : メール ドメインが Azure AD かつメール アドレスのユーザーが登録されている場合
  • パターン 3 : メール ドメインが Azure AD かつメール アドレスのユーザーが登録されていない場合
    • パターン 3-1 : Azure AD で AllowEmailVerifiedUsers の値が $true の場合
    • パターン 3-2 : Azure AD で AllowEmailVerifiedUsers の値が $false の場合

パターン 3-2 がポータルにアクセスできない原因については、以下のサイトに記載があります。

パターン 1 : メール ドメインが Azure AD ではない場合

フローは下図のようになり、問題なくアクセスできるようになります。

パターン 2 : メール ドメインが Azure AD かつメール アドレスのユーザーが登録されている場合

フローは下図のようになり、問題なくアクセスできるようになります。

パターン 3 : メール ドメインが Azure AD かつメール アドレスのユーザーが登録されていない場合

フローは下図のようになります。

挙動としては、アクセス、サインイン時に Azure AD にメール アドレスをユーザーとして追加する画面が表示されます。ここで、Azure AD にメール アドレスをユーザーとしてログインするためのパスワードと Azure AD で表示される表示名を入力する必要があります。

パターン 3-1 : Azure AD で AllowEmailVerifiedUsers の値が $true の場合

フローは下図のようになり、問題なくアクセスできるようになります。この場合、Azure AD には招待を受けたユーザーが追加されます。

パターン 3-2 : Azure AD で AllowEmailVerifiedUsers の値が $false の場合

フローは下図のようになり、アクセスすることはできません。

以下のようなエラーが表示されます。

回避方法について

回避方法については、先のほうで記載したとおり、「Azure サブスクリプションに紐付けられた Azure Active Directory (Azure AD) 上にアカウントを作成」がありますが、Azure クラシック ポータル (https://manage.windowsazure.com) 使って、Azure AD に Microsoft アカウントとなっているメール アドレスを追加することができます。Azure クラシック ポータルを使った場合、通知メールは送付せず、認証フローなしで追加することが可能です。

Azure クラシック ポータルにアクセスし、[Active Directory] – [ Microsoft アカウントとなっているメール アドレスを追加するドメインのディレクトリ名] – [追加] をクリックして、 Microsoft アカウントとなっているメール アドレスを追加します。

ちなみに、Azure クラシック ポータルの [設定] – [管理者] – [追加] から共同管理者を追加することで、Azure AD にもユーザーも作成することができます。

ただし、この方法の場合、Azure ポータル上でリソースの作成、削除など好き勝手行われてしまうため、きちんとアクセス権の制御を行う必要があります。

また、Azure クラシック ポータルを使った手順については、既に Microsoft アカウントとして作成されているメール アドレスのみとなります。

Azure AD のドメインとして登録されてしまっている場合、そのメール アドレスを新規に Microsoft アカウントを作成することはできません。
// そもそも Azure AD 内にメール アドレスのユーザーが登録されていたらこの回避方法いらないんですけどねw

補足

Azure Active Directory における AllowEmailVerifiedUsers の値について、既定では以下のとおり「$true」になっています。

AllowEmailVerifiedUsers の値を「$false」にするには、Set-MsolCompanySettings コマンドレットを用いて変更します。

参考