Azure リソースの変更、削除をロックを使って防止

Azure,Resource Group,Virtual Machines

Azureロックの機能概要と、ロックを使ったリソースの削除・変更を防止手順です。

Azure ロックはリソースの削除や変更を防止できる機能で、操作ミスなどによる不意なリソース変更を防ぐことができます。

リソースをロックしてインフラストラクチャを保護する

ロックをリソースグループや仮想マシン(Azure VM)に適用し、仮想マシン(ディスクなどの関連アイテムを含む)の削除や起動停止を制限できるか試してみました。

※本記事では、Azure Blueprintsを使ったロックについては触れていません。
※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。

スポンサーリンク

Azure ロックの種類や適用範囲

削除と読み取り専用のロックがある

削除ロックと、読み取り専用ロックの種類あります。

ロックの種類
削除 リソースの削除はできません。
リソースの起動や停止、サイズなどの設定変更などは可能です。
読み取り専用 閲覧者と同等の権限で、リソースの情報を閲覧することしかできません。
リソースの設定変更だけでなく起動や停止もできません。

スコープ(適用範囲)の種類

ロックのスコープ(適用範囲)には3種類あります。
上位に適用した場合、その配下のリソースにも適用されます。

スコープ(適用範囲)
サブスクリプション(最上位) サブスクリプションのアイテム全体にロックを割り当て
リソースグループ リソースグループ内のアイテムすべてにロックを割り当て
リソース(アイテム単位) リソース(アイテム)個別にロックを割り当て

ロックを複数適用した場合の制限イメージ(仮想マシンの場合) 

複数のロックが適用されている場合、どのように動作するのでしょうか。
リソースグループとそのリソースグループにある仮想マシンに対して、以下のロックを適用した場合を想定します。

      • リソースグループ
        • 読み取り専用
      • 仮想マシン 
        • 削除

複数のロックがある場合は強い権限(読み取り専用)の方が優先されます。
この仮想マシン場合は読み取り専用のロックが適用されます。

ロックの継承

仮想マシンには読み取り専用のロックが適用されているため、起動や停止、設定変更、削除ができない状態になります。

※通常は、リソースグループに対しては弱い権限(削除)を設定し、リソース単位で読み取り専用といった強い権限を割り当てます。

全ユーザーに適用される

アクセス制御でのロールの割り当て状況に関わらず、ロックはすべてのユーザーに適用されます。

解除には所有者もしくはユーザーアクセス管理者権限が必要

ロックを解除しない限り、リソースの削除や変更はできません。
ロックを解除するには、所有者またはユーザーアクセス管理者の権限が必要です。

誰がロックを作成または削除できるか

ロックを利用する場合には多くの注意点があります

読み取り専用ロックを適用すると、リソースの操作が制限される場合があります。
適用する前に、必ず注意事項を確認してください。

ロック適用前の考慮事項

仮想マシンに削除や読み取り専用ロックを適用

今回は以下の仮想マシン環境で、確認しています。

      • リソースグループ名:test-rg
      • VM名:lock-test-vm-01(リソースグループはtest-rg)

仮想マシンに削除ロックを適用

仮想マシンに削除のロックを適用します。

削除ロックを適用
仮想マシンの設定にあるロックで追加を選択します。

ロックの追加が表示されます。
ロック名とロックの種類を設定します。
今回は、lock-01とし、種類は削除を選択しています。
OKを選択して設定を保存します。

設定したロックが表示されます。

仮想マシンに削除ロックを適用した場合の動作を確認

削除ロックを適用した仮想マシンで動作を確認します。
リソースの削除のみができない状態であることが確認できます。

削除ロックの動作を確認
仮想マシンのメニューで削除を選択します。
仮想マシンを削除できませんでしたというメッセージが表示されました。削除ロックが有効であることを確認できました。

仮想マシンを起動してみます。

正常に仮想マシンをは起動できました。

仮想マシンに読み取り専用ロックを適用

仮想マシンに適用した削除のロックを読み取り専用に変更します。

読み取り専用ロックを適用

ロックを編集します。
ロックの編集画面で削除から読み取り専用に変更しOKをクリックします。
ロックの編集画面で、種類を削除から読み取り専用に変更し、OKを選択します。
ロックの種類が読み取り専用になっていることを確認します。

 

仮想マシンに読み取り専用ロックを適用した場合の動作を確認

