Entra IDのゲストユーザーのmail属性編集に注意!
この記事の内容
- Azure管理ポータルでゲストユーザーのメールアドレスを編集すると、
proxyAddresses属性に古いアドレスが残り続ける - 一度入ってしまった
proxyAddressesの値をGUI・PowerShellで削除する方法が見当たらない - 残ったアドレスは他のユーザーに割り当てることができず、競合が発生する
- Exchange Onlineによるアプローチはゲストユーザーにはライセンス付与できず利用不可
- 最終手段はゲストユーザーの削除・再招待だが、権限情報がすべて失われる点に注意
proxyAddressesとは
proxyAddresses(プロキシアドレス)は、メールアドレスの別名(エイリアス)を管理するための属性です。Exchange OnlineやExchange Server(オンプレミス)を扱ったことがある方にはおなじみの属性で、1つのユーザーに対して複数のメールアドレスを保持させることができます。
この属性の値は、プライマリSMTPアドレスは大文字のSMTP:、セカンダリSMTPアドレスは小文字のsmtp:がプレフィックスとして付きます。
問題の再現手順
初期状態の確認
今回は検証用に新しいEntra ID(Azure Active Directory)テナントを作成し、外部ユーザーを1名招待した状態から始めます。招待したゲストユーザーのアカウントには、外部テナントのUPNが設定されており、ユーザーオブジェクトの種別は#EXT#サフィックスで識別できます。
PowerShellでユーザーの属性を確認すると、以下のような状態です。
Get-AzureADUser | Select-Object DisplayName, Mail, ProxyAddresses
この時点ではProxyAddressesにはアドレスが1件だけ入っており、問題はありません。
メールアドレスを変更してみる
Azure管理ポータルの「連絡先情報」から「メール」を編集し、別のアドレスに変更して保存します。
すると、画面上のメール欄は新しいアドレスに更新されますが、proxyAddressesを確認すると次のような状態になります。
- 新しいアドレス → 大文字の
SMTP:(プライマリ)として追加される - 変更前の古いアドレス → 小文字の
smtp:(セカンダリ)として残り続ける
何度メールアドレスを変更しても、古いアドレスが削除されることはなく、変更のたびにproxyAddressesに値が追加されていきます。
「その他のメール」を変更した場合はどうか
管理ポータルには「メール」のほかに「その他のメール」という項目もあります。こちらを変更した場合は、proxyAddressesには影響が出ないことが確認できます。proxyAddressesはmail属性(メール欄)の変更とのみ連動しているようです。
何が問題になるのか
削除できなくなったアドレスがproxyAddressesに残り続けると、そのアドレスを他のユーザーに割り当てようとしたときに競合が発生します。
実際に別のユーザーを新規作成し、そのメールアドレスに競合しているアドレスを指定して保存しようとすると、次のようなエラーが発生して保存できません。
原因を調べると、ゲストユーザーのproxyAddressesにそのアドレスが残ったままになっていることが確認できます。
削除を試みた方法と結果
GUIからの削除
Azure管理ポータルの画面上からは、proxyAddressesのセカンダリアドレスを個別に削除する操作は用意されていません。
PowerShellからの削除
PowerShellでオブジェクトに対してプロパティを設定する方法や、拡張属性(ExtensionValue・ExtensionProperty)を使った削除も試みましたが、今のところ成功には至っていません。
# Azure AD モジュールでの確認例
Get-AzureADUser -ObjectId <ObjectId> | Select-Object -ExpandProperty ProxyAddresses
属性として見えてはいるものの、ゲストユーザーに対してProxyAddressesを直接操作する手段が見当たらない状況です。
Exchange Online管理画面からの削除
Exchange Onlineの管理画面からメールボックスのプロパティを操作すれば削除できるのではと考え、試みました。しかし、Exchange Onlineでメールボックス関連の属性を操作するには、対象ユーザーがメールボックスを持っている必要があります。
ゲストユーザーはExchange Onlineのライセンスを付与できないため、この方法は利用できませんでした。試用版ライセンスの割り当ても試みましたが、ゲストユーザーであるためエラーとなりました。
現時点での回避策
根本的にproxyAddressesの不要な値を削除する方法は、現時点では確認できていません。
やむを得ない場合の回避策として、ゲストユーザーを一度削除して再招待するという方法があります。ただし、この方法には大きなデメリットがあります。
- グループのメンバーシップが失われる
- Teamsのチャネルへのアクセス権が失われる
- SharePointサイトやOneDriveの権限が失われる
- その他、ユーザーオブジェクトに付与されていたすべての権限情報が失われる
実際の運用環境では、この影響範囲は非常に大きくなる可能性があります。
まとめ
Azure管理ポータルでゲストユーザーの「メール」属性を編集すると、proxyAddressesに古いアドレスがセカンダリSMTPとして残り続けるという、バグに近い挙動が確認されています。一度このような状態になってしまうと、GUIやPowerShell、Exchange Onlineいずれの方法でも削除が難しく、場合によっては他のユーザーへのアドレス割り当てができなくなるという問題が発生します。
ゲストユーザーのメールアドレスをテストやトラブルシューティングの際に気軽に変更することは、この問題を引き起こすリスクがあります。ゲストユーザーのメール属性の変更は、十分に注意した上で行うようにしてください。
もし削除方法をご存知の方がいれば、ぜひコメントで教えていただけると助かります。