Azure Machine Learning ワークスペースへのアクセスの管理

この記事は、Azure Machine Learning ワークスペースへのアクセス (認可) を管理する方法について説明します。 Azure ロールベースのアクセス制御 (Azure RBAC) を使用して Azure リソースへのアクセスを管理し、ユーザーに新しいリソースを作成するや、既存のを使用するなどできます。 Microsoft Entra ID のユーザーには、リソースへのアクセス権を付与する特定のロールが割り当てられます。 Azure には、組み込みロールと、カスタム ロールを作成する機能の両方が用意されています。

ヒント

この記事では Azure Machine Learning に焦点を当てていますが、個々のサービスには独自の RBAC 設定があります。 たとえば、この記事の情報を使用して、Azure Kubernetes Service で Web サービスとしてデプロイされたモデルにスコアリング要求を送信できるユーザーを構成できます。 ただし、Azure Kubernetes Service には、独自の Azure ロールのセットがあります。 Azure Machine Learning で役立つ可能性があるサービス固有の RBAC 情報については、次のリンクを参照してください:

警告

一部のロールを適用すると、他のユーザーが Azure Machine Learning スタジオを使用するときに UI 機能が制限されることがあります。 たとえば、ユーザーのロールにコンピューティング インスタンスを作成する機能がない場合、コンピューティング インスタンスを作成するオプションをスタジオで使用できません。 この動作は想定されており、アクセス拒否エラーが返される操作をユーザーが実行できないようにしています。

既定のロール

Azure Machine Learning ワークスペースには、既定で使用できる組み込みロールがあります。 ワークスペースにユーザーを追加するときに、次のいずれかのロールを割り当てることができます。

ロール アクセス レベル
AzureML データ サイエンティスト コンピューティング リソースの作成または削除とワークスペース自体の変更を除く、Azure Machine Learning ワークスペース内のすべてのアクションを実行できます。
AzureML コンピューティング オペレーター ワークスペース内のコンピューティング リソースを作成、管理、削除、アクセスできます。
Reader ワークスペースでの読み取り専用のアクション。 閲覧者はワークスペースで資産 (データストアの資格情報を含む) を一覧および表示できます。 閲覧者がこれらの資産を作成または更新することはできません。
Contributor ワークスペース内の資産を表示、作成、編集、削除 (該当する場合) します。 たとえば、共同作成者は実験を作成したり、コンピューティング クラスターを作成またはアタッチしたり、実行を送信したり、Web サービスをデプロイしたりできます。
所有者 ワークスペース内の資産を表示、作成、編集、削除 (該当する場合) する機能など、ワークスペースへのフル アクセス。 また、ロールの割り当てを変更することができます。

さらに、Azure Machine Learning レジストリには Azure Machine Learning レジストリ ユーザー ロールがあり、これをレジストリ リソースに割り当てることで、データ サイエンティストにユーザーレベルのアクセス許可を付与できます。 レジストリを作成または削除するための管理者レベルの権限については、共同作成者ロールまたは所有者ロールを使用します。

ロール アクセス レベル
AzureML レジストリ ユーザー レジストリを取得し、その中の資産の読み取り、書き込みおよび削除を行うことができます。 新しいレジストリ リソースを作成したり、削除したりすることはできません。

ロールを組み合わせて、さまざまなレベルのアクセス権を付与できます。 たとえば、AzureML データ科学者AzureML コンピューティング オペレーターの両方のロールをワークスペース ユーザーに付与して、セルフサービス方式でコンピューティングを作成しながらユーザーが実験を実行できるようにすることができます。

重要

ロール アクセス権は、Azure の複数のレベルにスコープ指定できます。 たとえば、ワークスペースへの所有者アクセス権を持つユーザーであっても、そのワークスペースが含まれるリソース グループへの所有者アクセス権を持っていないことがあります。 詳細については、「Azure RBAC のしくみ」を参照してください。

ワークスペース アクセスの管理

ワークスペースの所有者は、ワークスペースのロールを追加および削除できます。 ユーザーにロールを割り当てることもできます。 アクセスを管理する方法を確認するには、次のリンクを使用します。

たとえば、Azure CLI を使用して、次のコマンドでリソース グループ this-rg について joe@contoso.com共同作成者ロールを割り当てます。

az role assignment create --role "Contributor" --assignee "joe@contoso.com" --resource-group this-rg

