Azure Blueprint でのリソース ロックについてUnderstand resource locking in Azure Blueprints

一貫性のある環境を大規模に作成することが本当に価値があるのは、一貫性を維持するためのメカニズムがある場合だけです。The creation of consistent environments at scale is only truly valuable if there's a mechanism to maintain that consistency. この記事では、Azure Blueprint でのリソース ロックのしくみについて説明します。This article explains how resource locking works in Azure Blueprints. リソース ロックと "拒否割り当て" の適用の例については、新しいリソースの保護に関するチュートリアルを参照してください。To see an example of resource locking and application of deny assignments, see the protecting new resources tutorial.

ロック モードと状態Locking modes and states

ブループリント割り当てに適用されるロック モードには、次に示す 3 つのオプションがあります。ロックしない読み取り専用削除しないLocking Mode applies to the blueprint assignment and it has three options: Don't Lock, Read Only, or Do Not Delete. ロック モードは、ブループリント割り当て中のアーティファクトのデプロイにおいて構成されます。The locking mode is configured during artifact deployment during a blueprint assignment. 別のロック モードを設定するには、ブループリント割り当てを更新します。A different locking mode can be set by updating the blueprint assignment. ただし、ブループリントの外部でロック モードを変更することはできません。Locking modes, however, can't be changed outside of Blueprints.

ブループリント割り当て内のアーティファクトによって作成されたリソースは、次の 4 つのいずれかの状態になります。ロックなし読み取り専用編集/削除できません、または削除不可Resources created by artifacts in a blueprint assignment have four states: Not Locked, Read Only, Cannot Edit / Delete, or Cannot Delete. 各種のアーティファクトは、ロックなしの状態にすることができます。Each artifact type can be in the Not Locked state. 次の表を使用することで、リソースの状態を特定することができます。The following table can be used to determine the state of a resource:

ModeMode アーティファクトのリソースの種類Artifact Resource Type StateState 説明Description
ロックしないDon't Lock * ロックなしNot Locked リソースはブループリントによって保護されません。Resources aren't protected by Blueprints. この状態は、ブループリント割り当ての外部から読み取り専用または削除しないのリソース グループ アーティファクトに追加されるリソースに対しても使用されます。This state is also used for resources added to a Read Only or Do Not Delete resource group artifact from outside a blueprint assignment.
読み取り専用Read Only Resource groupResource group 編集/削除できませんCannot Edit / Delete リソース グループは読み取り専用であり、リソース グループ上のタグを変更することはできません。The resource group is read only and tags on the resource group can't be modified. このリソース グループに対しては、ロックなしリソースの追加、移動、変更、削除を行うことができます。Not Locked resources can be added, moved, changed, or deleted from this resource group.
読み取り専用Read Only 非リソース グループNon-resource group 読み取り専用Read Only いかなる方法でもリソースを変更することはできません。変更することも削除することもできません。The resource can't be altered in any way -- no changes and it can't be deleted.
削除しないDo Not Delete * 削除不可Cannot Delete リソースを変更することはできますが、削除することはできません。The resources can be altered, but can't be deleted. このリソース グループに対しては、ロックなしリソースの追加、移動、変更、削除を行うことができます。Not Locked resources can be added, moved, changed, or deleted from this resource group.

ロック状態をオーバーライドするOverriding locking states

通常、サブスクリプションに対する適切なロールベースのアクセス制御 (RBAC) を持つユーザー (所有者ロールのユーザーなど) が、リソースの変更や削除を許可されることはありえます。It's typically possible for someone with appropriate role-based access control (RBAC) on the subscription, such as the 'Owner' role, to be allowed to alter or delete any resource. ただし、デプロイされた割り当ての一部として Blueprint がロックを適用している場合には、このアクセスは許可されません。This access isn't the case when Blueprints applies locking as part of a deployed assignment. 読み取り専用オプションまたは削除しないオプションを使用して割り当てが設定されている場合、サブスクリプション所有者であっても、ブロックされたアクションを保護されたリソースに対して実行することはできません。If the assignment was set with the Read Only or Do Not Delete option, not even the subscription owner can perform the blocked action on the protected resource.

このセキュリティ対策により、定義済みのブループリントの一貫性と作成目的で設計された環境が、偶発的またはプログラムによる削除や変更から保護されます。This security measure protects the consistency of the defined blueprint and the environment it was designed to create from accidental or programmatic deletion or alteration.

ロック状態を削除するRemoving locking states

