どうも、フリーランスエンジニアのMakotoです。
リソースを簡単に作って不要になったらすぐに削除できるのがクラウドのメリットですが、時には意図しない形で”うっかり“削除してしまうことがあります。
そうですね、、個人環境ならそこまで注意深く操作するわけでもないというのも理由の一つですがよくありそうなパターンとしては
- リソースグループごとまとめて削除したら残しておきたいリソースも含まれていた
- よく似た名前の仮想マシンを見間違えて必要なほうを消してしまった
などでしょうか。
本来は「削除できない権限」のユーザーで操作すべきですが、個人学習などのように管理者ユーザーで操作したいケースもありますよね。
そこで今回は、Azureリソースを削除できないようにする「ロック」の機能についてご紹介します。とても簡単に設定できるいっぽうで知らないとマズい注意点もありますので、ぜひ最後までお読みください。
それではいってみましょう!
ロックの種類
ロックは、作成したリソースを誤って削除してしまわないようにするための機能で、次の2つの種類があります。
ロックの種類 | 変更 | 削除 |
---|---|---|
読み取り専用ロック | × | × |
削除ロック | 〇 | × |
読み取り専用ロックは変更・削除どちらもできません。ReadOnlyの状態になります。
削除ロックは変更はできますが削除ができません。CanNotDeleteの状態になります。
どちらともロックされているリソースの参照はできます。
あまり意味はありませんが、一つのリソースに対して両方のロックを設定することもできます。この場合は厳しいほうの「読み取り専用ロック」が優先されます。
ロックされているリソースを削除したい場合は、先にロックを解除してそのあとにリソースを削除します。管理者であろうとロックを解除してからでないとリソースを削除することはできません。
ロックされているリソースを削除する場合は先にロックを解除する必要がある
ロックを適用する範囲(スコープ)
ロックはサブスクリプション、リソースグループ、リソースに対して設定することができます。管理グループに対して設定することはできません。
Azureリソースの階層構造についてはこちらの記事で詳しく解説しています。
親スコープでロックを適用すると、その配下にあるすべてのリソースは同じロックを継承します。この場合も厳しいほうの「読み取り専用ロック」が優先されます。
Azureポータルの画面をお見せしながら例を挙げます。
サブスクリプション、リソースグループ、リソースそれぞれのメニューの中に「ロック」のメニューがあり、そこから登録や編集、削除ができます。
次にリソースグループ内にある仮想マシンのロックを確認してみると、リソースグループに対して設定したロックが継承されており編集や削除はできないことがわかります。
ロックをはサブスクリプション、リソースグループ、リソースに対して設定できる。親スコープのロックは継承される。
ロックの注意点
公式ドキュメントの「ロック適用前の考慮事項」に記載があるとおり、ロックを適用すると予期しない結果になる場合がありますので、代表的な注意点をいくつかお伝えします。
仮想マシンの停止/開始ができなくなる例をご紹介しましたが、特に「読み取り専用ロック」は変更操作を受け付けなくなるため注意が必要です。
自動スケールができなくなる
仮想マシンスケールセットやApp Serviceに対して「読み取り専用ロック」を設定すると、新しくインスタンスを作成したり削除できなくなるので結果的に自動スケールが働かなくなります。
Azureリソースのもつデータはロックされない
ストレージアカウントやSQL Databaseをロックしてもそれらに保存されているデータが保護されるわけではありません。
例えば、ストレージアカウントに対して「削除ロック」を設定してもBlobを削除することはできます。
データの保護はバージョニングやバックアップなどサービスの機能で行う必要があります。
Azure Advisorが機能しなくなる
サブスクリプションに対して「読み取り専用ロック」を設定すると、Azure Advisorが正しく動かなくなります。
というか、サブスクリプション配下の全てのリソースが変更できなくなり、新しくリソースを作成することもできなくなるので、まず間違えないですかね^^;
Azureが自動的にロックする場合もある
注意点というよりも知っておいた方が良い点なのですが、Azureによって自動的にロックされるリソースもあります。
例えば、App Serviceドメインというサービスを使ってAzureでドメインを購入した場合、そのドメインはAzure DNSで管理されるため自動的に「DNSゾーン」が作成されます。
これらドメインを管理するために必要な「App Serviceドメイン」「DNSゾーン」はいずれも誤って削除してしまうとマズイのでAzureによって自動的に「削除ロック」が登録されます。
まとめ
今回はAzureリソースを削除できないようにする「ロック」の機能について、Azureポータルの画面をお見せしつつご紹介しました。
ロックの種類 | 変更 | 削除 |
---|---|---|
読み取り専用ロック | × | × |
削除ロック | 〇 | × |
AZ-900試験で問われそうなポイントは次のとおりです。
- 読み取り専用ロックと削除ロックの違い
- 継承されるかどうか
- ロック済みリソースの削除方法
また、試験では恐らく問われませんが実際にロックを利用する上での注意点についてもしっかり理解しておきましょう。