ユーザー認証情報によるアクセス権を持つインスタンスを作成する

このページでは、ユーザー認証情報を使用して Google Cloud サービスと API にアクセスする Vertex AI Workbench インスタンスを作成する方法について説明します。

ユーザー認証情報は、Google アカウントに関連付けられている認証情報です。ユーザー認証情報によって、Google アカウントがアクセスできる Google Cloud サービスと API が決まります。

デフォルトでは、Vertex AI Workbench インスタンスでコードを実行すると、インスタンスはインスタンスのサービス アカウントに関連付けられた認証情報を使用して Google Cloud サービスと API にアクセスできます。つまり、インスタンスにはサービス アカウントと同じ Google Cloud へのアクセス権が付与されます。

このページでは、ユーザー認証情報と同じように Google Cloud にアクセスできるようにインスタンスを作成して構成する方法について説明します。

概要

Vertex AI Workbench はユーザー認証情報によるアクセスを直接サポートしていませんが、Google Cloud サービスと API へのユーザー認証情報ベースのアクセスを許可するようにインスタンスを構成することはできます。

このページでは、次の手順でユーザー認証情報ベースのインスタンスを構成して認証する方法について説明します。

  1. 権限を制限したサービス アカウントを準備する。このサービス アカウントには、インスタンスの機能に必要な特定のアクセス権を除き、Google Cloud にアクセスする権限はありません。

  2. 次の仕様でインスタンスを作成します。

    • シングル ユーザー アクセス。これにより、JupyterLab へのアクセスが指定したユーザーのみに制限されます。

    • SSH アクセスが無効になっている。インスタンスへの SSH アクセスは、デフォルトで OS Login で管理されます。SSH アクセスをオフにすると、基盤となる Compute Engine VM への SSH アクセス権を持つユーザーからのアクセスを防ぐことができます。

    • 権限が制限されたサービス アカウントが所有している。デフォルトでは、新しいインスタンスはサービス アカウントによって所有され、サービス アカウントがアクセスできるすべての Google Cloud サービスと API にアクセスできます。権限が制限されたサービス アカウントを指定すると、Google Cloud サービスと API への予期しないアクセスを防ぐことができます。これにより、ユーザー認証情報で制御されるアクセスを設定できます。

  3. ユーザー認証情報を使用してインスタンスを認証する。インスタンスの実行後に、アプリケーションのデフォルト認証情報(ADC)にユーザー認証情報を提供します。ADC は、Google Cloud サービスと API に対するユーザー認証情報を認証します。これにより、Vertex AI Workbench インスタンスにユーザー認証情報と同じ Google Cloud へのアクセス権が付与されます。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Notebooks API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Notebooks API.

    Enable the API

必要なロール

ユーザー アカウントが Vertex AI Workbench インスタンスを作成するのに必要な権限を持つようにするために、プロジェクトに対する Notebooks ランナーroles/notebooks.runner)の IAM ロールをユーザー アカウントに付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をユーザー アカウントに付与することもできます。

サービス アカウントを準備する

Vertex AI Workbench インスタンスでは、JupyterLab サーバーをホストする Compute Engine VM インスタンスを作成するためにサービス アカウントが必要です。このサービス アカウントは、必要なロギング アクティビティも管理します。

次の権限のみを持つサービス アカウントを用意する必要があります。

  • logging.logEntries.create
  • logging.logEntries.route
  • monitoring.metricDescriptors.create
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.monitoredResourceDescriptors.get
  • monitoring.monitoredResourceDescriptors.list
  • monitoring.timeSeries.create

サービス アカウントを作成するには、サービス アカウントを作成するをご覧ください。

既存のサービス アカウントを変更するには、サービス アカウントを一覧表示して編集するをご覧ください。

単一ユーザー インスタンスを作成する

Vertex AI Workbench インスタンスは、Google Cloud コンソールまたは Google Cloud CLI を使用して作成できます。

コンソール

Vertex AI Workbench インスタンスを作成するには、次の操作を行います。

  1. Google Cloud コンソールで、[インスタンス] ページに移動します。

    [インスタンス] に移動

  2. [新規作成] をクリックします。

  3. [新しいインスタンス] ダイアログで、[詳細オプション] をクリックします。

  4. [インスタンスを作成] ダイアログの [詳細] セクションで、新しいインスタンスについて次の情報を入力します。

    • ノートブック名: 新しいインスタンスの名前を入力します。 名前は先頭を小文字にして、その後に 62 文字以下の小文字、数字、ハイフン(-)で構成します。末尾をハイフンにすることはできません。
    • リージョンゾーン: 新しいインスタンスのリージョンとゾーンを選択します。最適なネットワーク パフォーマンスを得るには、地理的に最も近いリージョンを選択してください。利用可能な Vertex AI Workbench のロケーションをご確認ください。
  5. SSH アクセスをオフにするには:

    1. [環境] セクションの [メタデータ] で、 [メタデータを追加] をクリックします。

    2. [Key 1] に「disable-ssh」と入力します。

    3. [値 1] に「true」と入力します。

  6. [IAM とセキュリティ] セクションで [シングル ユーザー] を選択し、[ユーザーのメール] フィールドに、アクセス権を付与するユーザー アカウントを入力します。指定したユーザーがインスタンスの作成者でない場合は、指定したユーザーにインスタンスのサービス アカウントに対するサービス アカウント ユーザーのロールroles/iam.serviceAccountUser)を付与する必要があります。

  7. [デフォルトの Compute Engine サービス アカウントを使用する] をオフにして、このガイドの前半で準備したサービス アカウントのメールアドレスを入力します。サービス アカウントをまだ準備していない場合は、サービス アカウントを準備するをご覧ください。

  8. インスタンス作成ダイアログの残りの部分に入力して、[作成] をクリックします。

    Vertex AI Workbench がインスタンスを作成し、自動的に起動します。インスタンスを使用する準備が整うと、Vertex AI Workbench で [JupyterLab を開く] が有効になります。

