データ管理

データ アクセスを管理する方法と、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) でロールが割り当てられていますか?

    • このアクセス許可は、ユーザーに代わってデータストアから資格情報を取得するために必要です。
    • このアクセス許可を既に含む組み込みのロールは、共同作成者、Azure AI 開発者、または Azure Machine Learning データ サイエンティストです。 または、カスタム ロールが適用されている場合は、このアクセス許可がそのカスタム ロールに追加されていることを確認する必要があります。
    • どの特定のユーザーがデータにアクセスしようとしているかを把握する必要があります。 これは、ユーザー ID を持つ実際のユーザー、またはコンピューティング マネージド ID (MSI) を持つコンピューターのいずれかです。 アクセス許可を追加する必要がある ID を識別するには、「シナリオと認証オプション」セクションを参照してください。
  • 保存されている資格情報 (サービス プリンシパル、アカウント キー、または Shared Access Signature トークン) はデータ リソースにアクセスできますか?

ID ベースのデータ認証

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

  • リソースにアクセスする必要があるのはどのユーザーですか?
    • データにアクセスする際のコンテキストに応じて、さまざまな種類の認証を使用できます。次に例を示します。
      • ユーザー ID
      • コンピューティング マネージド ID
      • ワークスペースのマネージド ID
    • データセットの Generate Profile オプションを含むジョブは、"サブスクリプション" のコンピューティング リソースで実行され、その場所からデータにアクセスします。 コンピューティング マネージド ID には、ジョブを送信したユーザーの ID ではなく、ストレージ リソースに対するアクセス許可が必要です。
    • ユーザー ID に基づく認証では、''どの'' 特定のユーザーがストレージ リソースにアクセスしようとしたかを把握する必要があります。 "ユーザー" 認証の詳細については、Azure Machine Learning での認証に関するページをご覧ください。 サービス レベルの認証の詳細については、Azure Machine Learning と他のサービス間の認証に関するページをご覧ください。
  • このユーザーには読み取りアクセス許可がありますか?
    • ユーザー ID またはコンピューティング マネージド ID には、そのストレージ リソースに必要なアクセス許可がありますか? アクセス許可は、Azure RBAC を使用して付与されます。
    • ストレージ アカウントの閲覧者は、ストレージ メタデータを読み取ります。
    • ストレージ BLOB データ閲覧者は、ストレージ コンテナーと BLOB を読み取ってリストします。
    • 詳細については、ストレージ用の Azure 組み込みロールに関する記事を参照してください。
  • このユーザーには書き込みアクセス許可がありますか?
    • ユーザー ID またはコンピューティング マネージド ID には、そのストレージ リソースに必要なアクセス許可がありますか? アクセス許可は、Azure RBAC を使用して付与されます。
    • ストレージ アカウントの閲覧者は、ストレージ メタデータを読み取ります。
    • ストレージ BLOB データ共同作成者は、Azure Storage コンテナーと BLOB の読み取り、書き込み、削除を行います。
    • 詳細については、ストレージ用の Azure 組み込みロールに関する記事を参照してください。

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

  • どこからアクセスしますか?
    • ユーザー: クライアントの 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 Studio を使用する」を参照してください。

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

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

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 スタジオを使用する」を参照してください。