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

このページでは、ユーザーのユーザー認証情報を使用して 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 リソースをスコープとする、Google が管理するグローバルな OAuth クライアントを使用してユーザー認証情報のアクセスを管理します。ユーザーは、各 Vertex AI Workbench インスタンスで OAuth クライアントが自身の認証情報を管理することに同意する必要があります。これはインスタンスごとに 1 回、 Google Cloud コンソールで [JupyterLab を開く] ボタンをクリックしたときに開くダイアログで行います。

Vertex AI Workbench インスタンスの作成に使用されるサービス アカウントは、次のサービス エージェントです。

service-PROJECT_NUMBER@gcp-sa-notebooks-vm.iam.gserviceaccount.com

このサービス エージェントは、ログのエクスポートなどの重要なサービスに対する限定的な権限を提供します。エンドユーザー認証情報機能が有効になっている場合は別のサービス アカウントを指定できません。

エンドユーザー認証情報が有効になっているインスタンスの VM リソースには、この機能が有効になっていることを示す notebooks-managed-euc: true Compute Engine ラベルと euc-enabled: true メタデータキーが付加されます。

制限事項

プロジェクトを計画する際は、次の制限事項を考慮してください。

  • Vertex AI Workbench は、Google が管理するグローバルな OAuth クライアントを使用してユーザー認証情報のアクセスを管理します。組織できめ細かい制御を有効にしたり、この OAuth クライアントにアクセスしたり、ロギングを使用して OAuth クライアントの使用状況を確認したりすることはできません。

  • 管理対象のユーザー認証情報を使用して Vertex AI Workbench インスタンスのセキュリティを保護するために、ユーザーは次の操作を行えません

    • SSH を使用してインスタンスにアクセスする。
    • Vertex AI Workbench の起動後スクリプトまたは Compute Engine 起動スクリプトを実行します。
    • VM の詳細ページにアクセスする。
    • Google が作成したものではないイメージを使用する。
  • OAuth クライアントでサポートされているのは Google が管理する OAuth 認証情報のみであるため、サードパーティの認証情報の使用はサポートされていません。

始める前に

  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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Notebooks API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Notebooks API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. 必要なロール

    Vertex AI Workbench インスタンスの作成に必要な権限を取得するには、プロジェクトに対するノートブック実行者roles/notebooks.runner)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

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

    Google Cloud コンソールを使用して Vertex AI Workbench インスタンスを作成するには、次の操作を行います。

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

      [インスタンス] に移動

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

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

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

      • 名前: 新しいインスタンスの名前を入力します。名前の先頭は英字で、それに続く最大 62 文字の英小文字、数字、ハイフン(-)で構成します。末尾は英字または数字にしてください。
      • リージョンゾーン: 新しいインスタンスのリージョンとゾーンを選択します。最適なネットワーク パフォーマンスを得るには、地理的に最も近いリージョンを選択してください。利用可能な Vertex AI Workbench のロケーションをご確認ください。
    5. [IAM とセキュリティ] セクションで、[シングル ユーザー] を選択します。

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

    7. [管理対象のエンドユーザーの認証情報を有効にする] を選択します。

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

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

    9. ユーザーは、各 Vertex AI Workbench インスタンスで OAuth クライアントが自身の認証情報を管理することに同意する必要があります。これはインスタンスごとに 1 回行います。同意するには、[JupyterLab を開く] をクリックし、表示されたダイアログに入力します。

      同意せずにインスタンスにアクセスしようとすると、JupyterLab は、Google Cloud コンソールから JupyterLab を開いて認証するメッセージを表示します。

    10. エンドユーザーの認証情報が JupyterLab で使用可能であることを確認するには、JupyterLab でターミナルを開いて次のコマンドを入力します。

      gcloud auth list

    ユーザー認証情報を使用してインスタンスを認証する

    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