Dengan mengautentikasi lingkungan klien Anda dengan Artifact Registry, Anda dapat menyimpan modul Go pribadi dan mengambilnya sebagai dependensi build.
Opsi autentikasi
Penyiapan autentikasi berbeda untuk mengupload dan mendownload paket.
Autentikasi untuk upload
Saat memaketkan dan mengupload modul Go ke Artifact Registry, alat gcloud CLI mencari kredensial di lingkungan Anda untuk menyiapkan autentikasi dalam urutan berikut, kecuali jika flag --json_keyditeruskan untuk menggunakan kunci akun layanan.
Kredensial Default Aplikasi (ADC), strategi yang mencari kredensial dengan urutan berikut:
Kredensial yang ditentukan dalam variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS.Kredensial yang disediakan oleh akun layanan default untuk Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine, atau Cloud Run Functions.
Kredensial yang disediakan 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 apa pun 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
bermaksud mengupload dari lingkungan ini menggunakan akun layanan default,
Anda harus mengubah izinnya.
Autentikasi untuk download
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 memperbarui token dalam file netrc Anda untuk autentikasi ke Artifact Registry.
Lokasi file netrc Anda 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 berumur pendek (direkomendasikan)
- Gunakan alat bantuan kredensial Go Artifact Registry untuk memperbarui token autentikasi di 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 Anda untuk autentikasi. Anda dapat menggunakan alat bantuan kredensial Go Artifact Registry untuk menambahkan kunci akun layanan yang tidak dienkripsi ke file netrc atau menambahkannya secara manual ke file tersebut.
Sebelum memulai
- Instal Go 1.15 atau yang lebih baru.
Instal add-on gcloud CLI package-go-module:
gcloud components install package-go-module
Menyiapkan lingkungan Go
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 repositori.
- PROJECT adalah project ID Google CloudAnda.
- REPOSITORY adalah nama repositori tempat paket disimpan.
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/fooagar tidak diperiksa menggunakan database checksum publik, jalankan perintah berikut:export GONOSUMDB=example.com/foo
Perintah berikut mengecualikan semua modul dengan jalur modul yang dimulai dengan
example.comagar tidak diperiksa menggunakan database checksum publik:export GONOSUMDB=example.com/*
Menambahkan kredensial Artifact Registry ke file netrc Anda
Jalankan perintah berikut untuk menambahkan kredensial Artifact Registry ke file netrc Anda dengan helper kredensial Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEYDengan:
- 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 melakukan autentikasi ke Artifact Registry. Jika Anda meneruskan flag
--json_key, kunci akan ditambahkan ke file netrc Anda untuk autentikasi sandi.
Jika Anda menggunakan kredensial berumur pendek untuk melakukan autentikasi ke Artifact Registry, Anda harus memperbarui 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.4.0 refresh
Mengautentikasi 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 Artifact Registry Reader 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 di tingkat project.
- Ikuti praktik terbaik untuk mengelola kredensial.
Untuk mengonfigurasi autentikasi:
Buat akun layanan untuk bertindak atas nama aplikasi Anda, atau pilih akun layanan yang ada yang Anda gunakan untuk otomatisasi.
Anda akan memerlukan lokasi file kunci akun layanan untuk menyiapkan autentikasi dengan Artifact Registry. Untuk akun yang sudah ada, Anda dapat melihat kunci dan membuat kunci baru di halaman Akun Layanan.
Berikan peran Artifact Registry yang sesuai ke akun layanan untuk memberikan akses repositori.
Jalankan perintah berikut untuk menambahkan kredensial akun layanan ke file netrc Anda dengan helper kredensial Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEYDengan:
- 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 berenkode base64 di 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 Anda 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:
Tambahkan helper kredensial Go ke
GONOPROXYAndaexport GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Jalankan perintah berikut untuk menambahkan kredensial Artifact Registry ke file netrc Anda dengan alat paket modul Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.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 melakukan autentikasi ke Artifact Registry. Jika Anda meneruskan flag
--json_key, kunci akan ditambahkan ke file netrc Anda untuk autentikasi sandi.