Mengonfigurasi autentikasi ke Artifact Registry untuk npm

Anda harus mengautentikasi ke Artifact Registry saat menggunakan aplikasi pihak ketiga untuk terhubung ke repositori.

Anda tidak perlu mengonfigurasi autentikasi untuk lingkungan runtime Cloud Build atau Google Cloud seperti Google Kubernetes Engine dan Cloud Run, tetapi Anda harus memverifikasi bahwa izin yang diperlukan telah dikonfigurasi.

Sebelum memulai

  1. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  2. (Opsional) Konfigurasikan default untuk perintah gcloud CLI.
  3. Jika Anda terhubung ke repositori dari Windows, instal PowerShell.
  4. Buat akun layanan untuk bertindak atas nama aplikasi Anda.
  5. Jika Anda baru menggunakan npm, baca ringkasan untuk mempelajari paket dengan cakupan dan file konfigurasi untuk setelan autentikasi Anda.

Ringkasan

Artifact Registry mendukung metode autentikasi berikut.

Menggunakan helper kredensial
Opsi ini memberikan fleksibilitas paling besar. Saat Anda menyertakan helper dalam konfigurasi npm, Artifact Registry akan menelusuri kredensial akun layanan di lingkungan.
Menentukan kunci akun layanan sebagai kredensial
Gunakan opsi ini jika aplikasi tidak mendukung Kredensial Default Aplikasi, tetapi mendukung autentikasi dengan nama pengguna dan sandi.

Mengautentikasi dengan helper kredensial

google-artifactregistry-auth adalah library klien yang mendapatkan kredensial untuk repositori Artifact Registry.

Artifact Registry menelusuri kredensial dalam urutan berikut:

  1. Kredensial Default Aplikasi (ADC), strategi yang mencari kredensial dengan urutan sebagai berikut:

    1. Kredensial yang ditentukan dalam variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS.

    2. Kredensial yang disediakan akun layanan default untuk Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine, atau fungsi Cloud Run.

  2. Kredensial yang diberikan oleh Google Cloud CLI, termasuk kredensial pengguna dari perintah gcloud auth application-default login.

Variabel GOOGLE_APPLICATION_CREDENTIALS membuat akun untuk autentikasi menjadi eksplisit, sehingga mempermudah pemecahan masalah. Jika Anda tidak menggunakan variabel, pastikan akun yang mungkin digunakan ADC memiliki izin yang diperlukan. Misalnya, akun layanan default untuk VM Compute Engine, node Google Kubernetes Engine, dan revisi Cloud Run memiliki akses hanya baca ke repositori. Jika Anda ingin mengupload dari lingkungan ini menggunakan akun layanan default, Anda harus mengubah izin.

Untuk membuat akun layanan dan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS:

  1. Buat akun layanan untuk bertindak atas nama aplikasi Anda, atau pilih akun layanan yang ada yang digunakan untuk otomatisasi CI/CD Anda.

  2. Berikan peran Artifact Registry tertentu ke akun layanan untuk memberikan akses repositori.

  3. Tetapkan lokasi file kunci akun layanan ke variabel GOOGLE_APPLICATION_CREDENTIALS sehingga helper kredensial Artifact Registry dapat memperoleh kunci Anda saat terhubung dengan repositori.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    Dengan KEY-FILE adalah jalur ke file kunci akun layanan.

Untuk mengonfigurasi autentikasi:

  1. Jalankan perintah berikut untuk mencetak konfigurasi repositori:

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

    Dari mana

    • PROJECT adalah project ID. Jika flag ini dihilangkan, project saat ini atau default akan digunakan.
    • REPOSITORY adalah ID repositori. Jika Anda mengonfigurasi repositori Artifact Registry default, repositori tersebut akan digunakan jika flag ini dihilangkan dari perintah.
    • LOCATION adalah lokasi regional atau multi-regional untuk repositori.
    • SCOPE-NAME adalah nama cakupan npm yang akan dikaitkan dengan repositori.

      Menggunakan cakupan memastikan bahwa Anda selalu memublikasikan dan menginstal paket dari repositori yang benar.

      Paket tanpa cakupan dikaitkan dengan registry npm default Anda, biasanya registry publik npm. Jika Anda tidak menentukan cakupan, konfigurasi yang ditampilkan akan menetapkan repositori Artifact Registry sebagai registry default. Hal ini dapat menyebabkan masalah jika project Node.js Anda perlu menginstal paket dari registry npm publik dan repositori Artifact Registry Anda.

  2. Tambahkan setelan konfigurasi yang ditampilkan ke file konfigurasi .npmrc di project Node.js Anda. File ini biasanya berada di direktori yang sama dengan package.json.

    Pastikan Anda menyertakan setelan ini dalam project Node.js untuk paket yang Anda publikasikan serta project yang akan menginstal dependensi dari repositori npm Anda.

  3. Jika Anda memiliki repositori Node.js lain untuk dihubungkan, ulangi langkah-langkah sebelumnya untuk mendapatkan setelan dan menambahkannya ke file .npmrc yang sesuai.

  4. Jika Anda siap menghubungkan repositori, dapatkan token akses untuk autentikasi.

Setiap repositori paket Node.js Artifact Registry dikaitkan dengan endpoint registry https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY

Jika tidak menentukan cakupan dengan perintah print-settings, Anda dapat menjalankan perintah berikut untuk mengaitkan cakupan dengan repositori Artifact Registry.

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

