オンライン エンドポイントの認証と承認
適用対象:Azure CLI ml extension 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
を含む組み込みロール AzureML Data Scientist を使用できます。 - 特定のエンドポイントの操作を制御するには、スコープ
/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>/onlineEndpoints/<endpointName>
を使用します。 - ワークスペース内のすべてのエンドポイントの操作を制御するには、スコープ
/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
を使用します。
エンドポイント ID の場合、ユーザー コンテナーで BLOB を読み取ることができるように、組み込みロール Storage Blob Data Reader には、アクセス許可データ アクション 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 の役割 | 範囲 |
---|---|---|
オンライン エンドポイントとデプロイに対する作成および更新操作を実行する。 | 所有者、共同作成者、または 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 に要求を送信するクライアントを認証する方法を次の中から選択できます。
- キー
- Azure Machine Learning トークン
aml_token
- Microsoft Entra トークン
aad_token
データ プレーン操作用にクライアントを認証する方法の詳細については、オンライン エンドポイントに対してクライアントを認証する方法に関する記事を参照してください。
データ プレーン操作の認可
データ プレーン操作の場合、エンドポイントが Microsoft Entra トークン (aad_token
) を使用するように設定されている場合にのみ、ユーザー ID には、リソースへのアクセスを許可するための適切な Azure RBAC が必要です。 オンライン エンドポイントとデプロイに対するデータ プレーン操作の場合、ユーザー ID には、次のアクションを使用するロールを割り当てる必要があります。
操作 | 必要な Azure RBAC の役割 | 範囲 |
---|---|---|
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 が自動的に作成され、基本的なアクセス許可 (Azure Container Registry のプル アクセス許可 AcrPull や Storage Blob Data Reader など) を持つロールが自動的に割り当てられます。
- UAI の場合、まず ID を作成し、エンドポイントの作成時に、その ID をエンドポイントに関連付ける必要があります。 必要に応じて、適切なロールを UAI に割り当てる必要もあります。
エンドポイント ID のロールの自動割り当て
エンドポイント ID が SAI の場合、便宜上、次のロールがエンドポイント ID に割り当てられます。
ロール | 説明 | ロールの自動割り当ての条件 |
---|---|---|
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 Workspace Connection Secrets Reader ロールの自動ロール割り当ては行われません。 詳しくは、シークレットの挿入を使ってオンライン エンドポイントをデプロイする方法に関する記事をご覧ください。
- エンドポイント ID が UAI の場合、Azure Machine Learning Workspace Connection Secrets Reader ロールの自動ロール割り当ては行われません。 この場合は、必要に応じて、ユーザーがエンドポイント ID にロールを手動で割り当てる必要があります。
Azure Machine Learning Workspace Connection Secrets Reader ロールの詳細については、「ID にアクセス許可を割り当てる」を参照してください。