ロックを使ってAzureのリソースを変更されないようにしてみた
Azureにはロックという機能があります。
ロックはリソースの削除や変更を防止する事が出来る機能で、操作ミス等による不用意なリソース変更を防げます。
今回はロックをリソースグループやAzure VM(仮想マシン)への適用から、仮想マシン(ディスク等の関連アイテムを含む)の削除や起動停止の制限まで試してみました。
※今回はAzure Blueprintsを使ったロックは試しておりません。
Azure ロックの種類や適用範囲
ロックの種類
ロックの種類については非常にシンプルで2種類のみになります。
ロックの種類 | |
削除 | リソースの削除が出来ない。 仮想マシンの場合は起動停止やサイズ等の設定変更は可能。 |
読み取り専用 | 閲覧者と同等の権限でリソースの情報を見る事しか出来ない。 仮想マシンの場合は設定変更だけではなく起動停止なども出来ない。 |
スコープ(適用範囲)の種類
適用範囲についても非常にシンプルで3種類のみになります。上位に適用した場合は配下のリソースにも適用されます。
スコープ(適用範囲) | |
サブスクリプション(最上位) | サブスクリプションのアイテム全体にロックを割り当てる |
リソースグループ | リソースグループ内のアイテムすべてにロックを割り当てる |
リソース(アイテム単位) | リソース(アイテム)個別にロックを割りあてる |
ロックを複数適用した場合の制限イメージ(仮想マシンの場合)
実際にロックを適用した場合の動作はどうなるでしょうか。
リソースグループとそのリソースグループにある仮想マシンに対して以下のロックを適用した場合を想定します。
-
-
- リソースグループ
- 読み取り専用
- 仮想マシン
- 削除
- リソースグループ
-
複数のロックがある場合は強い権限(読み取り専用)の方が優先されます。
この仮想マシン場合は読み取り専用のロックが適用されます。
この仮想マシンは読み取り専用ロックが適用される為、起動停止/設定変更/削除が出来ない状態になります。
※通常はリソースグループに弱い権限(削除)、リソース単位で読み取り専用といった強い権限を割り当てます。
全ユーザーに適用される
RBACの適用状況関わらずロックは全ユーザーに適用されます。
解除には所有者もしくはユーザーアクセス管理者権限が必要
ロック解除してからでないとリソースの削除や変更が出来ません。
ロックの適用解除には所有者 もしくは ユーザー アクセス管理者の権限が必要となります。
Azure VM(仮想マシン)にロックを適用する
今回は以下のサンプル環境で試しております。
-
-
- リソースグループ名:test-rg
- VM名:lock-test-vm-01(リソースグループはtest-rg)
-
削除ロックを仮想マシンに適用する
まず最初に仮想マシンに削除のロックを適用してみます。
ロック設定 | |
仮想マシンの設定にあるロックで追加を選択します。 | |
ロックの追加が表示されます。 今回はlock-01、削除の選択にしています。 OKをクリックして設定を保存します。 |
|
設定したロックが表示されます。 |
削除ロックを適用した場合の動作確認
削除ロックを適用した仮想マシンで動作を確認してみます。
削除のみが出来ない状態である事が確認出来ます。
動作確認 | |
仮想マシンのメニューで削除を選択します。 | |
仮想マシンを削除できませんでしたというメッセージが表示されました。ロックが有効な事が確認出来ました。 | |
次に仮想マシンを起動してみます。 |
|
仮想マシンを正常に起動する事が出来ました。 |
読み取り専用ロックを仮想マシンに適用する
次は仮想マシンに適用した削除のロックを読み取りに変更してみます。
ロック設定 | |
仮想マシンの設定にあるロックで先ほど設定したlock-01で編集を選択します。 ロックの編集画面で削除から読み取り専用に変更しOKをクリックします。 |
|
lock-01のロックの種類が読み取り専用になっている事を確認します。
|
仮想マシンに読み取り専用のロックを適用した場合の動作
仮想マシンに読み取り専用のロックを適用した場合の動作を確認してみます。
読み取りのロックの場合は仮想マシンの起動が出来ない事が分かります。
動作確認 | |
仮想マシンを起動します。 | |
仮想マシンを起動できませんでしたというメッセージが表示されました。ロックが有効な事が確認出来ました。 |
仮想マシンのロック設定はマネージドディスクには適用されない
仮想マシンに接続されているマネージドディスクのロック状況はどうなっているのでしょうか。
仮想マシンに読み取り専用のロックを設定した状態で実際に確認してみます。
※リソースグループにロックを適用した場合は、リソースグループのロックを継承します。
仮想マシンに接続されているディスクには影響がない事が分かりました。
PowerShellを使ったリソースロックはこちら。
リソースグループにロックを適用する
今回は以下のサンプル環境で試してみました。
-
-
- リソースグループ:test-rg
- 読み取りのロックを適用(lock-02)
- VM:lock-test-vm-01(リソースグループはtest-rg)
- 削除のロックを適用(lock-02)
- リソースグループ:test-rg
-
リソースグループに読み取り専用のロックを適用する
リソースグループに読み取り専用ロックを適用してみます。
ロック設定 | |
リソースグループの設定にあるロックで追加を選択します。 | |
ロックの追加が表示されますので、ロック名、ロックの種類を設定します。 |
|
完了するとリソースグループに適用されているロック(スコープがリソースのものを含む)が表示されます。 |
重複ロック適用状況の確認と動作確認
リソースグループに読み取り専用ロック、仮想マシンに削除ロックを適用した仮想マシンで動作を確認してみます。
重複したロック設定の中で一番強いリソースグループに適用された読み取り専用ロックが適用されている事が分かります。
動作確認 | |
仮想マシンのロック適用状況を確認してみます。リソースグループのロックと仮想マシンに適用したロック両方が設定されている事が分かります。 | |
※親リソース(今回の場合はリソースグループ)から引き継がれたロックは親リソース側で編集が必要になります。 | |
仮想マシンを起動してみます。 | |
仮想マシンを起動できませんでしたというメッセージが表示されました。 |
他リソースへのロック適用状況
リソースグループ内にある他リソースのロック適用状況はどうなっているのでしょうか。
仮想マシンに接続されているディスクでロック状況を確認してみます。
動作確認 | |
仮想マシンのメニューでディスクを選択します。仮想マシンに接続されているディスク名が表示されますので選択します。 | |
ディスクにリソースグループで設定したロックが適用されている事が分かります。 実際にディスクサイズを設定変更して確認してみます。 |
|
ディスクのサイズ変更が出来ない事が分かりました。 リソースグループに適用された読み取り専用ロックが有効である事が分かります。 |
ロック適用状態でリソースグループ自体を削除
ロックを適用した状態でリソースグループの削除を試してみます。
動作確認 | |
リソースグループ自体を削除してみます。 | |
ロックが有効な為、リソースグループの削除は失敗します。 |
リソースグループにロック設定をした場合も、リソースグループ内のリソース単体にロックを適用した場合も同じ動作になります。
リソースグループを削除する場合のロック設定
リソースグループの削除を行う場合にはリソースグループ内のすべてのロックが解除されている必要があります。
リソースグループにロック設定をした場合、、リソース単体にロックを適用した場合も同じ動作になります。
すべてのロックが解除されていないとリソースグループの削除はエラーになります。
ロックを適用する場合の注意点
マイクロソフト社のサイトにも記載されておりますが、ロックを適用する事で制限できるのはリソース自体の削除等になります。したがってストレージアカウント等の場合、実際に保管されているデータ等は削除できます。
ロックする事により仮想マシンのリストア出来ないケース等もありますのでこの点は注意が必要です。
ただ間違ってリソースを削除してしまう等を防ぐことが出来るのでとても良いかと思いました。
PowerShellを使ったリソースロックはこちら。
Azure VMでディスクやネットワークインターフェースを纏めて削除する事をこちらで試しております。