Microsoft Entra セキュリティ グループを使用してワークスペース アクセスを管理する

Microsoft Entra セキュリティ グループを使用して、ワークスペースへのアクセスを管理できます。 この方法には次の利点があります。

  • チームまたはプロジェクトのリーダーは、ワークスペース リソースに対する所有者ロールを直接必要とせずに、セキュリティ グループの所有者としてワークスペースへのユーザー アクセスを管理できます。
  • ユーザーごとにアクセス許可を管理することなく、ワークスペースや他のリソースに対するユーザーのアクセス許可をグループとして整理、管理、取り消すことができます。
  • Microsoft Entra グループを使用すると、ロールの割り当てに関するサブスクリプションの制限に達しないようにすることができます。

Microsoft Entra のセキュリティ グループを使用するには:

  1. セキュリティ グループを作成します
  2. グループ所有者を追加します。 このユーザーには、グループ メンバーを追加または削除するためのアクセス許可があります。 グループ所有者は、グループ メンバーである必要はなく、またワークスペースに対する直接の RBAC ロールを持っている必要もありません。
  3. AzureML データ科学者閲覧者共同作成者など、ワークスペースに対する RBAC ロールをグループに割り当てます。
  4. グループ メンバーを追加します。 メンバーはワークスペースにアクセスできるようになります。

カスタム ロールの作成

組み込みロールが十分ではない場合は、カスタム ロールを作成できます。 カスタム ロールには、そのワークスペース内のリソースの読み取り、書き込み、削除、コンピューティングのアクセス許可を持つことができます。 ロールは、特定のワークスペース レベル、特定のリソース グループ レベル、または特定のサブスクリプション レベルで使用できるようにすることができます。

注意

そのリソース内のカスタム ロールを作成するには、そのレベルでのリソースの所有者でなければなりません。

カスタム ロールを作成するには、最初に、ロールのアクセス許可とスコープを指定するロールの定義 JSON ファイルを構築します。 次の例では、特定のワークスペース レベルにスコープ指定された "Data Scientist Custom" のカスタム ロールを定義しています:

data_scientist_custom_role.json :

{
    "Name": "Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute.",
    "Actions": ["*"],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>"
    ]
}

ヒント

AssignableScopes フィールドを変更し、サブスクリプション レベル、リソース グループ レベル、特定のワークスペース レベルでこのカスタム ロールのスコープを設定することができます。 上記のカスタム ロールは一例にすぎません。推奨されるいくつかの Azure Machine Learning service のカスタム ロールを参照してください。

このカスタム ロールは、次のアクションを除くすべてのアクションをワークスペース内で実行できます。

  • ワークスペースを削除できません。
  • ワークスペースを作成または更新できません。
  • コンピューティング リソースを作成または更新できません。
  • コンピューティング リソースを削除できません。
  • ロールの割り当てを追加、削除、変更できません。

このカスタム ロールをデプロイするには、次の Azure CLI コマンドを使用します。

az role definition create --role-definition data_scientist_custom_role.json

デプロイ後、このロールは、指定したワークスペース内で利用可能になります。 これで、このロールを Azure portal で追加し、割り当てることができるようになりました。

カスタム ロールの詳細については、「Azure カスタム ロール」を参照してください。

Azure Machine Learning の操作

カスタム ロールで使用できる操作 (アクションとアクション以外) の詳細については、「リソース プロバイダー操作」を参照してください。 次の Azure CLI コマンドを使用して、操作を一覧表示することもできます。

az provider operation show –n Microsoft.MachineLearningServices

カスタム ロールの一覧表示

Azure CLI で、次のコマンドを実行します。

az role definition list --subscription <subscriptionId> --custom-role-only true

特定のカスタム ロールのロール定義を表示するには、次の Azure CLI コマンドを使用します。 <roleName> は、前のコマンドで返されるのと同じ形式である必要があります:

az role definition list -n <roleName> --subscription <subscriptionId>

カスタム ロールの更新

Azure CLI で、次のコマンドを実行します。

az role definition update --role-definition update_def.json --subscription <subscriptionId>

新しいロールの定義のスコープ全体に対するアクセス許可が必要となります。 たとえば、この新しいロールが 3 つのサブスクリプションにわたってスコープを持つ場合は、3 つすべてのサブスクリプションに対するアクセス許可が必要です。

