Menyiapkan autentikasi untuk Go

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

  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.

Saat mendownload modul Go yang dipaketkan untuk digunakan sebagai dependensi dari Artifact Registry, biner Go akan menggunakan kredensial di file .netrc Anda untuk melakukan autentikasi ke Artifact Registry.

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

Kredensial berumur pendek (direkomendasikan)
Gunakan Go credential helper Artifact Registry untuk mengupdate token autentikasi di file .netrc menggunakan kredensial di lingkungan Anda, atau tambahkan kredensial Artifact Registry secara manual ke file .netrc.
Gunakan kunci akun layanan
Gunakan opsi ini jika Anda tidak dapat menggunakan kredensial di lingkungan Anda untuk autentikasi. Anda dapat menggunakan Go credential helper Artifact Registry untuk menambahkan kunci akun layanan tidak terenkripsi 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. Perintahkan 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 dari repositori.
    • PROJECT adalah project ID Google Cloud Anda.
    • REPOSITORY adalah nama repositori tempat paket disimpan.
  2. Mengecualikan modul agar tidak diperiksa menggunakan database checksum publik:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Ganti MODULE_PATH_REGEX dengan jalur modul atau ekspresi reguler jika 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/*
    

Tambahkan kredensial Artifact Registry ke file .netrc Anda

  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 dari repositori Anda. Untuk menambahkan beberapa lokasi, masukkan lokasi 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 melakukan autentikasi ke Artifact Registry. Jika Anda meneruskan flag --json_key, kunci tersebut akan ditambahkan ke file .netrc untuk autentikasi sandi.

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

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

Mengautentikasi dengan kunci akun layanan

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

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 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 dari repositori Anda. Untuk menambahkan beberapa lokasi, masukkan lokasi 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.

Tambahkan 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 modul yang akan didownload dari sumber.

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

  1. Tambahkan 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 sebagai daftar yang dipisahkan koma.

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

Langkah selanjutnya