Azure Backup の Cross Subscription Restore を試す！

こんにちは、駆け出しアーキテクトのやまぱんです。
今回は Azure Backup のプレビュー機能を試したのでメモします。
たまたま書き始めた 12/15 の Azure のアドベントカレンダーが空いていたので、日付が変わるまでに書き終わればこれを設定したいと思います。
 → 書き終えたので無事、[Microsoft Azure Tech Advent Calendar 2022](https://qiita.com/advent-calendar/2022/microsoft-azure-tech) の 15 日目の記事です。🦐

#### Cross Subscription Restore とは
11/22 にプレビューになった Azure Backup の新機能です。
執筆時時点でもプレビュー状態です。

https://azure.microsoft.com/ja-JP/updates/preview-cross-subcription-restore-for-azure-virtual-machines/

- 上記の抄訳
>Azure Virtual MachineのCross Subscription Restoreのプレビューをお知らせします。Cross Subscription Restoreは、Azure Backupで作成したリストアポイントから、新規作成またはディスクの復元を通じて、任意のサブスクリプションに Azure Virtual Machineを復元することができます。
デフォルトでは、Azure Backupは、リストアポイントが利用可能な同じサブスクリプションにリストアします。この新機能により、リストア権限が利用可能であれば、テナント下の任意のサブスクリプションにリストアする柔軟性を得ることができます。管理された Azure 仮想マシンの Cross Subscription Restore は、Vault からのみ起動でき、スナップショットからは起動できません。Cross Subscription Restore は、MSI (Managed System Identities) を使用したリストアでもサポートされています。暗号化された Azure 仮想マシンと信頼された起動仮想マシンではサポートされていません。

Cross Subscription Restore とは名前の通り、サブスクリプションをまたいだ Azure VM の復元ができる機能です。

似たような名前の機能として Cross Region Restore があります。
略すと CRR と CSR です。ややこしい。
Cross Region Restore はリージョンをまたいだ復元が可能ですが同一サブスクリプション内でのリストアに限られます。
Cross Region Restore については Azure Backup のサポートブログの方に記事がありますので、紹介しておきます。

https://jpabrs-scem.github.io/blog/AzureVMBackup/CRR/

 
#### 前提条件
Cross Subscription Restore の前提条件をまとめると以下です。

- 同一テナント配下のサブスクリプション
- 実行ユーザーがリストア権限を有すること
- リストアオプションは ”新規VM作成” か　"ディスクの作成" 
- コンテナー層からの復元
- ADE により暗号化された VM や Trusted VM では利用できない
- マネージド システム ID (MSI) を使った VM のバックアップであること 
- マネージド VM であること (アンマネージドVMではないこと)


>参考
クロス サブスクリプション復元 (プレビュー)	復元ポイントから任意のサブスクリプション (Azure RBAC 機能に従って) に Azure Virtual Machines またはディスクを復元できます。
マネージド仮想マシンに対してのみ、クロス サブスクリプションの復元をトリガーできます。
クロス サブスクリプションの復元は、マネージド システム ID (MSI) を使用した復元でサポートされています。
スナップショットの復元ではサポートされていません。
アンマネージド VM、暗号化された Azure VM、トラステッド起動の VM ではサポートされていません。
・復元オプション - クロス サブスクリプション復元 (プレビュー)
https://learn.microsoft.com/ja-JP/azure/backup/backup-azure-arm-restore-vms#restore-options


コンテナー層からの復元に限られるのはゾーン指定でのリストア (CZR) と同じ条件ですね。
復旧ポイントの回復の種類にスナップショット層が含まれている復旧ポイントの場合は、インスタントリア (スナップショット層からの復元) が優先される (コンテナー層からのリストアにはならない) ためです。
インスタントリストアが使うスナップショット層のデータの保存先はバックアップ専用のストレージ (コンテナー層) ではなく、Subscription 内の該当の Azure VM にアタッチされているマネージドディスクのスナップショット領域にこっそり保存されています。(ユーザーからは確認できないです) 
このことが関係していると考えられます。

下記の画面ショットの回復の種類が "スナップショット" となっていることが条件です。
なお、コンテナー層とは Vault-Standard を指します。
![2022-12-15_17h18_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/0373fca7-9d3d-27fe-c459-bae8fc55b6e6.png)

結構、ゾーン指定してリストアする際の条件と似ていることがわかります。
ちなみにゾーン指定してリストアすることを　Cross Zone Restore 、CZR といいます。
Azure Backup では、CRR、CSR、CZR、があるということですね。

::: note info
ゾーン指定してリストア (CZR) する条件：
- ソース VM がゾーン固定であり、暗号化されていない
- 復元ポイントがコンテナー層にのみ存在する (スナップショットのみ、またはスナップショット層とコンテナー層はサポートされていません)
- 回復オプションが、新しい VM の作成またはディスクの復元のいずれかである (ディスクの置き換えオプションではソース データが置き換えられるので、可用性ゾーン オプションは固定されます)
- コンテナーのストレージ冗長性が ZRS であること (GRS は不可)
- または、コンテナーのストレージ冗長性が RA-GRS (リージョン間の復元に対して有効である)、かつペアになっているリージョンでゾーンがサポートされている場合の Cross Region Restore 

上記は 下記　Docs の **"要約すると、可用性ゾーンは次の場合にのみ表示されます。"** あたりに記載されています。
なぜか  Recovery Services コンテナー の 冗長性 が RA-GRS の場合に利用できる Cross Region Restore の欄にありますが、その場合のみではなく、Recovery Services コンテナー の冗長性が ZRS のものを使ってリストアをする際にもゾーン指定してリストアすることは可能です。
https://learn.microsoft.com/ja-jp/azure/backup/backup-azure-arm-restore-vms#restore-in-secondary-region
:::

:::note info
Trusted VM：Trusted 起動が有効になっているVM で Gen2 の VM のみ対応している。
・トラステッド起動を有効にして VM をデプロイする
https://learn.microsoft.com/ja-jp/azure/virtual-machines/trusted-launch-portal?tabs=portal%2Cportal2
:::

:::note info
 デフォルトの場合はマネージド システム ID (MSI)となっています。
:::

#### ややこしい Azure Backup リストア三大用語

:::note info
ややこしい Azure Backup リストア三大用語をおさらい
・CZR : Cross Zone Restore 
・CRR : Cross Region Restore 
・CSR : Cross Subscription Restore
:::


#### やりたいこと
違うSubscription に Azure VM をリストアする。

>バックアップを取得した環境
>- Subscription 名 : takXXXXX
>- Azure VM 名：neko-vm
>- リージョン：Japan East
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/f3d9a503-bf2a-01cb-9e2f-7ba1d895a091.png)