gcloud

後述のコマンドデータを使用する前に、次のように置き換えます。

  • INSTANCE_NAME: Vertex AI Workbench インスタンスの名前。先頭は英字、その後は 62 文字以下の小文字、数字、ハイフン(-)でなければならず、末尾をハイフンにすることはできません
  • PROJECT_ID: プロジェクト ID
  • LOCATION: インスタンスを配置するゾーン
  • VM_IMAGE_PROJECT: VM イメージが属する Google Cloud プロジェクトの ID(形式は projects/IMAGE_PROJECT_ID
  • VM_IMAGE_NAME: イメージの完全な名前。特定のバージョンのイメージ名を確認するには、特定のバージョンを検索するをご覧ください
  • MACHINE_TYPE: インスタンスの VM のマシンタイプ
  • METADATA: このインスタンスに適用するカスタム メタデータ。たとえば、SSH を無効にするには、disable-ssh メタデータタグを "--metadata=disable-ssh=true" の形式で使用します。
  • SERVICE_ACCOUNT: インスタンスに使用するサービス アカウントのメールアドレス
  • OWNER: インスタンスにアクセスできる単一ユーザーのアカウント メールアドレス。1 人のユーザーのみがサポートされます。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud workbench instances create INSTANCE_NAME \
    --project=PROJECT_ID \
    --location=LOCATION \
    --vm-image-project=VM_IMAGE_PROJECT \
    --vm-image-name=VM_IMAGE_NAME \
    --machine-type=MACHINE_TYPE \
    --metadata=METADATA \
    --service-account-email=SERVICE_ACCOUNT
    --instance-owners=OWNER

Windows(PowerShell)

gcloud workbench instances create INSTANCE_NAME `
    --project=PROJECT_ID `
    --location=LOCATION `
    --vm-image-project=VM_IMAGE_PROJECT `
    --vm-image-name=VM_IMAGE_NAME `
    --machine-type=MACHINE_TYPE `
    --metadata=METADATA `
    --service-account-email=SERVICE_ACCOUNT
    --instance-owners=OWNER

Windows(cmd.exe)

gcloud workbench instances create INSTANCE_NAME ^
    --project=PROJECT_ID ^
    --location=LOCATION ^
    --vm-image-project=VM_IMAGE_PROJECT ^
    --vm-image-name=VM_IMAGE_NAME ^
    --machine-type=MACHINE_TYPE ^
    --metadata=METADATA ^
    --service-account-email=SERVICE_ACCOUNT
    --instance-owners=OWNER

コマンドラインからインスタンスを作成するコマンドの詳細については、gcloud CLI のドキュメントをご覧ください。

Vertex AI Workbench がインスタンスを作成し、自動的に起動します。インスタンスを使用する準備が整うと、Vertex AI Workbench で Google Cloud コンソールの [JupyterLab を開く] リンクが有効になります。

ユーザー認証情報でインスタンスを認証する

Vertex AI Workbench は、アプリケーションのデフォルト認証情報(ADC)を使用して、Google Cloud サービスと API に対するユーザー認証情報を認証できます。このセクションでは、ADC にユーザー認証情報を提供する方法について説明します。

認証手順は、Google アカウントとサードパーティの認証情報のどちらを使用しているかによって異なります。

Google アカウント

インスタンスで JupyterLab にアクセスできるようになったら、次の操作を行います。

  1. Google Cloud コンソールで、[インスタンス] ページに移動します。

    [インスタンス] に移動

  2. インスタンス名の横にある [JupyterLab を開く] をクリックします。

  3. JupyterLab で、[File] > [New] > [Terminal] を選択します。

  4. ターミナル ウィンドウで、次のコマンドを実行します。

    gcloud auth login
  5. Y」と入力します。

  6. 手順に沿って確認コードをコピーし、ターミナルに入力します。

サードパーティの認証情報

サードパーティの認証情報を使用してインスタンスを作成した場合は、JupyterLab プロキシが使用可能になったら、次の操作を行います。

  1. 連携 JupyterLab プロキシを使用して JupyterLab を開きます。

  2. JupyterLab で、[File] > [New] > [Terminal] を選択します。

  3. ヘッドレス ログインを使用して Workforce Identity 連携の認証情報ファイルを作成します。

  4. ターミナル ウィンドウで、次のコマンドを実行します。

    gcloud auth login --cred-file="CREDENTIAL_FILE"

    CREDENTIAL_FILE は、作成した認証情報ファイルのパスと名前に置き換えます。

  5. 手順に沿って、サードパーティ認証ポータルで認証を行います。

  6. 次のコマンドを使用して、インスタンスから認証情報にアクセスできることを確認します。

    gcloud auth list

制限事項

  • マネージド ノートブック インスタンスを Vertex AI Workbench インスタンスに移行しても、元のインスタンスのユーザー認証情報ベースのアクセス権は保持されません。このガイドの説明に沿って、移行したインスタンスを構成し、ユーザー認証情報を認証する必要があります。