Azure Resource Manager (ARM) のロックを使用して Azure Quantum リソースを保護する

偶発的な削除や悪意のある削除を防ぐために、Azure Resource Manager (ARM) のリソース ロックを使用して Azure Quantum ワークスペースおよびリンクされたストレージ アカウントをすべてロックすることをお勧めします。 たとえば、教授は、プロバイダー SKU の変更を学生に制限しても、ノートブックを使用してジョブを送信できるようにしたい場合があります。

ARM のリソース ロックは 2 種類あります。

  • CanNotDelete ロックは、ユーザーがリソースを削除できないようにしますが、その構成の読み取りと変更は許可します。
  • ReadOnly ロックは、ユーザーがリソースの構成を変更 (削除を含む) できないようにしますが、構成の読み取りは許可します。 リソース ロックの詳細については、リソースのロックによる予期しない変更の防止に関する記事をご覧ください。

Note

Azure Quantum ワークスペースの管理に ARM または Bicep テンプレートを既に使用している場合は、この記事の手順を既存のテンプレートに追加できます。

次の表は、Azure Quantum ワークスペースのためにデプロイする推奨リソース ロック構成を示しています。

リソース ロックの種類 Notes
ワークスペース 削除 ワークスペースの削除を防止します。
ワークスペース 読み取り専用 プロバイダーの追加や削除など、ワークスペースに対する変更を防止する一方で、ユーザーがノートブックを作成および削除し、ジョブを送信できるようにします。 このロックが設定されている場合にプロバイダーを変更するには、リソース ロックを削除し、変更を行ってから、ロックを再デプロイする必要があります。
ストレージ アカウント 削除 ストレージ アカウントの削除を防止します。

次の構成は避ける必要があります。

重要

次の ARM のロックを設定すると、ワークスペースが正しく機能しない可能性があります。

リソース ロックの種類 Notes
ストレージ アカウント 読み取り専用 ストレージ アカウントに読み取り専用リソース ロックを設定すると、ワークスペースの作成、Jupyter Notebook のインターフェイス、ジョブの送信と取り込みでエラーが発生する可能性があります。
ワークスペースの親サブスクリプション、あるいはワークスペースまたはストレージ アカウントの親リソース グループ 読み取り専用 リソース ロックが親リソースに適用されると、その親に含まれるすべてのリソースは、後で作成されたリソースも含め、同じロックを継承します。 より詳細な制御を行う場合は、リソース レベルで直接リソース ロックを適用する必要があります。

前提条件

ARM のリソース ロックを適用するには、リソースの所有者またはユーザー アクセス管理者である必要があります。 詳細については、Azure の組み込みロールに関するページを参照してください。

コマンド ライン デプロイ

ロックをデプロイするには、Azure PowerShell または Azure CLI が必要です。 Azure CLI を使用する場合は、最新バージョンが必要です。 インストール手順については、以下を参照してください。

重要

以前に Azure Quantum で Azure CLI を使用したことがない場合は、「環境のセットアップ」セクションの手順に従って quantum 拡張機能を追加して、Azure Quantum 名前空間を登録してください。

Azure へのサインイン

Azure CLI またはAzure PowerShellをインストールしたら、初めてサインインしてください。 次のいずれかのタブを選択し、対応するコマンド ライン コマンドを実行して Azure にサインインします。

az login

複数の Azure サブスクリプションがある場合は、ロックするリソースが含まれるサブスクリプションを選択します。 SubscriptionName を実際のサブスクリプション名またはサブスクリプション ID に置き換えます。 たとえば、次のように入力します。

az account set --subscription "Azure subscription 1"

ARM のリソース ロックの作成

リソース ロックをデプロイするときは、ロックの名前、ロックの種類、リソースに関する追加情報を指定します。 この情報は、Azure Quantum ポータルにあるリソースのホーム ページからコピーして貼り付けることができます。