> リストアしたい環境
>- Subscription 名：tatXXXXX
>-  Azure VM 名：nekoneko-vm　

#### やってみる
データストアが 標準コンテナーになっていること、そしてリストア先のサブスクリプションを選べることを確認して各種必須項目を入力して実施します。超簡単。正直もう少しいろいろ設定が必要になるかと思っていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/897547c3-cc6a-7a27-949a-5caff7cca8d7.png)


##### ジョブをみてみる 
**Target Subscription ID** という項目があるのが分かります。
![2022-12-16_08h12_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/614f2127-789d-a0ed-40bc-de265a8cb724.png)

無事にCross Subscription Restore 完了。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/36456307-edb9-bb75-de4f-9917ce5ae8fb.png)

やー簡単！！🦐
サブスクリプションがオリジナルの neko-vm は **takXXXX** で、あたらしい nekoneko-vm は **tatXXXX** になっていることが分かります。

#### 追加の前提事項
リストアするまでに事前に下記のリソースを作っておく必要がある。

+ リソースグループ
+ 仮想ネットワークおよびサブネット
+ ストレージ アカウント(ステージングの場所)


~~また Cross Subscription Restore する際、リストア先の VM のリージョンは選べないので、リソースグループ以外は元の Azure VM と同じリージョンに作っておく必要があります。~~

:::note info
~~Cross Subscription Restore する際、リストア先の VM のリージョンは選べない。~~
 → 2025/05/01(木) 追記 GA 後にできるようになっていました°˖✧◝(⁰▿⁰)◜✧˖°
 https://learn.microsoft.com/ja-jp/azure/backup/backup-azure-arm-restore-vms
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/2458219d-3e39-45cf-b15c-71751803de09.png)

:::

詳しくは後述しますが、ゾーンは条件を満たせば選ぶことも可能です。

:::note info
Cross Subscription Restore する際、リストア先の VM のゾーンは CZR の条件も満たせば選べる。
:::

#### CSR と CRR や CZR は併用できるのか？
こちらも試してみました
結論からいうと、現在どちらも可能です

##### CSR ＆ CRR
~~先ほど以下のように書いた通り、リージョンは指定できないのでできません。~~
~~> Cross Subscription Restore する際、リストア先の VM のリージョンは選べないので、リソースグループ以外は元の Azure VM と同じリージョンに作っておく必要があります。~~
~~Cross Subscription Restore する際、リストア先の VM のリージョンは選べない。~~

 → 2025/05/01(木) 追記 GA 後にできるようになっていました°˖✧◝(⁰▿⁰)◜✧˖°
 https://learn.microsoft.com/ja-jp/azure/backup/backup-azure-arm-restore-vms
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/2458219d-3e39-45cf-b15c-71751803de09.png)

##### CSR ＆ CZR
こちらは可能です。
CSR と CZR の条件を満たした場合は CSR と CZR を同時に実施することが可能です。
具体的には下記のような条件を満たせば、サブスクリプションとゾーンを同時に変更してリストアすることが可能。

:::note info
CSR と CZR を同時に実施して、サブスクリプションとゾーンを同時に変更してリストアするための条件
- 同一テナント配下のサブスクリプション
- 実行ユーザーがリストア権限を有すること
- リストアオプションは ”新規VM作成” か　"ディスクの作成" 
- コンテナー層からの復元
- ADE により暗号化された VM や Trusted VM では利用できない
- マネージド システム ID (MSI) を使った VM のバックアップであること 
- マネージド VM であること (アンマネージドVMではないこと)
- Cross Region Restore ではないこと
- **Recovery Services コンテナーの冗長性が ZRS であること**
:::