AZ-900

【AZ-900】Azureリソースのロックを使ってうっかり削除を防ぐ!

【AZ-900】Azureリソースのロックを使ってうっかり削除を防ぐ!

どうも、フリーランスエンジニアのMakotoです。

リソースを簡単に作って不要になったらすぐに削除できるのがクラウドのメリットですが、時には意図しない形で”うっかり“削除してしまうことがあります。

例えばどんなうっかりがあるの?

そうですね、、個人環境ならそこまで注意深く操作するわけでもないというのも理由の一つですがよくありそうなパターンとしては

  • リソースグループごとまとめて削除したら残しておきたいリソースも含まれていた
  • よく似た名前の仮想マシンを見間違えて必要なほうを消してしまった

などでしょうか。

本来は「削除できない権限」のユーザーで操作すべきですが、個人学習などのように管理者ユーザーで操作したいケースもありますよね。

そこで今回は、Azureリソースを削除できないようにする「ロック」の機能についてご紹介します。とても簡単に設定できるいっぽうで知らないとマズい注意点もありますので、ぜひ最後までお読みください。

それではいってみましょう!

ロックの種類

ロックは、作成したリソースを誤って削除してしまわないようにするための機能で、次の2つの種類があります。

ロックの種類変更削除
読み取り専用ロック××
削除ロック×

 

読み取り専用ロックは変更・削除どちらもできません。ReadOnlyの状態になります。

削除ロックは変更はできますが削除ができません。CanNotDeleteの状態になります。

どちらともロックされているリソースの参照はできます。

あまり意味はありませんが、一つのリソースに対して両方のロックを設定することもできます。この場合は厳しいほうの「読み取り専用ロック」が優先されます。

ロックされているリソースを削除したい場合は、先にロックを解除してそのあとにリソースを削除します。管理者であろうとロックを解除してからでないとリソースを削除することはできません。

ロックされているリソースを削除する場合は先にロックを解除する必要がある

ロックを適用する範囲(スコープ)

ロックはサブスクリプション、リソースグループ、リソースに対して設定することができます。管理グループに対して設定することはできません。

Azureリソースの階層構造

Azureリソースの階層構造についてはこちらの記事で詳しく解説しています。

【AZ-900】管理グループ、サブスクリプション、リソースグループとは?Azureリソースの階層構造を解説!
【AZ-900】管理グループ、サブスクリプション、リソースグループとは?Azureリソースの階層構造を解説!どうも、フリーランスエンジニアのMakotoです。 今回は、Azureリソースの階層構造を表す用語について解説します。 ...

親スコープでロックを適用すると、その配下にあるすべてのリソースは同じロックを継承します。この場合も厳しいほうの「読み取り専用ロック」が優先されます。

Azureポータルの画面をお見せしながら例を挙げます。
サブスクリプション、リソースグループ、リソースそれぞれのメニューの中に「ロック」のメニューがあり、そこから登録や編集、削除ができます。

リソースグループにロックを追加 この画面の例ではリソースグループに対して「読み取り専用ロック」を登録しています。登録したロックは一覧に表示され、あとから編集や削除ができます。

Image from Gyazo

次にリソースグループ内にある仮想マシンのロックを確認してみると、リソースグループに対して設定したロックが継承されており編集や削除はできないことがわかります。

継承されたロックの確認 仮想マシンに対して「削除ロック」を追加しました。この場合、より厳しい条件の「読み取り専用ロック」が優先されます。

仮想マシンにロックを追加 試しに仮想マシンのサイズを変更しようとしても「Please remove the lock and try again.(ロックを外して再度お試しください)」とエラーになります。ちなみに、読み取り専用の状態では仮想マシンの停止や再起動、開始もできません。(削除ロックでは可)

読み取り専用ロックされた仮想マシンは変更できない

ロックをはサブスクリプション、リソースグループ、リソースに対して設定できる。親スコープのロックは継承される。

ロックの注意点

公式ドキュメントの「ロック適用前の考慮事項」に記載があるとおり、ロックを適用すると予期しない結果になる場合がありますので、代表的な注意点をいくつかお伝えします。

仮想マシンの停止/開始ができなくなる例をご紹介しましたが、特に「読み取り専用ロック」は変更操作を受け付けなくなるため注意が必要です。

自動スケールができなくなる

仮想マシンスケールセットやApp Serviceに対して「読み取り専用ロック」を設定すると、新しくインスタンスを作成したり削除できなくなるので結果的に自動スケールが働かなくなります。

読み取り専用ロックされたVMSSは自動スケールできない

Azureリソースのもつデータはロックされない

ストレージアカウントやSQL Databaseをロックしてもそれらに保存されているデータが保護されるわけではありません。

例えば、ストレージアカウントに対して「削除ロック」を設定してもBlobを削除することはできます。

データの保護はバージョニングやバックアップなどサービスの機能で行う必要があります。

Azure Advisorが機能しなくなる

サブスクリプションに対して「読み取り専用ロック」を設定すると、Azure Advisorが正しく動かなくなります。

というか、サブスクリプション配下の全てのリソースが変更できなくなり、新しくリソースを作成することもできなくなるので、まず間違えないですかね^^;

Azureが自動的にロックする場合もある

注意点というよりも知っておいた方が良い点なのですが、Azureによって自動的にロックされるリソースもあります。

例えば、App Serviceドメインというサービスを使ってAzureでドメインを購入した場合、そのドメインはAzure DNSで管理されるため自動的に「DNSゾーン」が作成されます。

これらドメインを管理するために必要な「App Serviceドメイン」「DNSゾーン」はいずれも誤って削除してしまうとマズイのでAzureによって自動的に「削除ロック」が登録されます。

Azureによって自動的にロック

まとめ

今回はAzureリソースを削除できないようにする「ロック」の機能について、Azureポータルの画面をお見せしつつご紹介しました。

ロックの種類変更削除
読み取り専用ロック××
削除ロック×

 

AZ-900試験で問われそうなポイントは次のとおりです。

  • 読み取り専用ロックと削除ロックの違い
  • 継承されるかどうか
  • ロック済みリソースの削除方法

また、試験では恐らく問われませんが実際にロックを利用する上での注意点についてもしっかり理解しておきましょう。

 

Azure入門コースを見る