注意

ロールの更新は、そのスコープ内のすべてのロールの割り当てに適用されるまでに 15 分 ~ 1 時間かかることがあります。

Azure Resource Manager テンプレートを繰り返し使用する

複雑なロール割り当てを何度も作成することになりそうであれば、Azure Resource Manager テンプレートが非常に便利です。 machine-learning-dependencies-role-assignment template では、ソース コードでロール割り当てを再使用できるよう指定する方法を示しています。

一般的なシナリオ

次の表は、Azure Machine Learning アクティビティの概要と、それらを最小のスコープで実行するために必要なアクセス許可をまとめたものです。 たとえば、ワークスペース スコープ (列 4) を使用してアクティビティを実行できる場合は、そのアクセス許可を持つそれより高いすべてのスコープも自動的に機能します。 特定のアクティビティでは、V1 API と V2 API の間でアクセス許可が異なります。

重要

この表内の / で始まるすべてのパスは、Microsoft.MachineLearningServices/ に対する相対パスです。

アクティビティ サブスクリプション レベルのスコープ リソース グループレベルのスコープ ワークスペースレベルのスコープ
新しいワークスペースの作成 1 必要なし 所有者または共同作成者 該当なし (所有者になるか、作成後に上位のスコープ ロールを継承します)
サブスクリプション レベル Amlcompute クォータを要求するか、ワークスペース レベルのクォータを設定する 所有者、共同作成者、またはサブスクリプション スコープで
/locations/updateQuotas/action が可能な
カスタム ロール
許可されていません 許可されていません
新しいコンピューティング クラスターの作成 必要なし 必要なし 所有者、共同作成者、または /workspaces/computes/write が可能なカスタム ロール
新しいコンピューティング インスタンスの作成 必要なし 必要なし 所有者、共同作成者、または /workspaces/computes/write が可能なカスタム ロール
任意の型の実行を送信する (V1) 必要なし 必要なし 所有者、共同作成者、または以下を許可しているカスタム ロール: /workspaces/*/read/workspaces/environments/write/workspaces/experiments/runs/write/workspaces/metadata/artifacts/write/workspaces/metadata/snapshots/write/workspaces/environments/build/action/workspaces/experiments/runs/submit/action/workspaces/environments/readSecrets/action
任意の型の実行を送信する (V2) 必要なし 必要なし 所有者、共同作成者、または以下を許可しているカスタム ロール: /workspaces/*/read/workspaces/environments/write/workspaces/jobs/*/workspaces/metadata/artifacts/write/workspaces/metadata/codes/*/write/workspaces/environments/build/action/workspaces/environments/readSecrets/action
パイプラインとエンドポイントの公開 (V1) 必要なし 必要なし 所有者、共同作成者、または以下を許可しているカスタム ロール: /workspaces/endpoints/pipelines/*/workspaces/pipelinedrafts/*/workspaces/modules/*
パイプラインとエンドポイントの公開 (V2) 必要なし 必要なし 所有者、共同作成者、または以下を許可しているカスタム ロール: /workspaces/endpoints/pipelines/*/workspaces/pipelinedrafts/*/workspaces/components/*
AKS リソースをアタッチする 2 必要なし AKS を含むリソース グループの所有者または共同作成者
AKS/ACI リソースに登録済みモデルを配置する 必要なし 必要なし 所有者、共同作成者、または以下を許可しているカスタム ロール: /workspaces/services/aks/write/workspaces/services/aci/write
配置された AKS エンドポイントに対するスコアリング 必要なし 必要なし 所有者、共同作成者、または以下を許可しているカスタム ロール: /workspaces/services/aks/score/action/workspaces/services/aks/listkeys/action (Microsoft Entra 認証を使用しない場合) または /workspaces/read (トークン認証を使用する場合)
対話型ノートブックを使用してストレージにアクセスする 必要なし 必要なし 所有者、共同作成者、または以下を許可しているカスタム ロール: /workspaces/computes/read/workspaces/notebooks/samples/read/workspaces/notebooks/storage/*/workspaces/listStorageAccountKeys/action/workspaces/listNotebookAccessToken/read
新しいカスタム ロールを作成する 所有者、共同作成者、または Microsoft.Authorization/roleDefinitions/write が可能なカスタム ロール 必要なし 所有者、共同作成者、または /workspaces/computes/write が可能なカスタム ロール
オンライン エンドポイントとデプロイを作成および管理する 必要なし スタジオにデプロイするには、 Microsoft.Resources/deployments/write 所有者、共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* が許可されたカスタム ロール。
オンライン エンドポイントの認証資格情報を取得する 必要なし 必要なし 所有者、共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action および Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action が可能なカスタム ロール
  1. 最初にワークスペースを作成しようとしたときにエラーが発生した場合は、ご自分のロールで Microsoft.MachineLearningServices/register/action が許可されていることを確認してください。 このアクションにより、Azure Machine Learning リソース プロバイダーを Azure サブスクリプションに登録できます。

  2. AKS クラスターをアタッチする場合は、クラスターの Azure Kubernetes Service クラスター管理者ロールも必要です。

