次の方法で共有


データ管理

データ アクセスを管理する方法と、Azure Machine Learning で認証を行う方法について説明します。

適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)

重要

この記事は、Azure Machine Learning ソリューションに必要なインフラストラクチャを作成する Azure 管理者を対象としています。

資格情報ベースのデータ認証

一般に、資格情報ベースのデータ認証には次のチェックが含まれます。

  • 資格情報ベースのデータストアのデータにアクセスしているユーザーに、Microsoft.MachineLearningServices/workspaces/datastores/listsecrets/action を含むロールベースのアクセス制御 (RBAC) でロールが割り当てられていることのチェック

    • このアクセス許可は、ユーザーに代わってデータストアから資格情報を取得するために必要です。

    • このアクセス許可が既に含まれている組み込みロール:

    • "どの" 特定のユーザーがデータへのアクセスを希望しているかを把握する必要があります。 特定のユーザーは、ユーザー ID を持つ実際のユーザーにすることができます。 コンピューティング マネージド ID (MSI) を持つコンピューターにすることもできます。 詳細については、「シナリオと認証オプション」をセクションを参照して、追加のアクセス許可が必要な ID を確認してください。

  • 保存されている資格情報 (サービス プリンシパル、アカウント キー、または Shared Access Signature トークン) はデータ リソースにアクセスできますか?

ID ベースのデータ認証

一般に、ID ベースのデータ認証には次のチェックが含まれます。

  • リソースにアクセスする必要があるのはどのユーザーですか?
    • データにアクセスする際のコンテキストに応じて、さまざまな種類の認証を使用できます。 例:
      • ユーザー ID
      • コンピューティング マネージド ID
      • ワークスペースのマネージド ID
    • データセットの Generate Profile オプションを含むジョブは、"サブスクリプション" のコンピューティング リソースで実行され、その場所からデータにアクセスします。 コンピューティング マネージド ID には、ジョブを送信したユーザーの ID ではなく、ストレージ リソースにアクセスするためのアクセス許可が必要です。
    • ユーザー ID に基づく認証では、''どの'' 特定のユーザーがストレージ リソースにアクセスしようとしたかを把握する必要があります。 "ユーザー" 認証の詳細については、「Azure Machine Learning の認証」を参照してください。 サービス レベルの認証の詳細については、「Azure Machine Learning とその他のサービス間の認証」を参照してください。
  • このユーザーはリソースの読み取りアクセス許可を持っていますか?
  • このユーザーはリソースの書き込みアクセス許可を持っていますか?

認証に関するその他の一般的なチェック

  • 具体的に何がリソースにアクセスしますか?
    • ユーザー: クライアントの IP アドレスは、仮想ネットワーク/サブネットの範囲内にありますか?
    • ワークスペース: ワークスペースはパブリックですか、それとも仮想ネットワーク/サブネットにプライベート エンドポイントがありますか?
    • ストレージ: ストレージでパブリック アクセスが許可されていますか、それともサービス エンドポイントまたはプライベート エンドポイントを通じてアクセスが制限されていますか?
  • 計画されている操作は何ですか?
    • Azure Machine Learning による以下の処理
      • 作成
      • 読み取り
      • 更新プログラム
      • 削除。データ ストア/データセットに対する CRUD 操作。
    • Azure Machine Learning スタジオのデータ資産に対するアーカイブ操作には、この RBAC 操作が必要です: Microsoft.MachineLearningServices/workspaces/datasets/registered/delete
    • データ アクセス呼び出し (プレビューやスキーマなど) では、基になるストレージにアクセスするため、追加のアクセス許可が必要となります。
  • この操作が実行されるのは、Azure サブスクリプションのコンピューティング リソース内ですか、それとも Microsoft サブスクリプションでホストされているリソース内ですか?
    • データセットやデータストア サービスに対するすべての呼び出し ("Generate Profile" オプションを除く) では、"Microsoft サブスクリプション" でホストされたリソースを使用して操作が実行されます。
    • データセットの Generate Profile オプションを含むジョブは、"サブスクリプション" のコンピューティング リソースで実行され、その場所からデータにアクセスします。 コンピューティング ID には、ジョブを送信したユーザーの ID ではなく、ストレージ リソースへのアクセス許可が必要です。

この図は、データ アクセス呼び出しの大まかな流れを示しています。 ここでは、ユーザーがコンピューティング リソースを使用せずに、Machine Learning ワークスペースを介してデータ アクセス呼び出しを行おうとします。

データにアクセスする際のロジック フローを示す図。

シナリオと認証オプション

この表に、特定のシナリオで使用する ID を一覧表示します。

構成 SDK ローカル/ノートブック仮想マシン ジョブ データセットのプレビュー データストアの参照
資格情報 + ワークスペース MSI 資格情報 資格情報 ワークスペース MSI 資格情報 (アカウント キーと Shared Access Signature トークンのみ)
資格情報なし + ワークスペース MSI コンピューティング MSI/ユーザー ID コンピューティング MSI/ユーザー ID ワークスペース MSI ユーザー ID
資格情報 + ワークスペース MSI なし 資格情報 資格情報 資格情報 (プライベート ネットワークでのデータセット プレビューではサポートされていません) 資格情報 (アカウント キーと Shared Access Signature トークンのみ)
資格情報なし + ワークスペース MSI なし コンピューティング MSI/ユーザー ID コンピューティング MSI/ユーザー ID ユーザー ID ユーザー ID

