npm の認証の設定

サードパーティ アプリケーションを使用してリポジトリに接続する場合は、Artifact Registry で認証する必要があります。

Cloud Build や Google Kubernetes Engine などの Google Cloud サービスとの統合は、認証を必要としません。ただし、これらのサービスに代わって対応する ID に、リポジトリにアクセスするための権限が付与されていることを確認する必要があります。

パッケージ管理はアルファ版です。これはアルファ版のユーザーにのみご利用いただけます。コンテナ管理で利用できる機能がすべて含まれているとは限りません。アルファ版のお申し込みには、登録フォームをご利用ください。

始める前に

  1. ターゲット リポジトリが存在しない場合は、新しいリポジトリを作成します
  2. Windows からリポジトリに接続する場合は、PowerShell をインストールします。
  3. (省略可)Windows から npm リポジトリに接続する場合は、gcloud コマンドのデフォルトを構成します。
  4. アプリケーションに代わって動作するサービス アカウントを作成します。
  5. npm を初めて使用される場合は、概要をお読みいただき、スコープ設定されたパッケージと認証設定の構成ファイルを確認してください。

概要

Artifact Registry では、次の認証方法をサポートしています。

認証ヘルパーの使用
このオプションは非常に柔軟性に優れています。このヘルパーを npm 構成に含めると、環境内でサービス アカウントの認証情報が検索されます。
認証情報としてサービス アカウント キーを指定する
このオプションは、アプリケーションがアプリケーションのデフォルト認証情報に対応していないものの、ユーザー名とパスワードによる認証をサポートしている場合に使用します。

認証情報ヘルパーによる認証

npm 認証情報ヘルパーを使用すると、認証情報が Node.js プロジェクトに保存されません。代わりに Artifact Registry では次の順序で認証情報を検索します。

  1. アプリケーションのデフォルト認証情報(ADC): 次の順序で認証情報を検索する戦略です。

    1. GOOGLE_APPLICATION_CREDENTIALS 環境変数で定義された認証情報。

    2. Compute Engine、Google Kubernetes Engine、Cloud Run、App Engine、Cloud Functions のデフォルト サービス アカウントによって指定される認証情報。

  2. コマンド gcloud auth application-default login から取得するユーザー認証情報など、Cloud SDK によって指定される認証情報。

GOOGLE_APPLICATION_CREDENTIALS 変数を、認証ヘルパーで使用するサービス アカウント キーに設定します。ADC でデフォルトのサービス アカウントの認証情報を使用する場合、リポジトリへのアクセスはアカウントに付与されている権限によって異なります。

サービス アカウントを作成し、環境変数を使用して認証を設定する手順は次のとおりです。

  1. アプリケーションに代わって動作するサービス アカウントを作成するか、CI/CD の自動化に使用する既存のサービス アカウントを選択します。

  2. 適切な Artifact Registry のロールをサービス アカウントに付与して、リポジトリへのアクセスを許可します。

  3. サービス アカウント キー ファイルの場所を変数 GOOGLE_APPLICATION_CREDENTIALS に割り当てて、Artifact Registry の認証情報ヘルパーがリポジトリとの接続時にキーを取得できるようにします。

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    KEY-FILE はサービス アカウント キーファイルのパスです。

  4. 次のコマンドを実行して、Node.js プロジェクトに追加するリポジトリ構成を出力します。設定を npm のグローバルな構成ファイルまたはユーザーに固有の構成ファイルに保存する場合は、スコープを含める必要があります。

    gcloud artifacts print-settings npm [--project=PROJECT] \
    [--repository=REPOSITORY] [--location=LOCATION]
    --scope=@SCOPE-NAME
    

    ここで

    • PROJECT は、プロジェクト ID です。 このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
    • REPOSITORY はリポジトリの ID です。デフォルトの Artifact Registry リポジトリを構成した場合は、このフラグがコマンドから省略されている場合に使用されます。
    • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
    • SCOPE-NAME は、リポジトリに関連付ける npm スコープの名前です。

      このスコープは、このリポジトリを使用してパッケージを公開またはインストールするために指定します。スコープ設定されていないパッケージは、デフォルトの npm レジストリに関連付けられます。

      スコープを指定しない場合は、返された構成によってリポジトリがデフォルトの npm レジストリとして設定されます。

  5. 返された構成設定をプロジェクトの .npmrc 構成ファイル(package.json と同じディレクトリに存在)に追加します。

  6. 接続できる他の npm リポジトリがある場合は、前述の手順を繰り返して設定を取得し、.npmrc ファイルに追加します。

  7. リポジトリに接続する場合は、接続後 60 分以内に認証用のアクセス トークンを更新します。google-artifactregistry-auth は、Artifact Registry リポジトリの認証情報を更新するクライアント ライブラリです。

    認証情報を更新するには、次のいずれかのオプションを使用します。

    • npx を直接使用してアクセス トークンを更新します。npm 5.2.0 以降を使用している場合は、npm に付属しています。

      1. 公開 npm レジストリに接続するための認証情報が、ユーザーの npm 構成ファイル ~/.npmrc に含まれていることを確認します。

      2. Node.js プロジェクトの上にあるフォルダで次のコマンドを実行します。

      npx google-artifactregistry-auth PROJECT-NPMRC
      

      PROJECT-NPMRC はプロジェクト ディレクトリの .npmrc ファイルのパスです。

      このコマンドをプロジェクト ディレクトリの外部で実行して、npx~/.npmrc の公開 npm レジストリ認証情報を使用して google-artifactregistry-auth をダウンロードできるようにします。

    • プロジェクトの package.json ファイルにスクリプトを追加します。

      "scripts": {
        "artifactregistry-login": "npx google-artifactregistry-auth"
      }
      

      スクリプトを実行します。

      npm run artifactregistry-login PROJECT-NPMRC
      

      PROJECT-NPMRC はプロジェクト ディレクトリの .npmrc ファイルのパスです。

    • 5.2.0 より古いバージョンの npm の場合は、次の手順を行います。

      1. 次のコマンドを実行します。
      npm install google-artifactregistry-auth --save-dev --registry https://registry.npmjs.org/
      
      1. 認証スクリプトに追加します。
      "scripts": {
          "artifactregistry-login": "./node_modules/.bin/artifactregistry-auth",
      }
      

      スクリプトを実行します。

      npm run artifactregistry-login PROJECT-NPMRC
      

      PROJECT-NPMRC はプロジェクト ディレクトリの .npmrc ファイルのパスです。

