Mengonfigurasi autentikasi ke Artifact Registry untuk npm

Anda harus melakukan autentikasi 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 memastikan bahwa izin yang diperlukan telah dikonfigurasi.

Sebelum memulai

  1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

    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 mengenal npm, baca ringkasan untuk mempelajari paket cakupan dan file konfigurasi untuk setelan autentikasi Anda.

Ringkasan

Artifact Registry mendukung metode autentikasi berikut.

Menggunakan helper kredensial
Opsi ini paling fleksibel. Jika Anda menyertakan helper dalam konfigurasi npm, Artifact Registry akan menelusuri kredensial akun layanan di lingkungan.
Menentukan kunci akun layanan sebagai kredensial
Gunakan opsi ini ketika 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 dengan urutan berikut:

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

    1. Kredensial yang ditentukan dalam variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS.

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

  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 eksplisit, sehingga mempermudah pemecahan masalah. Jika Anda tidak menggunakan variabel tersebut, pastikan setiap 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 ingin mengupload dari lingkungan ini menggunakan akun layanan default, Anda harus mengubah izinnya.

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 spesifik ke akun layanan untuk memberikan akses repositori.

  3. Tetapkan lokasi file kunci akun layanan ke variabel GOOGLE_APPLICATION_CREDENTIALS agar 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 saat 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.

      Penggunaan cakupan akan memastikan Anda selalu memublikasikan dan menginstal paket dari repositori yang benar.

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

  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 yang dapat dihubungkan, ulangi langkah-langkah sebelumnya untuk mendapatkan setelan dan menambahkannya ke file .npmrc yang sesuai.

  4. Jika Anda sudah 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 memperbarui token akses.

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

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

      npx google-artifactregistry-auth
      

      Jika repositori Artifact Registry ditetapkan sebagai registry global dan paket Anda tidak dicakupkan, 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 di 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. Menyimpan token dalam file .npmrc pengguna akan mengisolasi kredensial dari kode sumber dan sistem kontrol sumber Anda.

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

Mengonfigurasi autentikasi sandi

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

Kunci akun layanan adalah kredensial yang berlaku dalam 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 level 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 spesifik ke akun layanan untuk memberikan akses repositori.

  3. Jika 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 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 saat 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.

      Penggunaan cakupan akan memastikan Anda selalu memublikasikan dan menginstal paket dari repositori yang benar.

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

    • 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 yang dapat dihubungkan, ulangi langkah-langkah sebelumnya untuk mendapatkan setelan dan menambahkannya ke file .npmrc.

Langkah selanjutnya