読み取り専用ロックを適用した仮想マシンで動作を確認します。
仮想マシンが起動できない状態であることを確認できます。

読み取り専用ロックの動作を確認
仮想マシンを起動します。
仮想マシンを起動できませんでしたというメッセージが表示されました。読み取り専用ロックが有効であることを確認できました。

仮想マシンのロック設定はマネージドディスクには適用されない

仮想マシンに接続されているマネージドディスクのロック状況はどうなっているのでしょうか。
仮想マシンに読み取り専用のロックを設定した状態で、ディスクの設定を確認します。

※リソースグループにロックを適用した場合は、ディスクはリソースグループのロックを継承します。

ディスクのロック設定を確認
仮想マシンのメニューでディスクを選択します。
仮想マシンに接続されているディスク名が表示されるので選択します。
ディスクにはロックが適用されていないことが分かります。
設定変更前のディスクサイズは30GBとなっています。

ディスクのメニューでサイズおよびパフォーマンスを選択します。
64GBを選択しサイズ変更をクリックします。
ディスクサイズを変更できることが確認できます。

PowerShellを使ったリソースロックの設定方法は、こちらで紹介しています。

—広告—

削除ロックと読み取り専用ロックを重複して適用した場合

今回は以下のリソースグループで、確認しています。

      • リソースグループ:test-rg
        • 読み取りのロックを適用(lock-02)
      • VM:lock-test-vm-01(リソースグループはtest-rg)
        • 削除のロックを適用(lock-02)

リソースグループに読み取り専用ロックを適用

リソースグループに読み取り専用ロックを適用します。

読み取り専用ロックを適用
リソースグループの設定にあるロックで追加を選択します。

ロックの追加が表示されます。
ロック名とロックの種類を設定します。
今回は、lock-02とし、種類は読み取り専用を選択しています。
OKを選択して設定を保存します。

設定されたロックが表示されます。
リソースグループに含まれる、リソースに設定されているロックも表示されます。

リソースに重複してロックが適用されている場合の動作を確認

リソースグループに読み取り専用ロックを、仮想マシンに削除ロックを適用した状態で、仮想マシンの動作を確認します。
重複したロック設定の中で、最も強い読み取り専用ロックが適用されていることが分かります。

重複してロックが適用されている場合の動作を確認
仮想マシンのロック適用状況を確認します。
リソースグループをスコープにしたロックと、仮想マシンをスコープにしたロックの両方が適用されています。
※親リソース(今回の場合はリソースグループ)から引き継がれたロックは、親リソース側で編集が必要です。
仮想マシンを起動します。
仮想マシンを起動できませんでしたというメッセージが表示されました。読み取り専用ロックが有効であることを確認できました。

 

リソースグループ内のリソースへのロック適用状況

リソースグループ内にある他リソースへのロック状況はどうなっているのでしょうか。
仮想マシンに接続されているディスクでロック状況を確認してみます。

ロック適用状況を確認
仮想マシンに接続されているディスクを表示します。
ディスクにリソースグループで設定した読み取り専用ロックが適用されている事が分かります。
ディスクのサイズも変更ができない状態となり、読み取り専用ロックが有効である事が分かります。

読み取り専用ロックを適用した状態でリソースグループを削除

ロックを適用した状態で、リソースグループを削除します。

動作確認
リソースグループを削除します。
リソースグループに読み取り専用ロックが適用されているため、削除は失敗します。

リソースグループにロック設定をした場合も、リソースグループ内のリソース単体にロックを適用した場合も同じ動作になります。

リソースグループ内のロック設定を解除しないと削除できない

リソースグループを削除する場合、リソースグループ内のすべてのロックが解除されている必要があります。
リソースグループ内のリソース単体にロックを適用されている場合も、削除できません。
すべてのロックが解除されていないと、リソースグループの削除はエラーになります。

—広告—

最後に

Azureのロックを使った、リソース削除や操作を禁止する方法について確認してみました。
操作ミスなどによる不意なリソース変更を防ぐことができて、とても便利かと思いました。
ロックにより、リソースの操作に制限がかかる点には注意が必要ですが、運用時に活用できるのではないかと思います。

引き続き、いろいろ試してみたいと思います。

PowerShellを使ったリソースロック設定方法については、こちらで紹介しています。

PowerShellを利用して、仮想マシンのディスク、ネットワークインターフェース、パブリックIPを一緒に削除する手順を紹介しています。

スポンサーリンク