Azure Resource Manager のロック機能

Azrue Resource Manager(ARM)にはリソースロック機能があります。

何をするものですが

ロールベースのアクセス制御(RBAC)は特定ユーザーの操作を制限するものですが、リソースロック機能は管理側ですべてのユーザーにCanNotDelete(削除不可)またはReadOnly(読み取り専用)のどちらかの状態にリソースをロックする機能です。

※ただし現状Azure PowerShellで指定できるのはCanNotDeleteのみっぽいです

削除不可はリソースに対して変更などは可能ですが削除をできなくします。読み取り専用はそのままですね。

ロックを制御できるのは所有者かユーザーアクセス管理者だけになります。

またロックは継承されます。その際、最も厳しいロックの状態が優先されます。(親リソースにReadOnlyが付与されている場合、子リソースにCanNotDeleteを付与してもReadOnlyのほうが強いのでReadOnlyが優先されます)

ロックを制御するには

REST APIかAzure PowerShellを利用します。Azure PowerShellの場合、 New-AzureRmResourceLock を使用します。

> New-AzureRmResourceLock -LockLevel CanNotDelete -LockName samplelock -ResourceName test -ResourceType Microsoft.Network/publicIPAddresses -ResourceGroupName testgroup

確認
Are you sure you want to create the following lock:
/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/testgroup/providers/Microsoft.Network/publicIPAddresses/test/providers/Microsoft.Authorization/locks/samplelock
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y


Name                  : samplelock
ResourceId            : /subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/testgroup/providers/Micros
                        oft.Network/publicIPAddresses/test/providers/Microsoft.Authorization/locks/samplelock
ResourceName          : test
ResourceType          : Microsoft.Network/publicIPAddresses
ExtensionResourceName : samplelock
ExtensionResourceType : Microsoft.Authorization/locks
ResourceGroupName     : testgroup
SubscriptionId        : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Properties            : @{Level=CanNotDelete}
LockId                : /subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/testgroup/providers/Micros
                        oft.Network/publicIPAddresses/test/providers/Microsoft.Authorization/locks/samplelock

これで削除不可になりました。実際に削除してみるとエラーが発生して削除することができません。(サブスクリプションの所有者でも!)

image

ロックを解除(削除)するには Remove-AzureRmResourceLock を使用します。

> Remove-AzureRmResourceLock -LockName samplelock -ResourceName test -ResourceType Microsoft.Network/publicIPAddresses -ResourceGroupName testgroup

その他

ロックはARMテンプレート内でも利用できます。

まとめ

うまく活用して不慮の事故を未然に防ぎましょう。

See Also:

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中