チュートリアル: テンプレートを使用してセキュリティで保護されたワークスペースを作成する方法

テンプレートを使用すると、便利な方法で再現可能なサービスのデプロイを作成できます。 テンプレートでは、テンプレートを使用するときに提供する情報により、作成するものを定義します。 たとえば、Azure Machine Learning ワークスペースに一意の名前を指定します。

このチュートリアルでは、Microsoft Bicep および Hashicorp Terraform テンプレートを使用して、以下の Azure リソースを作成する方法について説明します。

  • Azure Virtual Network。 次のリソースは、この VNet の背後でセキュリティ保護されています。
    • Azure Machine Learning ワークスペース
      • Azure Machine Learning コンピューティング インスタンス
      • Azure Machine Learning コンピューティング クラスター
    • Azure Storage アカウント
    • Azure Key Vault
    • Azure Application Insights
    • Azure Container Registry
    • Azure Bastion ホスト
    • Azure Machine Learning 仮想マシン (Data Science Virtual Machine)
    • Bicep テンプレートでは、Azure Kubernetes Service クラスターと、そのクラスター用の別のリソース グループも作成されます。

ヒント

Microsoft では、この記事の手順ではなく、Azure Machine Learning のマネージド仮想ネットワークの使用をお勧めしています。 マネージド仮想ネットワークを使用すると、Azure Machine Learning はワークスペースとマネージド コンピューティングのネットワーク分離のジョブを処理します。 また、ワークスペースに必要なリソース (Azure Storage アカウントなど) のプライベート エンドポイントを追加することもできます。 詳細については、「ワークスペース マネージド ネットワーク分離」を参照してください。

前提条件

この記事の手順を実行する前に、Azure サブスクリプションが必要です。 Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。

また、Bash または Azure PowerShell のいずれかのコマンドラインも必要です。

ヒント

この記事を読むときは、各セクションのタブを使用して、Bicep またはTerraform テンプレートの使用に関する情報を表示するかどうかを選択します。

  1. コマンドライン ツールをインストールするには、Bicep の開発およびデプロイ環境のセットアップに関する記事を参照してください。

  2. この記事で使用されている Bicep テンプレートは、https://github.com/Azure/azure-quickstart-templates/blob/master/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure にあります。 次のコマンドを使用して、GitHub リポジトリを開発環境に複製します。

    ヒント

    開発環境に git コマンドがない場合は、https://git-scm.com/ からインストールできます。

    git clone https://github.com/Azure/azure-quickstart-templates
    cd azure-quickstart-templates/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure
    

テンプレートについて

Bicep テンプレートは、main.bicepmodules サブディレクトリ内の .bicep ファイルで構成されています。 次の表では、各ファイルの役割について説明します。

ファイル 説明
main.bicep パラメーターと変数。 modules サブディレクトリ内の他のモジュールにパラメーターと変数を渡します。
vnet.bicep Azure Virtual Network とサブネットを定義します。
nsg.bicep VNet のネットワーク セキュリティ グループの規則を定義します。
bastion.bicep Azure Bastion ホストとサブネットを定義します。 Azure Bastion を使用すると、Web ブラウザーを使用して VNet 内の VM に簡単にアクセスできます。
dsvmjumpbox.bicep Data Science Virtual Machine (DSVM) を定義します。 Azure Bastion は、Web ブラウザーからこの VM にアクセスするために使用されます。
storage.bicep 既定のストレージとしてワークスペースで使用される Azure Storage アカウントを定義します。
keyvault.bicep ワークスペースで使用される Azure Key Vault を定義します。
containerregistry.bicep ワークスペースで使用される Azure Container Registry を定義します。
applicationinsights.bicep ワークスペースで使用される Azure Application Insights を定義します。
machinelearningnetworking.bicep Azure Machine Learning ワークスペースのプライベート エンドポイントと DNS ゾーンを定義します。
Machinelearning.bicep Azure Machine Learning ワークスペースを定義します。
machinelearningcompute.bicep Azure Machine Learning コンピューティング クラスターおよびコンピューティング インスタンスを定義します。
privateaks.bicep Azure Kubernetes Services クラスター インスタンスを定義します。

重要

テンプレートの例では、Azure Machine Learning の最新の API バージョンが常に使用されているわけではありません。 テンプレートを使用する前に、最新の API バージョンを使用するように変更することをお勧めします。 Azure Machine Learning の最新の API バージョンについては、Azure Machine Learning REST API を参照してください。

各 Azure サービスには、独自の API バージョンのセットがあります。 特定のサービスの API の詳細については、Azure REST API リファレンスのサービス情報を確認してください。