割り当てによって保護されたリソースを変更または削除する必要が生じた場合、2 つの方法でそれを行うことができます。If it becomes necessary to modify or delete a resource protected by an assignment, there are two ways to do so.

  • ブループリント割り当てを更新して、ロック モードをロックなしにするUpdating the blueprint assignment to a locking mode of Don't Lock
  • ブループリント割り当てを削除するDelete the blueprint assignment

割り当てを削除すると、Blueprint によって作成されたロックが削除されます。When the assignment is removed, the locks created by Blueprints are removed. ただし、リソース自体は維持されるので、通常の方法を使用して削除する必要があります。However, the resource is left behind and would need to be deleted through normal means.

ブループリントのロックのしくみHow blueprint locks work

ブループリントの割り当て時には、読み取り専用オプションまたは削除しないオプションがその割り当てによって選択された場合、RBAC 拒否割り当ての拒否アクションがアーティファクト リソースに適用されます。An RBAC deny assignments deny action is applied to artifact resources during assignment of a blueprint if the assignment selected the Read Only or Do Not Delete option. この拒否アクションは、ブループリント割り当てのマネージド ID によって追加され、アーティファクト リソースから削除するには、同じマネージド ID を使用する必要があります。The deny action is added by the managed identity of the blueprint assignment and can only be removed from the artifact resources by the same managed identity. このセキュリティ対策により、ロック メカニズムを強制して、Blueprint 外からブループリントのロックを解除できないようにします。This security measure enforces the locking mechanism and prevents removing the blueprint lock outside Blueprints.

リソース グループに対するブループリント拒否割り当て

各モードの拒否割り当てプロパティは、次のようになります。The deny assignment properties of each mode are as follows:

ModeMode Permissions.ActionsPermissions.Actions Permissions.NotActionsPermissions.NotActions Principals[i].TypePrincipals[i].Type ExcludePrincipals[i].IdExcludePrincipals[i].Id DoNotApplyToChildScopesDoNotApplyToChildScopes
読み取り専用Read Only * */read*/read SystemDefined (Everyone)SystemDefined (Everyone) excludedPrincipals におけるブループリント割り当てとユーザー定義blueprint assignment and user-defined in excludedPrincipals リソース グループ - true;リソース - falseResource group - true; Resource - false
削除しないDo Not Delete */delete*/delete SystemDefined (Everyone)SystemDefined (Everyone) excludedPrincipals におけるブループリント割り当てとユーザー定義blueprint assignment and user-defined in excludedPrincipals リソース グループ - true;リソース - falseResource group - true; Resource - false

重要

Azure Resource Manager では、ロール割り当ての詳細が最大 30 分間キャッシュされます。Azure Resource Manager caches role assignment details for up to 30 minutes. そのため、ブループリント リソースに対する拒否割り当ての拒否アクションは、すぐには完全に反映されない場合があります。As a result, deny assignments deny action's on blueprint resources may not immediately be in full effect. その間は、ブルー プリントのロックで保護しようとしたリソースが削除される可能性もあります。During this period of time, it might be possible to delete a resource intended to be protected by blueprint locks.

拒否割り当てからプリンシパルを除外するExclude a principal from a deny assignment

一部のデザインまたはセキュリティ シナリオでは、ブルー プリント割り当てによって作成される割り当て拒否からのプリンシパルの除外が必要な場合があります。In some design or security scenarios, it may be necessary to exclude a principal from the deny assignment the blueprint assignment creates. これは、割り当てを作成するときに、REST API 内で locks プロパティの excludedPrincipals 配列に最大 5 つの値を追加することで実行されます。This is done in REST API by adding up to five values to the excludedPrincipals array in the locks property when creating the assignment. これは、excludedPrincipals を含む要求本文の例です。This is an example of a request body that includes excludedPrincipals:

{
  "identity": {
    "type": "SystemAssigned"
  },
  "location": "eastus",
  "properties": {
    "description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
    "blueprintId": "/providers/Microsoft.Management/managementGroups/{mgId}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
    "locks": {
        "mode": "AllResourcesDoNotDelete",
        "excludedPrincipals": [
            "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
            "38833b56-194d-420b-90ce-cff578296714"
        ]
    },
    "parameters": {
      "storageAccountType": {
        "value": "Standard_LRS"
      },
      "costCenter": {
        "value": "Contoso/Online/Shopping/Production"
      },
      "owners": {
        "value": [
          "johnDoe@contoso.com",
          "johnsteam@contoso.com"
        ]
      }
    },
    "resourceGroups": {
      "storageRG": {
        "name": "defaultRG",
        "location": "eastus"
      }
    }
  }
}

次の手順Next steps