Menyiapkan autentikasi untuk Go

Autentikasi ke Artifact Registry berbeda untuk upload dan download modul Go yang dipaketkan. Saat memaketkan dan mengupload modul Go ke Artifact Registry, alat gcloud CLI akan mencari kredensial di lingkungan Anda untuk menyiapkan autentikasi dalam urutan berikut, kecuali jika tanda --json_key diteruskan untuk menggunakan kunci akun layanan.

  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.

Saat mendownload modul Go yang dipaketkan untuk digunakan sebagai dependensi dari Artifact Registry, biner Go menggunakan kredensial dalam file netrc Anda untuk melakukan autentikasi ke Artifact Registry. Untuk menyederhanakan proses autentikasi, Anda dapat menggunakan helper kredensial Go untuk memuat ulang token dalam file netrc untuk autentikasi ke Artifact Registry.

Lokasi file netrc dapat ditetapkan dengan variabel lingkungan netrc. Jika variabel NETRC tidak ditetapkan, perintah go akan membaca $HOME/.netrc di platform mirip UNIX atau %USERPROFILE%\_netrc di Windows.

Artifact Registry mendukung metode autentikasi berikut saat menggunakan kredensial dalam file netrc Anda:

Kredensial jangka pendek (direkomendasikan)
Gunakan alat helper kredensial Go Artifact Registry untuk memperbarui token autentikasi dalam file netrc menggunakan kredensial di lingkungan Anda, atau tambahkan kredensial Artifact Registry secara manual ke file netrc.
Menggunakan kunci akun layanan
Gunakan opsi ini jika Anda tidak dapat menggunakan kredensial di lingkungan untuk autentikasi. Anda dapat menggunakan alat helper kredensial Go Artifact Registry untuk menambahkan kunci akun layanan yang tidak dienkripsi ke file netrc atau menambahkannya secara manual ke file.

Sebelum memulai

  1. Instal Go 1.15 atau yang lebih baru.
  2. Instal add-on gcloud CLI package-go-module:

    gcloud components install package-go-module

Menyiapkan lingkungan Go

  1. Minta Go untuk mendownload modul dari Artifact Registry, proxy modul Go publik, lalu sumber dalam urutan tersebut:

      export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
    

    Ganti kode berikut:

    • LOCATION adalah lokasi regional atau multi-regional repositori.
    • PROJECT adalah project ID Google Cloud Anda.
    • REPOSITORY adalah nama repositori tempat paket disimpan.
  2. Kecualikan modul Anda agar tidak diperiksa menggunakan database checksum publik:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Ganti MODULE_PATH_REGEX dengan jalur modul atau ekspresi reguler jika Anda ingin mengecualikan beberapa modul.

    Misalnya, Untuk mengecualikan modul example.com/foo agar tidak diperiksa menggunakan database checksum publik, jalankan perintah berikut:

      export GONOSUMDB=example.com/foo
    

    Perintah berikut mengecualikan semua modul dengan jalur modul yang dimulai di example.com agar tidak diperiksa menggunakan database checksum publik:

      export GONOSUMDB=example.com/*
    

Menambahkan kredensial Artifact Registry ke file netrc

  1. Jalankan perintah berikut untuk menambahkan kredensial Artifact Registry ke file netrc dengan helper kredensial Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          --json_key=PATH_TO_JSON_KEY
    

    Dengan keterangan:

    • LOCATION adalah lokasi regional atau multi-regional repositori Anda. Untuk menambahkan beberapa lokasi, masukkan lokasi tersebut sebagai daftar yang dipisahkan koma.
    • PATH_TO_JSON_KEY Opsional. Jalur ke kunci akun layanan Anda.

      Helper kredensial Go menambahkan setelan ke file netrc Anda untuk mengautentikasi ke Artifact Registry. Jika Anda meneruskan tanda --json_key, kunci akan ditambahkan ke file netrc untuk autentikasi sandi.

  2. Jika menggunakan kredensial berumur pendek untuk mengautentikasi ke Artifact Registry, Anda harus memuat ulang token OAuth dengan menjalankan perintah berikut sebelum menggunakan modul sebagai dependensi:

      GOPROXY=proxy.golang.org \
      go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
    

Melakukan autentikasi dengan kunci akun layanan

Gunakan pendekatan ini jika Anda memerlukan autentikasi dengan nama pengguna dan sandi.

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

  3. Jalankan perintah berikut untuk menambahkan kredensial akun layanan ke file netrc dengan helper kredensial Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          --json_key=PATH_TO_JSON_KEY
    

    Dengan keterangan:

    • LOCATION adalah lokasi regional atau multi-regional repositori Anda. Untuk menambahkan beberapa lokasi, masukkan lokasi tersebut sebagai daftar yang dipisahkan koma.
    • PATH_TO_JSON_KEY adalah jalur ke file kunci JSON akun layanan.

      Helper kredensial Go menambahkan kunci akun layanan ke file netrc Anda untuk autentikasi sandi.

Anda juga dapat menambahkan kunci akun layanan secara manual ke file netrc dalam format berikut:

machine LOCATION.pkg.dev
login _json_key_base64
password KEY

Ganti kode berikut:

  • LOCATION dengan lokasi regional atau multi-regional repositori Anda.
  • KEY dengan kunci yang dienkode base64 dalam file kunci akun layanan Anda.

Menambahkan helper kredensial Go ke GONOPROXY

Sebelum menggunakan helper kredensial Go, Anda harus menambahkannya ke daftar GONOPROXY untuk memaksa Go mendownloadnya langsung dari GitHub. Jika memiliki modul lain yang ingin didownload langsung dari sumber, Anda dapat menambahkannya dalam daftar yang dipisahkan koma seperti yang ditunjukkan dalam contoh berikut:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

Dengan MODULE_PATH1 dan MODULE_PATH2 adalah jalur modul dari modul yang akan didownload dari sumber.

Untuk menambahkan helper kredensial Go ke daftar GONOPROXY dan menjalankannya untuk menyiapkan kredensial Anda:

  1. Menambahkan helper kredensial Go ke GONOPROXY Anda

      export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
    
  2. Jalankan perintah berikut untuk menambahkan kredensial Artifact Registry ke file netrc dengan alat paket modul Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          [--json_key=path/to/service/account/key.json]
    

    Dengan LOCATION adalah lokasi regional atau multi-regional repositori Anda. Untuk menambahkan beberapa lokasi, masukkan lokasi tersebut sebagai daftar yang dipisahkan koma.

    Helper kredensial Go menambahkan setelan ke file netrc Anda untuk mengautentikasi ke Artifact Registry. Jika Anda meneruskan tanda --json_key, kunci akan ditambahkan ke file netrc untuk autentikasi sandi.

Langkah selanjutnya