仮想ネットワークまたはサブネットにデプロイする

  • リソースを仮想ネットワークまたはサブネットにデプロイするには、ご利用のユーザー アカウントが、Azure ロールベースのアクセス制御 (Azure RBAC) で次のアクションへのアクセス許可を保持している必要があります。

    • 仮想ネットワーク リソースの "Microsoft.Network/*/read"。 このアクセス許可は、Azure Resource Manager (ARM) テンプレートのデプロイには必要ありません。
    • 仮想ネットワーク リソース上の "Microsoft.Network/virtualNetworks/join/action"。
    • サブネット リソース上の "Microsoft.Network/virtualNetworks/subnets/join/action"。

    ネットワークでの Azure RBAC の詳細については、ネットワークの組み込みロールに関するページを参照してください

V1 API と V2 API のアクションの違い

V1 API と V2 API のアクションには、特定の違いがあります。

資産 V1 API のアクション パス V2 API のアクション パス
データセット Microsoft.MachineLearningServices/workspaces/datasets Microsoft.MachineLearningServices/workspaces/datasets/versions
実験の実行とジョブ Microsoft.MachineLearningServices/workspaces/experiments Microsoft.MachineLearningServices/workspaces/jobs
モデル Microsoft.MachineLearningServices/workspaces/models Microsoft.MachineLearningServices/workspaces/models/versions
スナップショットとコード Microsoft.MachineLearningServices/workspaces/snapshots Microsoft.MachineLearningServices/workspaces/codes/versions
モジュールとコンポーネント Microsoft.MachineLearningServices/workspaces/modules Microsoft.MachineLearningServices/workspaces/components