Mendapatkan token akses

Token akses berlaku selama 60 menit. Buat token akses sesaat sebelum menjalankan perintah yang berinteraksi dengan repositori.

Untuk mendapatkan token, gunakan salah satu opsi berikut:

  • Gunakan perintah npx untuk memuat ulang token akses.

    1. Pastikan kredensial untuk terhubung ke registry npm publik ada dalam file konfigurasi npm pengguna Anda, ~/.npmrc.

    2. Jalankan perintah berikut di direktori project Node.js Anda.

      npx google-artifactregistry-auth
      

      Jika repositori Artifact Registry Anda ditetapkan sebagai registry global dan paket Anda tidak dicakup, gunakan perintah berikut agar perintah dapat mendownload helper kredensial dari registry npm publik, bukan repositori Artifact Registry Anda.

      npm_config_registry=https://registry.npmjs.org npx google-artifactregistry-auth
      
  • Tambahkan skrip ke file package.json dalam project Anda.

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

    Jalankan skrip di direktori project Node.js Anda.

    npm run artifactregistry-login
    

Artifact Registry membaca setelan repositori Artifact Registry dalam file .npmrc project Anda dan menggunakannya untuk menambahkan kredensial token ke file .npmrc pengguna Anda. Menyimpan token dalam file .npmrc pengguna akan mengisolasi kredensial Anda dari kode sumber dan sistem kontrol sumber Anda.

  • --repo-config adalah file .npmrc dengan setelan repositori Anda. Jika Anda tidak menentukan flag ini, lokasi default-nya adalah direktori saat ini.
  • --credential-config adalah jalur ke file .npmrc tempat Anda ingin menulis token akses. Default-nya adalah file .npmrc pengguna Anda.

Mengonfigurasi autentikasi sandi

Gunakan pendekatan ini jika aplikasi Node.js Anda memerlukan autentikasi dengan nama pengguna dan sandi yang ditentukan.

Kunci akun layanan adalah kredensial yang dapat digunakan untuk jangka waktu lama. Gunakan panduan berikut untuk membatasi akses ke repositori Anda:

  • Pertimbangkan untuk menggunakan akun layanan khusus untuk berinteraksi dengan repositori.
  • Berikan peran Artifact Registry minimum yang diperlukan oleh akun layanan. Misalnya, tetapkan Pembaca Artifact Registry ke akun layanan yang hanya mendownload artefak.
  • Jika grup di organisasi Anda memerlukan tingkat akses yang berbeda ke repositori tertentu, berikan akses di tingkat repositori, bukan tingkat project.
  • Ikuti praktik terbaik untuk mengelola kredensial.

Untuk membuat akun layanan dan mengonfigurasi autentikasi:

  1. Buat akun layanan untuk bertindak atas nama aplikasi Anda, atau pilih akun layanan yang ada yang Anda gunakan untuk otomatisasi.

    Anda memerlukan lokasi file kunci akun layanan untuk menyiapkan autentikasi dengan Artifact Registry. Untuk akun yang ada, Anda dapat melihat kunci dan membuat kunci baru di halaman Akun Layanan.

    Buka halaman Service Accounts

  2. Berikan peran Artifact Registry tertentu ke akun layanan untuk memberikan akses repositori.

  3. Jika Anda ingin mengaktifkan akun layanan dalam sesi gcloud CLI saat ini, jalankan perintah:

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

    Dari mana

    • ACCOUNT adalah akun pengguna atau akun layanan.
    • KEY-FILE adalah jalur ke file kunci JSON akun layanan.
  4. Jalankan perintah berikut untuk mencetak konfigurasi repositori:

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

    Dari mana

    • PROJECT adalah project ID. Jika flag ini dihilangkan, project saat ini atau default akan digunakan.
    • REPOSITORY adalah ID repositori. Jika Anda mengonfigurasi repositori Artifact Registry default, repositori tersebut akan digunakan jika flag ini dihilangkan dari perintah.
    • LOCATION adalah lokasi regional atau multi-regional untuk repositori.
    • SCOPE-NAME adalah nama cakupan npm yang akan dikaitkan dengan repositori.

      Menggunakan cakupan memastikan bahwa Anda selalu memublikasikan dan menginstal paket dari repositori yang benar.

      Paket tanpa cakupan dikaitkan dengan registry npm default Anda, biasanya registry publik npm. Jika Anda tidak menentukan cakupan, konfigurasi yang ditampilkan akan menetapkan repositori Artifact Registry sebagai registry default. Hal ini dapat menyebabkan masalah jika project Node.js Anda perlu menginstal paket dari registry npm publik dan repositori Artifact Registry Anda.

    • KEY-FILE adalah jalur ke file kunci JSON akun layanan.

  5. Tambahkan setelan konfigurasi yang ditampilkan ke file konfigurasi .npmrc di project Node.js Anda. File ini biasanya berada di direktori yang sama dengan package.json. Pastikan Anda menyertakan setelan ini dalam project Node.js untuk paket yang Anda publikasikan serta project yang akan menginstal dependensi dari repositori npm Anda.

  6. Jika Anda memiliki repositori Node.js lain untuk dihubungkan, ulangi langkah-langkah sebelumnya untuk mendapatkan setelan dan menambahkannya ke file .npmrc.

Langkah selanjutnya