Azureサブスクリプションを別のテナントに移動する

はじめに

Azureサブスクリプションを別のテナント(Azure Active Directory)に移動する機会がありましたので、実際に作業してみて分かったことなどを書き記したいと思います。

今回、個人規模で利用できるMOSP(Microsoft Online Subscription Program)のサブスクリプションを別テナントに移動し、法人規模で利用するEA(Enterprise Agreement)のサブスクリプションにAzureリソースを移動するまでを実施しました。

サブスクリプションの別テナントへの移動について述べたいと思います。

移動が発生するケース

サブスクリプションを移動する場面は少ないと思いますが、理由は主に次のようなものと思います。

  • 会社の合併により、合併先のテナントにサブスクリプションを移動する必要がある
  • 会社の分社により、新会社のテナントにサブスクリプションを移動する必要がある
  • PoC目的などでスモールスタートした環境が商用に昇格するため、会社のテナントにサブスクリプションを移動する必要がある

移動の制約・制限事項

  • CSPのサブスクリプションではテナントの変更はサポートされていません
  • サブスクリプションの移動によりAzure RBACを使用してロールが割り当てられているユーザーはアクセスできなくなります(サービス管理者と共同管理者もアクセスできなくなります)
  • キーコンテナーやマネージドIDが存在する場合、サブスクリプション移動後にそれらの修正や再作成が必要になります
  • サブスクリプション移動により影響を受けるサービスがあります(前述のAzure RBACなど)。また、AKSなどは別テナントへの移動がサポートされていません。詳しくは、以下のリンクを参照ください。

    learn.microsoft.com

移動概要

前提条件

本章は下記の前提を満たしている前提で記述しています。

  • 移動先のテナントはすでに存在する
  • 操作に必要な権限が適切に付与されている

アセスメント

まずは移動元のサブスクリプションにどのようなリソースが含まれているか、移動できるのかできないのか確認します。評価基準は以下のように設定しました。

なお、情報取得はAzure CLIやAzure Powershellを使います。

リソースのボリュームにもよりますが、アセスメントには数か月を要すると思います。

移動可能 評価○

  • 移動がサポートされているリソース

移動可能 評価▲

  • 移動は可能だが、移動前後に修正や設定が必要なリソース
    (Azure Logic AppsやAzure DevOpsなど)
  • 念のためバックアップを取得することが推奨されるリソース
    (Azure Data Factoryなど)

移動不可 評価×

  • 移動がサポートされていないリソース
    (Azure Kubernetes ServiceやAzure Lab Service、Azure Machine Learningなど)

移動不要 評価なし

  • 移動が不要なリソース(移動を機に削除するリソース)

サブスクリプションの準備

続いて、移動先のサブスクリプションを作成します。EA、オープン、MOSP、CSPなどのライセンス形態により必要な操作や権限は異なります。今回はEAサブスクリプションを準備しました。

learn.microsoft.com

また、サブスクリプションの移動を実行するユーザー(以下、実行ユーザー)に対して”所有者ロール”を付与します。

learn.microsoft.com

B2B招待とサブスクリプション権限付与

上述の”実行ユーザー”は移動先テナントに所属していますが、移動元のサブスクリプションも操作できる必要があります。そのため、まずは”実行ユーザー”を移動元テナントにB2B招待します。

learn.microsoft.com

招待後、下図のように移動元と移動先のテナントが閲覧可能になります。

その後、”実行ユーザー”に移動元サブスクリプションの”所有者ロール”を付与します。

サブスクリプションの情報取得

サブスクリプションの移動によりAzure RBACはすべてリセットされるため、移動後にAzure RBACを復元できるよう移動元のサブスクリプションの下記情報を取得します。

取得方法は下記リンクを参照ください。

  • ロールの割り当ての一覧
  • カスタムロールの一覧
  • Key Vaultの一覧
  • Azure SQL データベースと Azure AD 認証の一覧
  • ACLの一覧
  • 他の既知のリソースの一覧

learn.microsoft.com

リソース削除、設定変更

移動がサポートされていないリソースを削除したり、移動に影響があるリソースの設定変更や解除を実施します。
(Azure AD B2Cのリンク解除、Azure DevOpsやAzure Logic Appの接続設定の変更など、リソース毎に実施しなければならない作業を実施します)

サブスクリプション移動

”実行ユーザー”が移動元と移動先のテナントに属し、さらに移動元と移動先のサブスクリプション所有者であれば、移動可能です。

実際の操作は移動元のサブスクリプションで以下を実施するだけです。

  1. [ディレクトリを変更する]をクリック
  2. [フェールオーバー先]が移動先テナントであることを確認
  3. [ディレクトリを変更しても~]にチェック
  4. [変更]をクリック

learn.microsoft.com

今回は課金所有権を変更しませんでしたが、移動元のテナントを削除したい場合は、新しいアカウント管理者にサブスクリプションの課金所有権を譲渡する必要があります。

(課金所有権が移動元に残っているとテナントは削除できません)

learn.microsoft.com

移動自体は10分程度で完了すると思いますが、Azure Portal画面に正常に反映されるには時間がかかる場合があります。

移動後、移動元のテナントでは移動対象のサブスクリプションが表示されなくなりますので、以後は移動先テナントで作業します。

「Azure RBACがすべてリセットされるなら、誰が移動先のサブスクリプションを操作できるの?」と疑問に思う方もいると思います。

結論から言うと”実行ユーザー”で操作可能です。

Azure Portal>サブスクリプション>アクセス制御(IAM設定)

移動後は上記設定がリセットされていますが、上位の管理グループなどで権限を継承している場合を除き、”実行ユーザー”だけは例外的に操作可能です。

Azure RBACの復元

前述の「5.サブスクリプションの情報取得」で取得した情報をもとにロール割り当てやカスタムロールなどを移動先のサブスクリプションで復元します。

Azure CLIで取得した場合はAzure CLIで復元し、Azure Powershellで取得した場合はAzure Powershellで復元するようにしてください。双方とも類似した情報を取得しますが、出力するJSONファイルの表記形式が異なるためです。

リソース作成、再設定

移動がサポートされていないリソースを移動先のサブスクリプションで作成したり、テナントが変更による接続情報や認証情報を修正したりします。
(Azure AD B2Cの再リンク、Azure DevOpsやAzure Logic Appの接続設定の変更などリソース毎に実施しなければならない作業を実施します)

まとめ

  • サブスクリプションの移動が発生するケースは限定的
  • アセスメント(リソースの移動可否判定)は時間がかかる
  • サブスクリプションの移動自体は短時間で完了。ただし、画面反映には時間がかかる場合がある
  • サブスクリプションの移動前後で作業が発生するリソースがある

さいごに

今回はサブスクリプションの移動(テナント変更)について説明しました。

次回はMOSPサブスクリプションからEAサブスクリプションへのリソースの移動について説明したいと思います。

執筆担当者プロフィール
大澤 悠

大澤 悠(日本ビジネスシステムズ株式会社)

AzureへのリフトアンドシフトやSQL Server、Oracle、PostgreSQL等のデータベース案件を担当。現在はマネジメントが中心。愛車のKAWASAKI NINJA 1000SXでロングツーリングするのが趣味。

担当記事一覧