次の方法で共有


オンライン エンドポイントの認証と承認

適用対象:Azure CLI ml 拡張機能 v2 (現行)Python SDK azure-ai-ml v2 (現行)

この記事では、Azure Machine Learning オンライン エンドポイントのコンテキストでの ID とアクセス許可の概念について説明します。 また、ロールベースのアクセス制御とアクセス許可をサポートする Microsoft Entra ID についても説明します。 Microsoft Entra ID は、目的に応じて "ユーザー ID" または "エンドポイント ID" と呼ばれます。

  • ユーザー ID は、エンドポイントとそのデプロイを作成したり、エンドポイントやワークスペースと対話したりできる Microsoft Entra ID です。 ユーザー ID は、エンドポイント、デプロイ、またはワークスペースに要求を発行します。 ユーザー ID には、エンドポイントまたはワークスペースで "コントロール プレーン" と "データ プレーン" の操作を実行するための適切なアクセス許可が必要です。

  • エンドポイント ID は、展開でユーザー コンテナーを実行する Microsoft Entra ID です。 ユーザー コンテナーは、デプロイにエンドポイント ID を使用します。 エンドポイント ID には、ユーザー コンテナーが必要に応じてリソースと対話するための適切なアクセス許可も必要です。 たとえば、エンドポイント ID には、Azure Container Registry からイメージをプルするため、または他の Azure サービスと対話するための適切なアクセス許可が必要です。

ユーザー ID とエンドポイント ID ではアクセス許可の要件が異なります。 ID とアクセス許可の管理について詳しくは、オンライン エンドポイントのクライアントを認証する方法に関する記事をご覧ください。

重要

Microsoft Entra ID 認証 (aad_token) は、マネージド オンライン エンドポイントでのみサポートされます。 Kubernetes オンライン エンドポイントの場合は、キーまたは Azure Machine Learning のトークン (aml_token) を使用できます。

承認のアクセス許可とスコープ

Azure ロールベースのアクセス制御 (RBAC) を使用すると、特定のスコープに対して許可または拒否される一連のアクションを使用して、ロールを定義し、割り当てることができます。 ビジネスのニーズに合わせてこれらのロールとスコープをカスタマイズできます。 次の例は開始点として使用でき、必要に応じて拡張することができます。

ユーザー ID の場合:

  • コントロール プレーンとデータ プレーンの操作を管理するには、アクセス許可アクション を含む組み込みロール Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*/actionsを使用します。
  • 特定のエンドポイントの操作を制御するには、スコープ /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>/onlineEndpoints/<endpointName> を使用します。
  • ワークスペース内のすべてのエンドポイントの操作を制御するには、スコープ /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName> を使用します。

エンドポイント ID の場合、ユーザー コンテナーで BLOB の読み取りを許可するには、アクセス許可データ アクションを含む組み込みロールMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/readを使用します。

Azure Machine Learning ワークスペースに対する認可の管理について詳しくは、Azure Machine Learning へのアクセスの管理に関する記事を参照してください。 ロールの定義、スコープ、ロールの割り当ての詳細については、「Azure RBAC」を参照してください。 割り当てられたロールのスコープについては、「Azure RBAC のスコープについて」を参照してください。

ユーザー ID に必要なアクセス許可

Microsoft アカウントを使用して (たとえば、az login を使用して) Azure テナントにサインインする場合、ユーザーとしての身元を確認するユーザー認証手順 (authn) を完了します。 Azure Machine Learning ワークスペースの下にオンライン エンドポイントを作成するには、ID に適切なアクセス許可 (承認または authz とも呼ばれます) が必要です。 ユーザー ID には、コントロール プレーンデータ プレーンの両方の操作を実行するための適切なアクセス許可が必要です。

コントロール プレーン操作

コントロール プレーン操作は、オンライン エンドポイントを制御および変更します。 これらの操作には、オンライン エンドポイントとオンライン デプロイでの作成、読み取り、更新、削除 (CRUD) 操作が含まれます。 オンライン エンドポイントとデプロイの場合、コントロール プレーン操作の実行要求は Azure Machine Learning ワークスペースに送られます。

コントロール プレーン操作の認証

コントロール プレーン操作の場合は、Microsoft Entra トークンを使用して、ワークスペースに対してクライアントを認証します。 ユース ケースに応じて、 いくつかの認証ワークフロー から選択してこのトークンを取得します。 ユーザー ID には、リソースにアクセスするための適切な Azure RBAC ロールも割り当てられている必要があります。