API バージョンを更新するには、該当リソースの種類の Microsoft.MachineLearningServices/<resource> エントリを見つけて、それを最新バージョンに更新します。 次の例は、2022-05-01 の API バージョンを使用する Azure Machine Learning ワークスペースのエントリです。

resource machineLearning 'Microsoft.MachineLearningServices/workspaces@2022-05-01' = {

重要

このチュートリアルでは、DSVM と Azure Bastion は、セキュリティで保護されたワークスペースに簡単に接続する方法として使用されます。 運用環境では、Azure VPN ゲートウェイまたは Azure ExpressRoute を使用して、オンプレミス ネットワークから VNet 内のリソースに直接アクセスすることをお勧めします。

テンプレートを構成する

Bicep テンプレートを実行するには、main.bicep ファイルがある machine-learning-end-to-end-secure から次のコマンドを使用します。

  1. 新しい Azure リソース グループを作成するには、次のコマンドを使用します。 exampleRG をリソース グループ名に置き換え、eastus を使用する Azure リージョンに置き換えます。

    az group create --name exampleRG --location eastus
    
  2. テンプレートを実行するには、次のコマンドを使用します。 prefix を一意のプレフィックスに変更します。 このプレフィックスは、Azure Machine Learning に必要な Azure リソースの作成時に使用されます。 securepassword をジャンプ ボックスの安全なパスワードに変更します。 このパスワードはジャンプ ボックスのログイン アカウント用です (下の例の azureadmin)。

    ヒント

    prefix は 5 文字以下にする必要があります。 全部数字にすることと、文字 ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , < > / ? を使用することはできません。

    az deployment group create \
        --resource-group exampleRG \
        --template-file main.bicep \
        --parameters \
        prefix=prefix \
        dsvmJumpboxUsername=azureadmin \
        dsvmJumpboxPassword=securepassword
    

ワークスペースに接続する

テンプレートの処理が完了したら、次の手順を実行して DSVM に接続します。

  1. Azure portal から、テンプレートで使用した Azure リソース グループを選択します。 次に、テンプレートによって作成された Data Science Virtual Machine を選択します。 見つけられない場合は、[フィルター] セクションを使用して、[タイプ][仮想マシン] のフィルターを適用します。

    Screenshot of filtering and selecting the vm.

  2. 仮想マシンの [Overview](概要) セクションで [Connect](接続) を選択し、ドロップダウンから [Bastion] を選択します。

    Screenshot of selecting to connect using Bastion.

  3. 入力を求められたら、テンプレートの構成時に指定したユーザー名パスワードを入力し、[Connect](接続) を選択します。

    重要

    DSVM デスクトップに初めて接続すると、PowerShell ウィンドウが開き、スクリプトの実行が開始されます。 完了するまで待ったら、次の手順に進みます。

  4. DSVM デスクトップから、Microsoft Edge を起動し、アドレスとして https://ml.azure.com を入力します。 Azure サブスクリプションにサインインして、テンプレートで作成されたワークスペースを選択します。 ワークスペースのスタジオが表示されます。

トラブルシューティング

エラー: Windows のコンピューター名は、15 文字を超えること、すべて数字にすること、次の文字を含めることはできません

このエラーは、DSVM ジャンプ ボックスの名前が 15 文字を超えるか、文字 ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , < > / ? のいずれかが含まれる場合に発生します。

Bicep テンプレートの使用時、テンプレートに指定されているプレフィックス値を使用してジャンプ ボックスの名前が自動生成されます。 名前が 15 文字を超えることや名前に無効な文字が含まれることがないよう、5 文字以下のプレフィックスを使用し、文字 ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , < > / ? はプレフィックスに使用しないでください。

Terraform テンプレートを使用すると、ジャンプ ボックス名が dsvm_name パラメーターを利用して渡されます。 このエラーを回避するため、15 文字を超えず、文字 ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , < > / ? が含まれない名前を使用してください。

次のステップ

重要

この Data Science Virtual Machine (DSVM) とコンピューティング インスタンス リソースでは、実行されている 1 時間ごとに料金が請求されます。 余分な料金を回避するには、これらのリソースが使用されていないときに停止する必要があります。 詳細については、次の記事を参照してください。

セキュリティで保護されたワークスペースを引き続き DSVM から使用する方法を学習するには、「チュートリアル: 1 日でわかる Azure Machine Learning」を参照してください。

セキュリティで保護されたワークスペースの一般的な構成と入出力要件の詳細については、Azure Machine Learning のセキュリティで保護されたワークスペースのトラフィック フローに関する記事を参照してください。