マネージド オンライン エンドポイントの認証
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
この記事では、オンライン エンドポイントのコンテキストにおける ID とアクセス許可の概念について説明します。 まず、Azure RBAC をサポートする Microsoft Entra ID について説明します。 Microsoft Entra ID の目的に応じて、これをユーザー ID またはエンドポイント ID と呼びます。
ユーザー ID は、エンドポイントとそのデプロイを作成したり、エンドポイントやワークスペースと対話するために使用できる Microsoft Entra ID です。 つまり、ID がエンドポイント、デプロイ、またはワークスペースに対して要求を発行している場合、これはユーザー ID と見なすことができます。 ユーザー ID には、エンドポイントまたはワークスペースでコントロール プレーンとデータ プレーンの操作を実行するための適切なアクセス許可が必要です。
エンドポイント ID は、デプロイでユーザー コンテナーを実行する Microsoft Entra ID です。 つまり、ID がエンドポイントに関連付けられ、デプロイのユーザー コンテナーに使用されている場合は、エンドポイント ID と呼ばれます。 エンドポイント ID には、ユーザー コンテナーが必要に応じてリソースと対話するための適切なアクセス許可も必要です。 たとえば、エンドポイント ID には、Azure Container Registry からイメージをプルしたり、他の Azure サービスと対話したりするための適切なアクセス許可が必要です。
一般に、ユーザー ID とエンドポイント ID ではアクセス許可の要件が異なります。 ID とアクセス許可の管理について詳しくは、オンライン エンドポイントのクライアントを認証する方法に関する記事をご覧ください。 シークレットの追加アクセス許可を自動的に追加する特別なケースについて詳しくは、ユーザー ID に対する追加のアクセス許可に関するセクションをご覧ください。
制限事項
Microsoft Entra ID 認証 (aad_token
) は、マネージド オンライン エンドポイントでのみサポートされます。 Kubernetes オンライン エンドポイントの場合は、キーまたは Azure Machine Learning トークン (aml_token
) を使用できます。
ユーザー ID に必要なアクセス許可
Microsoft アカウントを使用して (たとえば、az login
を使用して) Azure テナントにサインインするときは、ユーザー認証手順 (一般に authn と呼ばれます) を完了し、ユーザーとしての ID が決定されます。 ここで、ワークスペースの下にオンライン エンドポイントを作成する場合は、そのための適切なアクセス許可が必要になります。 ここで、認可 (authz とも呼ばれます) が発生します。
コントロール プレーン操作
"コントロール プレーン操作" により、オンライン エンドポイントが制御および変更されます。 これらの操作には、オンライン エンドポイントとオンライン デプロイでの作成、読み取り、更新、削除 (CRUD) 操作が含まれます。 オンライン エンドポイントとデプロイの場合、コントロール プレーン操作の実行要求は Azure Machine Learning ワークスペースに送られます。
コントロール プレーン操作の認証
コントロール プレーン操作については、ワークスペースに対してクライアントを認証する 1 つの方法があります。Microsoft Entra トークンを使用します。
ユース ケースに応じて、このトークンを取得するためのいくつかの認証ワークフローから選択できます。 また、ユーザー ID には、リソースへのアクセスが許可されている適切な Azure ロールベースのアクセス制御 (Azure RBAC) が必要です。
コントロール プレーン操作の認可
コントロール プレーン操作の場合、ユーザー ID には、リソースへのアクセスが許可されている適切な Azure ロールベースのアクセス制御 (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 が可能な任意のロール |
endpoint |
ワークスペースからオンライン エンドポイント (マネージドと Kubernetes の両方) を呼び出すためにキーをフェッチする | 所有者、共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action が可能な任意のロール |
endpoint |
オンライン エンドポイント (マネージドと Kubernetes の両方) のキーを再生成する | 所有者、共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action が可能な任意のロール |
endpoint |
"マネージド" オンライン エンドポイントを呼び出すために Microsoft Entra トークン (aad_token ) フェッチする |
ロールは必要ありません。 | 適用外 |
Note
サインインすると、Microsoft Entra ID から Microsoft Entra トークン (aad_token
) を直接フェッチできます。ワークスペースに対する追加の Azure RBAC アクセス許可は必要ありません。
既定のシークレット ストアへのアクセスを強制するときのユーザー ID に対する追加のアクセス許可
シークレット挿入機能を使う予定で、エンドポイントの作成時に、既定のシークレット ストアへのアクセスを強制するフラグを設定する場合は、ワークスペース接続からシークレットを読み取るためのアクセス許可を "ユーザー ID" が持っている必要があります。
システム割り当て ID (SAI) を使ってエンドポイントを作成し、"かつ"、既定のシークレット ストアへのアクセスを強制するフラグを設定する場合は、エンドポイントを作成するときと、エンドポイントの下にデプロイを作成するときに、ワークスペース接続からシークレットを読み取るためのアクセス許可を、ユーザー ID が持っている必要があります。 この制限により、シークレットを読み取るアクセス許可を持つ "ユーザー ID" だけが、シークレットを読み取るアクセス許可をエンドポイント ID に付与できることが保証されます。
ワークスペース接続からシークレットを読み取るアクセス許可を持っていないユーザー ID が、SAI を使い、既定のシークレット ストアへのアクセスを強制するエンドポイントのフラグを設定して、"エンドポイント" を作成しようとしても、エンドポイントの作成は拒否されます。
同様に、ワークスペース接続からシークレットを読み取るアクセス許可を持っていないユーザー ID が、SAI を使い、既定のシークレット ストアへのアクセスを強制するエンドポイントのフラグを設定して、エンドポイントの下に "デプロイ" を作成しようとしても、デプロイの作成は拒否されます。
(1) エンドポイントが UAI を使って作成されている場合、"または"、(2) エンドポイントが SAI を使っている場合でも、既定のシークレット ストアへのアクセスを強制するフラグが設定されて "いない" 場合は、ワークスペース接続からシークレットを読み取るアクセス許可をユーザー ID が持っている必要はありません。 この場合、シークレットを読み取るアクセス許可はエンドポイント ID に自動的に付与されませんが、その場合でも、必要であれば、適切なロールを割り当てると、エンドポイント ID にこのアクセス許可を手動で付与できます。 ロールの割り当てが自動か手動かに関係なく、デプロイの定義で環境変数とシークレット参照がマップされている場合は、シークレットの取得と挿入がトリガーされ、それを行うためにエンドポイント ID が使われます。
Azure Machine Learning ワークスペースに対する認可の管理について詳しくは、Azure Machine Learning へのアクセスの管理に関する記事をご覧ください。
シークレットの挿入について詳しくは、「オンライン エンドポイントでのシークレットの挿入」をご覧ください。
データ プレーン操作
"データ プレーン操作" では、オンライン エンドポイントを変更するのではなく、データを使用してエンドポイントと対話します。 データ プレーン操作の例として、オンライン エンドポイントにスコアリング要求を送信し、そこから応答を取得します。 オンライン エンドポイントとデプロイの場合、データ プレーン操作の実行要求はエンドポイントのスコアリング URI に送られます。
データ プレーン操作の認証
データ プレーン操作の場合、エンドポイントのスコアリング URI に要求を送信するクライアントを認証する次の 3 つの方法から選択できます。
- キー
- Azure Machine Learning トークン (
aml_token
) - Microsoft Entra トークン (
aad_token
)
データ プレーン操作用にクライアントを認証する方法の詳細については、オンライン エンドポイントに対してクライアントを認証する方法に関する記事を参照してください。
データ プレーン操作の認可
データ プレーン操作の場合、エンドポイントが Microsoft Entra トークン (aad_token
) を使用するように設定されている場合にのみ、ユーザー ID には、リソースへのアクセスが許可されている適切な Azure ロールベースのアクセス制御 (Azure RBAC) が必要です。 具体的には、オンライン エンドポイントとデプロイに対するデータ プレーン操作について、ID に次のアクションを使用するロールを割り当てる必要があります。
操作 | 必要な Azure RBAC の役割 | ロールが割り当てられるスコープ |
---|---|---|
キー (key ) または Azure Machine Learning トークン (aml_token ) を使用してオンライン エンドポイントを呼び出す。 |
ロールは必要ありません。 | 適用なし |
Microsoft Entra トークン (aad_token ) を使用して "マネージド" オンライン エンドポイントを呼び出す。 |
所有者、共同作成者、または Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action が可能な任意のロール |
endpoint |
Microsoft Entra トークン (aad_token ) を使用して Kubernetes オンライン エンドポイントを呼び出す。 |
Kubernetes オンライン エンドポイントでは、データ プレーン操作用の Microsoft Entra トークンはサポートされていません。 | 適用なし |
エンドポイント ID に必要なアクセス許可
オンライン デプロイでは、"エンドポイント ID"、つまりエンドポイントに関連付けられているマネージド ID を使用してユーザー コンテナーが実行されます。 エンドポイント ID は、Azure RBAC をサポートする Microsoft Entra ID です。 そのため、エンドポイント ID に Azure ロールを割り当てて、操作を実行するために必要なアクセス許可を制御できます。 このエンドポイント ID には、システム割り当て ID (SAI) またはユーザー割り当て ID (UAI) のいずれかを使用できます。 エンドポイントの作成時に SAI と UAI のどちらを使用するかを決定できます。
- "システム割り当て ID" の場合、エンドポイントを作成すると ID が自動的に作成され、基本的なアクセス許可 (Azure Container Registry のプル アクセス許可やストレージ BLOB データ 閲覧者など) を持つロールが自動的に割り当てられます。
- "ユーザー割り当て ID" の場合は、まず ID を作成してから、エンドポイントの作成時にエンドポイントに関連付ける必要があります。 必要に応じて、適切なロールを UAI に割り当てる必要もあります。
エンドポイント ID のロールの自動割り当て
エンドポイント ID がシステム割り当て ID の場合、便宜のため、いくつかのロールがエンドポイント ID に割り当てられます。
ロール | 説明 | ロールの自動割り当ての条件 |
---|---|---|
AcrPull |
エンドポイント ID がワークスペースに関連付けられている Azure Container Registry (ACR) からイメージをプルすることを許可します。 | エンドポイント ID が、システム割り当て ID (SAI) です。 |
Storage Blob Data Reader |
エンドポイント ID がワークスペースの既定のデータストアから BLOB を読み取ることを許可します。 | エンドポイント ID が、システム割り当て ID (SAI) です。 |
AzureML Metrics Writer (preview) |
エンドポイント ID がワークスペースにメトリックを書き込むことを許可します。 | エンドポイント ID が、システム割り当て ID (SAI) です。 |
Azure Machine Learning Workspace Connection Secrets Reader 1 |
エンドポイント ID がワークスペース接続からシークレットを読み取ることを許可します。 | エンドポイント ID が、システム割り当て ID (SAI) です。 エンドポイントが、既定のシークレット ストアへのアクセスを強制するフラグを使用して作成されています。 エンドポイントを作成する "ユーザー ID" が、ワークスペース接続からシークレットを読み取る場合と同じアクセス許可を持っています。 2 |
1 Azure Machine Learning Workspace Connection Secrets Reader
ロールについて詳しくは、「ID にアクセス許可を割り当てる」をご覧ください。
2 エンドポイント ID が SAI であっても、強制フラグが設定されていない場合、またはユーザー ID にアクセス許可がない場合は、このロールの自動割り当ては行われません。 詳しくは、シークレットの挿入を使ってオンライン エンドポイントをデプロイする方法に関する記事をご覧ください。
エンドポイント ID がユーザー割り当て ID の場合、ロールの自動割り当ては行われません。 この場合は、必要に応じて、ユーザーがエンドポイント ID にロールを手動で割り当てる必要があります。
認可のアクセス許可とスコープの選択
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 の読み取りを許可するには、アクセス許可データ アクション
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
を含む組み込みのロールStorage Blob Data Reader
の使用を検討してください。
コントロール プレーン操作のガイドラインの詳細については、「Azure Machine Learning へのアクセスを管理する」を参照してください。 ロールの定義、スコープ、ロールの割り当ての詳細については、「Azure RBAC」を参照してください。 割り当てられたロールのスコープについては、「Azure RBAC のスコープについて」を参照してください。