コントロール プレーン操作の認可

コントロール プレーン操作の場合、ユーザー ID には、リソースにアクセスするための適切な Azure RBAC ロールが割り当てられている必要があります。 具体的には、オンライン エンドポイントとデプロイに対する CRUD 操作の場合、ユーザー ID には、次のアクションを実行するためのロールを割り当てる必要があります。

操作 必要な Azure RBAC の役割 Scope
オンライン エンドポイントとデプロイに対する作成および更新操作を実行する。 所有者共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write を許可するロール ワークスペース
オンライン エンドポイントとデプロイに対する削除操作を実行する。 所有者共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete を許可するロール ワークスペース
Azure Machine Learning スタジオを使用したオンライン エンドポイントとデプロイに対する作成、更新、削除操作を実行する。 所有者共同作成者、または Microsoft.Resources/deployments/write を許可するロール ワークスペースを含むリソース グループ
オンライン エンドポイントとデプロイに対する読み取り操作を実行する。 所有者共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read を許可するロール ワークスペース
ワークスペースからマネージドと Kubernetes の両方のオンライン エンドポイントを呼び出すための Azure Machine Learning トークン (aml_token) をフェッチする。 所有者共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action を許可するロール エンドポイント
ワークスペースからオンライン エンドポイント (マネージドと Kubernetes の両方) を呼び出すためのキーをフェッチする。 所有者共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action を許可するロール エンドポイント
マネージドと Kubernetes の両方のオンライン エンドポイントのキーを再生成する。 所有者共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action を許可するロール エンドポイント
マネージド オンライン エンドポイントを呼び出すための Microsoft Entra トークン (aad_token) をフェッチする。 ロールは不要 該当なし*

* サインインすると、Microsoft Entra トークン (aad_token) を Microsoft Entra ID から直接フェッチできるので、ワークスペースに対する Azure RBAC アクセス許可は必要ありません。

ユーザー ID に対して既定のシークレット ストアへのアクセスを強制するためのアクセス許可

シークレット挿入機能を使用し、エンドポイントの作成時に、既定のシークレット ストアへのアクセスを強制するフラグを設定している場合、ユーザー ID には、ワークスペース接続からシークレットを読み取るためのアクセス許可が必要です。

エンドポイント ID は、システム割り当て ID (SAI) またはユーザー割り当て ID (UAI) のいずれかになります。 SAI を使用してエンドポイントを作成し、既定のシークレット ストアへのアクセスを強制するフラグを設定する場合、ユーザー ID には、エンドポイントとデプロイの作成時にワークスペース接続からシークレットを読み取るアクセス許可が必要です。 この制限により、シークレットを読み取るアクセス許可を持つユーザー ID だけが、シークレットを読み取るアクセス許可をエンドポイント ID に付与できるようになります。

ワークスペース接続からシークレットを読み取るためのアクセス許可がないユーザー ID で、SAI を使用してエンドポイントまたはデプロイを作成しようとすると、既定のシークレット ストアへのアクセスを強制するエンドポイントのフラグが設定されている場合、エンドポイントまたはデプロイの作成は拒否されます。

UAI を使用してエンドポイントを作成する場合、またはエンドポイントが SAI を使用しているが、既定のシークレット ストアへのアクセスを強制するフラグを設定しない場合、ユーザー ID は、エンドポイントまたはデプロイを作成するためにワークスペース接続からシークレットを読み取ることができる必要はありません。 この場合、エンドポイント ID にはシークレットを読み取るアクセス許可は自動的に付与されませんが、適切なロールを割り当てることで、このアクセス許可を手動で付与できます。

ロールの割り当てが自動か手動かに関係なく、エンドポイントまたはデプロイ定義でシークレット参照を使用して環境変数をマップした場合、シークレットの取得と挿入がトリガーされます。 シークレット挿入機能では、エンドポイントを使用して、シークレットの取得と挿入を実行します。 シークレットの挿入について詳しくは、「オンライン エンドポイントでのシークレットの挿入」をご覧ください。

データ プレーン操作

データ プレーン操作では、オンライン エンドポイントは変更されませんが、エンドポイントと対話するデータが使用されます。 データ プレーン操作の例として、オンライン エンドポイントにスコアリング要求を送信し、そこから応答を取得します。 オンライン エンドポイントとデプロイの場合、データ プレーン操作の実行要求はエンドポイントのスコアリング URI に送られます。

