Azureのロック設定について(概要から削除ロック・読み取り専用ロックの動作確認)

2021-05-22Azure,Resource Group,Virtual Machines

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

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

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

Azureでロック設定をリソースグループや仮想マシン(Azure VM)に適用した場合の動作を確認しました。
仮想マシンの削除や起動・停止の操作、リソースグループ内でのリソース新規作成や、削除がロック設定によってどのように制限されるかを確認しています。
ロック設定が重複して適用された場合についても、確認しています。

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

スポンサーリンク

ロックの種類、適用範囲、継承

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

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

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

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

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

ロックの継承

たとえば、リソースグループにロックを適用した場合、そのリソースグループ内に含まれる全てのリソースにも、そのロックが自動的に適用されます。
この継承により、下位リソースに個別にロックを設定しなくても、上位スコープで管理できます。

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

ロックを複数適用した場合はどのようになるのか?

上位スコープにロックを設定した場合など、1つのリソースに複数ロックが割り当てされている場合です。
配下のリソースで個別にロック設定を行っても、上位スコープのロックと重複して適用されます。
最も制限の厳しい(例えば、削除禁止)ロックが優先されます。

リソースグループとそのリソースグループにある仮想マシンに対して、以下のロックを適用した場合を想定します。

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

この仮想マシンには、読み取り専用(ReadOnly)のロックが適用されます。

ロックの継承

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

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

全ユーザーに適用される

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

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

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

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

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

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

ロック適用前の考慮事項

仮想マシンに削除ロックや読み取り専用ロックを適用して動作確認

今回は、以下のリソースグループおよび仮想マシン環境で確認しています。

    • リソースグループ名:rg-lokc-01
    • 仮想マシン名:vm-01
      • ロック:vm-lock-01

仮想マシンに削除ロックを追加

仮想マシンに、vm-lock-01という名前で削除ロックを追加します。

削除ロックを適用
設定のメニューにあるロックを選択します。
追加を選択します。
ロックの追加が表示されます。
ロック名とロックの種類を設定します。
今回は、vm-lock-01とし、種類は削除を選択しています。
OKを選択して設定を保存します。
仮想マシンに削除ロックを追加(Azureのロック設定を確認)

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

仮想マシンに適用された削除ロック(Azureのロック設定を確認)

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

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

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

仮想マシンの起動はできます。

削除ロックが適用された仮想マシンは起動できる(Azureのロック設定を確認)

仮想マシンの削除ロックを読み取り専用ロックに変更

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

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

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

 

仮想マシンに設定した削除ロックを読み取り専用ロックに変更(Azureのロック設定を確認)
仮想マシンに設定された読み取り専用ロック(Azureのロック設定を確認)

読み取り専用ロックを仮想マシンに適用した場合は起動に失敗する

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

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

仮想マシンのロック設定は接続したデバイス(マネージドディスクなど)には適用されない

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

マネージドディスクのロック設定を確認

仮想マシンに接続されているディスクのロックメニューを選択します。
マネージドディスクのリソースにはロックが適用されていないことが分かります。

仮想マシンの関連リソースにはロック設定が適用されない(Azureのロック設定を確認)

—広告—

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

今回は、以下のリソースグループおよび仮想マシン環境で確認しています。

      • リソースグループ:rg-lock-01
        • 読み取り専用ロックを適用(readonly-lock-01)
      • 仮想マシン:vm-01
        • 削除ロックを適用(vm-lock-01)

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

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

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

設定のメニューにあるロックを選択をします。
追加を選択します。
ロック名とロックの種類を設定します。
今回は、readonly-lock-01とし、種類は読み取り専用を選択しています。
OKを選択して設定を保存します。

設定されているロックが表示されます。
リソースグループ内のリソースに設定されたロックも一覧で確認できます。

リソースグループに読み取り専用ロックを追加(Azureのロック設定を確認)
リソースグループに適用されたロック設定の一覧を表示(Azureのロック設定を確認)

リソースグループ内のリソースに対しても、ロックが適用されていることが確認できます。

リソースグループ内のリソースに適用されたロック設定を表示(Azureのロック設定を確認)

重複してロックが適用された場合はより制限が厳しいロックが優先される

リソースグループに読み取り専用ロックを、仮想マシンに削除ロックを適用した状態で、仮想マシンの動作を確認します。
仮想マシンが起動できないことが確認できます。
複数のロックが適用されている場合は、より制限の厳しい読み取り専用ロックが優先されることが分かります。

※親リソース(今回の場合はリソースグループ)から継承されたロックを変更する場合は、親リソース側で編集する必要があります。

重複してロックが適用されている場合の動作を確認
仮想マシンのロック適用状況を確認します。
リソースグループをスコープにしたロックと、仮想マシンをスコープにしたロックの両方が適用されています。
仮想マシンに適用されたロック設定の一覧を表示(Azureのロック設定を確認)
仮想マシンを起動します。
仮想マシンを起動できませんでしたというメッセージが表示されました。読み取り専用ロックが優先されていることを確認できました。
リソースグループに適用された読み取り専用ロックが優先された仮想マシンの起動がエラーになる(Azureのロック設定を確認)

読み取り専用ロックが適用されたリソースグループではリソースの新規作成や削除ができない

リソースグループに読み取り専用ロックを適用した状態での動作を確認します。
リソースグループの削除が失敗することが確認できます。
また、リソースグループ内にリソース作成できないことも確認できます。

動作確認
リソースグループを削除します。
リソースグループに読み取り専用ロックが適用されているため、削除は失敗します。
リソース作成時に、読み取り専用ロックが適用されたリソースグループが選択できないことも確認できます。
ロック設定が適用された状態でリソースグループを削除(Azureのロック設定を確認)
読み取り専用ロックが適用されたリソースグループではリソースを新規作成できない(Azureのロック設定を確認)

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

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

リソースグループを削除
仮想マシンに削除ロックが設定されているため、リソースグループの削除に失敗することが確認できます。 リソースグループ内のリソースにロック設定が残った状態ではリソースグループを削除できない(Azureのロック設定を確認)

—広告—

最後に

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

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

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

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

スポンサーリンク