両方のアクションを含めたり、両方のアクションを含むワイルドカード (Microsoft.MachineLearningServices/workspaces/datasets/*/read など) を使用して、カスタム ロールを V1 API と V2 API の両方と互換性を持たせることができます。

カスタマー マネージド キーを使用してワークスペースを作成する

カスタマー マネージド キー (CMK) を使用する場合、Azure Key Vault を使用してキーを格納します。 ワークスペースの作成に使用されるユーザーまたはサービス プリンシパルには、キー コンテナーへの所有者または共同作成者アクセス権が必要です。

ワークスペースがユーザー割り当てマネージド ID を使用して構成されている場合、ID に次のロールが付与されている必要があります。 これらのロールにより、マネージド ID は、カスタマー マネージド キーを使用するときに使用される Azure Storage、Azure Cosmos DB、および Azure Search リソースを作成できます。

  • Microsoft.Storage/storageAccounts/write
  • Microsoft.Search/searchServices/write
  • Microsoft.DocumentDB/databaseAccounts/write

キー コンテナー内では、ユーザーまたはサービス プリンシパルに、キー コンテナー アクセス ポリシーを使用してキーへの作成取得削除、および消去のアクセス権を付与する必要があります。 詳細については、「Azure Key Vault セキュリティ」を参照してください。

Azure Machine Learning コンピューティング クラスターのユーザー割り当てマネージド ID

Azure Machine Learning コンピューティング クラスターにユーザー割り当て ID を割り当てるには、コンピューティングとマネージド ID オペレーター ロールを作成するための書き込みアクセス許可を持っている必要があります。 マネージド ID を使用した Azure RBAC の詳細については、ユーザー割り当て ID の管理方法に関するページを参照してください。

MLflow 操作

Azure Machine Learning ワークスペースで MLflow 操作を実行するには、カスタム ロールに次のスコープを使用します。

MLflow 操作 範囲
(V1) 実験のリスト表示、読み取り、作成、更新、または削除 Microsoft.MachineLearningServices/workspaces/experiments/*
(V2) ジョブのリスト表示、読み取り、作成、更新、または削除 Microsoft.MachineLearningServices/workspaces/jobs/*
名前による登録済みモデルの取得、レジストリ内のすべての登録済みモデルの一覧の取得、登録済みモデルの検索、各要求ステージの最新バージョンのモデル、登録済みモデルのバージョンの取得、モデルのバージョンの検索、モデルのバージョンの成果物が格納されている URI の取得、実験 ID による実行の検索 Microsoft.MachineLearningServices/workspaces/models/*/read
新しい登録済みモデルの作成、登録済みモデルの名前または説明の更新、既存の登録済みモデルの名前の変更、モデルの新しいバージョンの作成、モデルのバージョンの説明の更新、いずれかのステージへの登録済みモデルの移行 Microsoft.MachineLearningServices/workspaces/models/*/write
登録済みモデルとそのすべてのバージョンの削除、登録済みモデルの特定のバージョンの削除 Microsoft.MachineLearningServices/workspaces/models/*/delete

カスタム ロールの例

データ サイエンティスト

データ科学者がワークスペース内で以下を除くすべての操作を実行することができます。

  • コンピューティングの作成
  • 実稼働 AKS クラスターへのモデルの配置
  • 運用環境でのパイプライン エンドポイントの配置

data_scientist_custom_role.json :

{
    "Name": "Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute or deploy production endpoints.",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/*/action",
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.MachineLearningServices/workspaces/*/write"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/services/aks/write",
        "Microsoft.MachineLearningServices/workspaces/services/aks/delete",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

制限されたデータ サイエンティスト

許可されたアクションにワイルドカードを含まない、より制限されたロール定義。 ワークスペース内で以下を除くすべての操作が実行できます。

  • コンピューティングの作成
  • 実稼働 AKS クラスターへのモデルの配置
  • 運用環境でのパイプライン エンドポイントの配置

data_scientist_restricted_custom_role.json :

{
    "Name": "Data Scientist Restricted Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute or deploy production endpoints",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/computes/start/action",
        "Microsoft.MachineLearningServices/workspaces/computes/stop/action",
        "Microsoft.MachineLearningServices/workspaces/computes/restart/action",
        "Microsoft.MachineLearningServices/workspaces/computes/applicationaccess/action",
        "Microsoft.MachineLearningServices/workspaces/notebooks/storage/write",
        "Microsoft.MachineLearningServices/workspaces/notebooks/storage/delete",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/submit/action",
        "Microsoft.MachineLearningServices/workspaces/pipelinedrafts/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/write",
        "Microsoft.MachineLearningServices/workspaces/environments/write",
        "Microsoft.MachineLearningServices/workspaces/models/*/write",
        "Microsoft.MachineLearningServices/workspaces/modules/write",
        "Microsoft.MachineLearningServices/workspaces/components/*/write",
        "Microsoft.MachineLearningServices/workspaces/datasets/*/write", 
        "Microsoft.MachineLearningServices/workspaces/datasets/*/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listNodes/action",
        "Microsoft.MachineLearningServices/workspaces/environments/build/action"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/computes/write",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/delete",
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/profile/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/preview/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/profile/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/preview/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/schema/read",    
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/schema/read",
        "Microsoft.MachineLearningServices/workspaces/datastores/write",
        "Microsoft.MachineLearningServices/workspaces/datastores/delete"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

MLflow データ サイエンティスト

データ科学者が、以下を除く、MLflow Azure Machine Learning でサポートされているすべての操作を実行できます。

  • コンピューティングの作成
  • 実稼働 AKS クラスターへのモデルの配置
  • 運用環境でのパイプライン エンドポイントの配置

mlflow_data_scientist_custom_role.json :

{
    "Name": "MLFlow Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can perform azureml mlflow integrated functionalities that includes mlflow tracking, projects, model registry",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/experiments/*",
        "Microsoft.MachineLearningServices/workspaces/jobs/*",
        "Microsoft.MachineLearningServices/workspaces/models/*"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/services/aks/write",
        "Microsoft.MachineLearningServices/workspaces/services/aks/delete",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

MLOps

サービス プリンシパルにロールを割り当て、それを使用して MLOps パイプラインを自動化することができます。 たとえば、既に公開されているパイプラインに対して実行を送信するには、次のようにします。

mlops_custom_role.json :

{
    "Name": "MLOps Custom",
    "IsCustom": true,
    "Description": "Can run pipelines against a published pipeline endpoint",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/read",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/read",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/read",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/read",
        "Microsoft.MachineLearningServices/workspaces/environments/read",    
        "Microsoft.MachineLearningServices/workspaces/metadata/secrets/read",
        "Microsoft.MachineLearningServices/workspaces/modules/read",
        "Microsoft.MachineLearningServices/workspaces/components/read",       
        "Microsoft.MachineLearningServices/workspaces/datasets/*/read",
        "Microsoft.MachineLearningServices/workspaces/datastores/read",
        "Microsoft.MachineLearningServices/workspaces/environments/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/read",       
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/submit/action",
        "Microsoft.MachineLearningServices/workspaces/experiments/jobs/read",       
        "Microsoft.MachineLearningServices/workspaces/experiments/jobs/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/codes/*/write",       
        "Microsoft.MachineLearningServices/workspaces/environments/build/action",
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/computes/write",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/delete",
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.Authorization/*"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

ワークスペース管理者

ワークスペースのスコープ内で以下を除くすべての操作を実行することができます。

  • 新しいワークスペースの作成。
  • サブスクリプションまたはワークスペース レベルのクォータの割り当て

ワークスペース管理者は、新しいロールを作成することもできません。 ワークスペースのスコープ内で既存の組み込みロールまたはカスタム ロールのみを割り当てることができます。

workspace_admin_custom_role.json :

{
    "Name": "Workspace Admin Custom",
    "IsCustom": true,
    "Description": "Can perform all operations except quota management and upgrades",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/*/action",
        "Microsoft.MachineLearningServices/workspaces/*/write",
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.Authorization/roleAssignments/*"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

データのラベル付け

データのラベル付けのみを対象とするデータのラベル付け用の組み込みのロールがあります。 次のカスタム ロールは、データ ラベル付けプロジェクトに対して他のレベルのアクセス権を付与します。

ラベル付けチームのリードは、ラベルが付いたデータセットを確認し、却下したり、ラベル付け分析情報を表示したりできます。 それに加え、このロールでは、ラベラーのロールも実行できます。

labeling_team_lead_custom_role.json :

{
    "Name": "Labeling Team Lead",
    "IsCustom": true,
    "Description": "Team lead for Labeling Projects",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/write",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/reject/action",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/update/action",
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/summary/read"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/write",
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/delete",
        "Microsoft.MachineLearningServices/workspaces/labeling/export/action"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

トラブルシューティング

Azure RBAC を使用している間は、次の点に注意する必要があります:

  • Azure でリソース (ワークスペースなど) を作成しても、リソースの直接の所有者にはなりません。 ロールは、そのサブスクリプションで認可されている最も高いスコープのロールから継承されます。 たとえば、Machine Learning ワークスペースを作成するアクセス許可を持っているネットワーク管理者の場合、そのワークスペースに対するネットワーク管理者ロールが割り当てられます。 所有者ロールではありません。

  • ワークスペースでクォータ操作を実行するには、サブスクリプション レベルのアクセス許可が必要です。 これは、マネージド コンピューティング リソースに対するサブスクリプション レベルのクォータまたはワークスペース レベルのクォータの設定は、サブスクリプション スコープで書き込みアクセス許可がある場合にのみ可能であることを意味します。

  • Studio にデプロイするには、Microsoft.Resources/deployments/write および Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments/write が必要です。 SDK/CLI のデプロイでは、Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments/write が必要です。 追加のアクセス許可については、ワークスペース/リソース グループの所有者にお問い合わせください。

  • 同じ Microsoft Entra ユーザーに 2 つのロールの割り当てがあり、Actions/NotActions のセクションが競合している場合、あるロールの NotActions に一覧表示されている操作は、他のロールで Actions としても一覧表示されている場合、有効にならない可能性があります。 Azure がロールの割り当てを解析する方法の詳細については、「ユーザーがリソースへのアクセス権を持っているどうかを Azure RBAC が特定する方法」を参照してください。

  • 新しいロールの割り当てがスタック全体のキャッシュされたアクセス許可に対して有効になるには、最大 1 時間かかります。