データ プレーン操作の認証

データ プレーン操作の場合は、エンドポイントのスコアリング URI に要求を送信するクライアントを認証する次の方法から選択します。

  • Key
  • Azure Machine Learning トークン aml_token
  • Microsoft Entra トークン aad_token

データ プレーン操作用にクライアントを認証する方法の詳細については、オンライン エンドポイントに対してクライアントを認証する方法に関する記事を参照してください。

データ プレーン操作の認可

データ プレーン操作の場合、エンドポイントが Microsoft Entra トークン (aad_token) を使用するように設定されている場合にのみ、ユーザー ID には、リソースへのアクセスを許可するための適切な Azure RBAC が必要です。 オンライン エンドポイントとデプロイに対するデータ プレーン操作の場合、ユーザー ID には、次のアクションを使用するロールを割り当てる必要があります。

操作 必要な Azure RBAC の役割 Scope
key または Azure Machine Learning トークン (aml_token) を使用してオンライン エンドポイントを呼び出す。 ロールは必要ありません。 適用なし
Microsoft Entra トークン (aad_token) を使用してマネージド オンライン エンドポイントを呼び出す。 所有者共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action を許可するロール エンドポイント
Microsoft Entra トークン (aad_token) を使用して Kubernetes オンライン エンドポイントを呼び出す。 Kubernetes オンライン エンドポイントでは、データ プレーン操作用の Microsoft Entra トークンはサポートされていません。 適用なし

エンドポイント ID に必要なアクセス許可

オンラインデプロイでは、エンドポイント ID (エンドポイントに関連付けられたマネージド ID) を使用してユーザー コンテナーが実行されます。 エンドポイントは、Azure RBAC をサポートする Microsoft Entra ID です。 そのため、エンドポイント ID に Azure ロールを割り当てて、操作を実行するために必要なアクセス許可を制御できます。 このエンドポイント ID は、SAI または UAI のいずれかになります。 エンドポイントの作成時に SAI と UAI のどちらを使用するかを決定します。

  • SAI の場合、エンドポイントを作成すると ID が自動的に作成され、Container Registry pull permission AcrPullStorage Blob Data Reader などの基本的なアクセス許可を持つロールが自動的に割り当てられます。
  • UAI の場合は、まず ID を作成してから、エンドポイントの作成時にエンドポイントに関連付ける必要があります。 必要に応じて、適切なロールを UAI に割り当てる必要もあります。

エンドポイント ID のロールの自動割り当て

エンドポイント ID が SAI の場合、便宜上、次のロールがエンドポイント ID に割り当てられます。

Role 説明 ロールの自動割り当ての条件
AcrPull エンドポイント ID がワークスペースに関連付けられている Azure Container Registry からイメージをプルできるようにします エンドポイント ID は SAI です。
ストレージ BLOB データ閲覧者 エンドポイント ID に対して、ワークスペースの既定のデータストアから BLOB を読み取ることを許可します エンドポイント ID は SAI です。
AzureML Metrics Writer (プレビュー) エンドポイント ID に対して、ワークスペースにメトリックを書き込むことを許可します エンドポイント ID は SAI です。
Azure Machine Learning Workspace Connection Secrets Reader エンドポイント ID に対して、ワークスペース接続からシークレットを読み取ることを許可します エンドポイント ID は SAI であり、エンドポイントの作成には既定のシークレット ストアへのアクセスを強制するフラグがあります。 さらに、エンドポイントを作成するユーザー ID には、ワークスペース接続からシークレットを読み取るためのアクセス許可がある。
  • エンドポイント ID が SAI であり、強制フラグが設定されていない場合、またはユーザー ID にシークレットを読み取るアクセス許可がない場合、 Azure Machine Learning ワークスペース接続シークレット閲覧者 ロールに対する自動ロール割り当てはありません。 詳しくは、シークレットの挿入を使ってオンライン エンドポイントをデプロイする方法に関する記事をご覧ください。
  • エンドポイント ID が UAI の場合、Azure Machine Learning Workspace Connection Secrets Reader ロールの自動ロール割り当ては行われません。 この場合は、必要に応じて、ユーザーがエンドポイント ID にロールを手動で割り当てる必要があります。

Azure Machine Learning Workspace Connection Secrets Reader ロールの詳細については、「ID にアクセス許可を割り当てる」を参照してください。