SDK V1 の場合、ジョブ内のデータ認証では常にコンピューティング MSI が使用されます。 SDK V2 の場合、ジョブ内のデータ認証はジョブ設定によって異なります。 そのジョブ設定に基づいて、ユーザー ID またはコンピューティング MSI になります。

ヒント

Machine Learning の外部から (たとえば、Azure Storage Explorer を使用して) データにアクセスする場合、そのアクセスが "ユーザー" ID に依存している可能性があります。 具体的な情報については、使用する予定のツールまたはサービスのドキュメントを確認してください。 Machine Learning とデータの連携の詳細については、「Azure Machine Learning と他のサービスの間で認証を設定する」を参照してください。

仮想ネットワーク固有の要件

この情報は、仮想ネットワークの背後にあるデータにアクセスするために、Machine Learning ワークスペースからデータ認証を設定するのに役立ちます。

Machine Learning ワークスペースのマネージド ID にストレージ アカウントのアクセス許可を追加する

スタジオからストレージ アカウントを使用する場合は、データセット プレビューを表示するには、データストア設定で [Azure Machine Learning スタジオでのデータのプレビューおよびプロファイルにワークスペース マネージド ID を使用する] を有効にする必要があります。 次に、これらのストレージ アカウントの Azure RBAC ロールをワークスペース マネージド ID に追加します。

  • BLOB データ閲覧者
  • ストレージ アカウントでプライベート エンドポイントを使用して仮想ネットワークに接続する場合は、ストレージ アカウントのプライベート エンドポイントの閲覧者ロールをマネージド ID に付与する必要があります。

詳細については、「Azure 仮想ネットワークで Azure Machine Learning スタジオを使用する」を参照してください。

こちらのセクションでは、仮想ネットワーク内のワークスペースでストレージ アカウントを使用する場合の制限事項について説明します。

ストレージ アカウントとのセキュリティで保護された通信

Machine Learning とストレージ アカウントの間の通信をセキュリティで保護するには、信頼された Azure サービスへのアクセスを許可するようにストレージを構成します。

Azure Storage ファイアウォール

仮想ネットワークの背後にあるストレージ アカウントの場合、通常はストレージ ファイアウォールを使用することで、クライアントがインターネット経由で直接接続することを許可できます。 ただし、スタジオを使用する場合、クライアントはストレージ アカウントに接続されません。 要求を行う Machine Learning service がストレージ アカウントに接続されます。 このサービスの IP アドレスは文書化されておらず、頻繁に変更されます。 ストレージ ファイアウォールを有効にしても、スタジオから仮想ネットワーク構成内のストレージ アカウントにアクセスできません。

Azure Storage エンドポイントの種類

ワークスペースでプライベート エンドポイントが使用され、ストレージ アカウントも仮想ネットワーク内にある場合、スタジオを使用するときに以下の追加の検証要件が発生します。

  • ストレージ アカウントで "サービス エンドポイント" を使用する場合は、ワークスペースのプライベート エンドポイントとストレージのサービス エンドポイントが仮想ネットワークの同じサブネットに配置されている必要があります。
  • ストレージ アカウントで "プライベート エンドポイント" を使用する場合は、ワークスペースのプライベート エンドポイントとストレージのプライベート エンドポイントが同じ仮想ネットワークに配置されている必要があります。 この場合、サブネットは違っていても構いません。

Azure Data Lake Storage Gen1

Azure Data Lake Storage Gen1 をデータストアとして使用する場合は、POSIX スタイルのアクセス制御リストのみを使用できます。 他のセキュリティ プリンシパルと同様に、ワークスペースのマネージド ID にリソースへのアクセス権を割り当てることができます。 詳細については、「Azure Data Lake Storage Gen1 のアクセス制御」を参照してください。

Azure Data Lake Storage Gen2

Azure Data Lake Storage Gen2 をデータストアとして使用する場合、仮想ネットワーク内のデータ アクセスの制御には、Azure RBAC と POSIX スタイルのアクセス制御リスト (ACL) の両方を使用できます。

  • Azure RBAC を使用する場合: 「データストア: Azure Storage アカウント」で説明されている手順に従います。 Data Lake Storage Gen2 は Azure Storage をベースにしているため、Azure RBAC を使用する手順は同じです。
  • ACL を使用する場合: 他のセキュリティ プリンシパルと同様に、ワークスペース マネージド ID にアクセス権を割り当てることができます。 詳細については、「ファイルとディレクトリのアクセス制御リスト」を参照してください。

次のステップ

ネットワークでスタジオを有効にする方法については、「Azure 仮想ネットワークで Azure Machine Learning スタジオを使用する」を参照してください。