az lock create \
    --name <lock> \
    --resource-group <resource-group> \
    --resource <workspace> \
    --lock-type CanNotDelete \
    --resource-type Microsoft.Quantum/workspaces

  • name: ロックのわかりやすい名前。
  • resource-group: 親リソース グループの名前。
  • resource: ロックを適用するリソースの名前。
  • lock-type: 適用するロックの種類 (CanNotDelete または ReadOnly)。
  • resource-type: リソースの target 種類。

たとえば、ワークスペースに対して CanNotDelete ロックを作成する場合:

az lock create \
    --name ArmLockWkspDelete \
    --resource-group armlocks-resgrp \
    --resource armlocks-wksp \
    --lock-type CanNotDelete \
    --resource-type Microsoft.Quantum/workspaces

成功した場合、Azure によってロックの構成が JSON 形式で返されます。

{
  "id": "/subscriptions/<ID>/resourcegroups/armlocks-resgrp/providers/Microsoft.Quantum/workspaces/armlocks-wksp/providers/Microsoft.Authorization/locks/ArmLockWkspDelete",
  "level": "CanNotDelete",
  "name": "ArmLockWkspDelete",
  "notes": null,
  "owners": null,
  "resourceGroup": "armlocks-resgrp",
  "type": "Microsoft.Authorization/locks"
}

ワークスペースに対して ReadOnly ロックを作成する場合:

az lock create \
    --name ArmLockWkspRead \
    --resource-group armlocks-resgrp \
    --resource armlocks-wksp \
    --lock-type ReadOnly \
    --resource-type Microsoft.Quantum/workspaces
{
  "id": "/subscriptions/<ID>/resourcegroups/armlocks-resgrp/providers/Microsoft.Quantum/workspaces/armlocks-wksp/providers/Microsoft.Authorization/locks/ArmLockWkspRead",
  "level": "ReadOnly",
  "name": "ArmLockWkspRead",
  "notes": null,
  "owners": null,
  "resourceGroup": "armlocks-resgrp",
  "type": "Microsoft.Authorization/locks"
}

ストレージ アカウントに対して CanNotDelete ロックを作成する場合:

az lock create \
    --name ArmLockStoreDelete \
    --resource-group armlocks-resgrp \
    --resource armlocksstorage \--lock-type CanNotDelete \
    --resource-type Microsoft.Storage/storageAccounts
{
  "id": "/subscriptions/<ID>/resourcegroups/armlocks-resgrp/providers/Microsoft.Storage/storageAccounts/armlocksstorage/providers/Microsoft.Authorization/locks/ArmLockStoreDelete",
  "level": "CanNotDelete",
  "name": "ArmLockStoreDelete",
  "notes": null,
  "owners": null,
  "resourceGroup": "armlocks-resgrp",
  "type": "Microsoft.Authorization/locks"
}

ロックの表示と削除

ロックを表示または削除するには:

詳細については、az lock のリファレンスをご覧ください。

サブスクリプションのすべてのロックを表示する

az lock list

ワークスペースのすべてのロックを表示する

az lock list \
    --resource-group armlocks-resgrp \
    --resource-name armlocks-wksp  \
    --resource-type Microsoft.Quantum/workspaces

リソース グループにおける全リソースのすべてのロックを表示する

az lock list --resource-group armlocks-resgrp

1 つのロックのプロパティを表示する

az lock show \
    --name ArmLockStoreDelete \
    --resource-group armlocks-resgrp \
    --resource-name armlocksstorage \
    --resource-type  Microsoft.Storage/storageAccounts

ロックを削除する

az lock delete \
    --name ArmLockStoreDelete \
    --resource-group armlocks-resgrp \
    --resource-name armlocksstorage \
    --resource-type  Microsoft.Storage/storageAccounts

削除が成功した場合、Azure によってメッセージは返されません。 削除を確認するには、az lock list を実行してください。

次の手順