print-settings コマンドでスコープを指定しなかった場合は、次のコマンドを実行して、Artifact Registry リポジトリにスコープを関連付けることができます。

npm config set @SCOPE_NAME:registry https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY/

パスワード認証の構成

Node.js アプリケーションで、指定されたユーザー名とパスワードによる認証が必要な場合は、この方法を使用します。

サービス アカウント キーは長期間有効な認証情報です。リポジトリへのアクセスを制限するには、次のガイドラインに従います。

  • リポジトリの操作用に専用のサービス アカウントを使用することを検討してください。
  • サービス アカウントに必要な最小限の Artifact Registry のロールを付与します。たとえば、アーティファクトのみをダウンロードするサービス アカウントに Artifact Registry の読み取り権を割り当てます。
  • 組織内のグループが特定のリポジトリに対する異なるレベルのアクセス権を必要とする場合は、プロジェクト レベルではなくリポジトリ レベルでアクセス権を付与します。
  • 認証情報管理のおすすめの方法に従います。

サービス アカウントを作成して認証を構成するには:

  1. アプリケーションに代わって動作するサービス アカウントを作成するか、自動化に使用する既存のサービス アカウントを選択します。

    Artifact Registry で認証を設定するには、サービス アカウントのキーファイルの場所が必要です。既存のアカウントの場合は、[サービス アカウント] ページで鍵を表示し、新しい鍵を作成できます。

    [サービス アカウント] ページに移動

  2. 適切な Artifact Registry のロールをサービス アカウントに付与して、リポジトリへのアクセスを許可します。

  3. 現在の Cloud SDK セッションでサービス アカウントを有効にする場合は、次のコマンドを実行します。

    gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
    

    ここで

    • ACCOUNT はユーザーまたはサービス アカウントです。
    • KEY-FILE は、サービス アカウントの JSON キーファイルのパスです。
  4. 次のコマンドを実行して、Node.js プロジェクトに追加するリポジトリ構成を出力します。設定を npm のグローバルな構成ファイルまたはユーザーに固有の構成ファイルに保存する場合は、スコープを含める必要があります。

    gcloud artifacts print-settings npm [--project=PROJECT] \
    [--repository=REPOSITORY] [--location=LOCATION] --scope=@SCOPE-NAME --json-key=KEY-FILE
    

    ここで

    • PROJECT は、プロジェクト ID です。 このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
    • REPOSITORY はリポジトリの ID です。デフォルトの Artifact Registry リポジトリを構成した場合は、このフラグがコマンドから省略されている場合に使用されます。
    • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
    • SCOPE-NAME は、リポジトリに関連付ける npm スコープの名前です。

      このスコープは、このリポジトリを使用してパッケージを公開またはインストールするために指定します。スコープ設定されていないパッケージは、デフォルトの npm レジストリに関連付けられます。

      スコープを指定しない場合は、返された構成によってリポジトリがデフォルトの npm レジストリとして設定されます。

    • KEY-FILE は、サービス アカウントの JSON キーファイルのパスです。

  5. 返された構成設定をプロジェクトの .npmrc 構成ファイル(package.json と同じディレクトリに存在)に追加します。

  6. 接続できる他の npm リポジトリがある場合は、前述の手順を繰り返して設定を取得し、.npmrc ファイルに追加します。

次のステップ