Halaman ini menjelaskan cara mengonfigurasi Docker untuk melakukan autentikasi ke repositori Docker Artifact Registry.
Anda tidak perlu mengonfigurasi autentikasi untuk Trusted Cloud by S3NS lingkungan runtime seperti Google Kubernetes Engine, tetapi Anda harus memverifikasi bahwa izin yang diperlukan telah dikonfigurasi.Sebelum memulai
-
Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda. Setelah login, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud init
- (Opsional) Konfigurasi default untuk perintah gcloud CLI.
- Pastikan akun yang Anda gunakan untuk autentikasi memiliki izin untuk mengakses Artifact Registry. Sebaiknya gunakan akun layanan, bukan akun pengguna.
- Instal Docker jika belum diinstal.
- Docker memerlukan akses istimewa untuk berinteraksi dengan registry.
Di Linux atau Windows, tambahkan pengguna yang Anda gunakan untuk menjalankan perintah Docker ke
grup keamanan Docker. Langkah ini tidak diperlukan di macOS karena
Docker Desktop
berjalan di mesin virtual sebagai pengguna root.
Linux
Grup keamanan Docker disebut
docker
. Untuk menambahkan nama pengguna Anda, jalankan perintah berikut:sudo usermod -a -G docker ${USER}
Windows
Grup keamanan Docker disebut
docker-users
. Untuk menambahkan pengguna dari command prompt Administrator, jalankan perintah berikut:net localgroup docker-users DOMAIN\USERNAME /add
Dengan:
- DOMAIN adalah domain Windows Anda.
- USERNAME adalah nama pengguna Anda.
Logout dan login kembali agar perubahan keanggotaan grup diterapkan. Jika menggunakan virtual machine, Anda mungkin perlu memulai ulang virtual machine agar perubahan keanggotaan diterapkan.
Memilih metode autentikasi
Metode autentikasi berikut tersedia:
- Helper kredensial gcloud CLI
- Konfigurasi kredensial Artifact Registry untuk digunakan dengan Docker langsung di gcloud CLI. Ini adalah metode autentikasi paling sederhana, tetapi bisa lebih lambat daripada helper kredensial mandiri.
- Helper kredensial Docker mandiri
- Opsi ini terutama untuk mengonfigurasi kredensial Anda agar dapat digunakan dengan Docker jika tidak ada Google Cloud CLI. Alat ini jauh lebih cepat daripada helper kredensial gcloud CLI dan menggunakan Kredensial Default Aplikasi (ADC) untuk menemukan kredensial secara otomatis di lingkungan Anda.
- Token akses
- Anda dapat membuat token akses yang berlaku singkat untuk akun layanan, lalu menggunakan token tersebut untuk autentikasi sandi. Karena hanya berlaku selama 60 menit, token ini merupakan opsi yang lebih aman daripada kunci akun layanan.
- Kunci akun layanan
- Pasangan kunci yang dikelola pengguna yang dapat Anda gunakan sebagai kredensial untuk akun layanan. Karena kredensial ini berlaku dalam jangka waktu yang lama, kredensial ini adalah opsi yang paling tidak aman dari semua metode autentikasi yang tersedia.
Jika memungkinkan, gunakan token akses atau helper kredensial untuk mengurangi risiko akses tidak sah ke image container Anda. Jika Anda harus menggunakan kunci akun layanan, pastikan Anda mengikuti praktik terbaik untuk mengelola kredensial.
Setelan autentikasi di file konfigurasi Docker
Docker menyimpan setelan autentikasi dalam file konfigurasi config.json.
- Linux:
~/.docker/config.json
- Windows:
%USERPROFILE%\.docker\config.json
Ada bagian terpisah dalam file untuk metode autentikasi yang berbeda:
credHelpers
- Jika Anda menggunakan helper kredensial Docker untuk autentikasi, Artifact Registry menyimpan setelan helper kredensial di bagian
credHelpers
file. auths
- Jika Anda menggunakan Docker untuk login dengan token atau kunci akun layanan sebagai
sandi, Docker akan menyimpan versi berenkode base64 dari kredensial Anda di bagian
auths
file. credStore
- Jika Anda mengonfigurasi
penyimpanan kredensial
untuk mengelola kredensial, setelan penyimpanan kredensial ada di
bagian
credStore
file.
Saat terhubung ke registry, Docker akan memeriksa terlebih dahulu credential helper
yang terkait dengan host. Jadi, jika config.json
Anda menyertakan setelan Artifact Registry di bagian credHelpers
dan auths
, setelan di bagian auths
akan diabaikan.
Helper kredensial gcloud CLI
Helper kredensial gcloud CLI memberikan akses yang aman dan berjangka pendek ke resource project Anda. Perintah ini mengonfigurasi Docker untuk melakukan autentikasi ke host Artifact Registry di lingkungan mana pun tempat Google Cloud CLI diinstal.Helper kredensial gcloud CLI adalah metode autentikasi paling sederhana untuk disiapkan. Perintah ini mengonfigurasi Docker dengan kredensial akun layanan atau pengguna aktif di sesi gcloud CLI Anda. Karena helper kredensial ini bergantung pada gcloud CLI, helper ini dapat berjalan jauh lebih lambat daripada helper kredensial mandiri. Untuk build otomatis dengan alat pihak ketiga atau klien Docker dengan sejumlah besar host registry yang dikonfigurasi, gunakan helper kredensial mandiri.
Untuk melakukan autentikasi ke Artifact Registry:
Login ke gcloud CLI sebagai pengguna yang akan menjalankan perintah Docker.
Untuk mengonfigurasi autentikasi dengan kredensial pengguna, jalankan perintah berikut:
gcloud auth login
Untuk mengonfigurasi autentikasi dengan kredensial akun layanan, jalankan perintah berikut:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
Di mana
- ACCOUNT adalah akun layanan yang ingin Anda gunakan dengan
Artifact Registry dalam format
USERNAME@PROJECT-ID.s3ns-system.iam.gserviceaccount.com
. Jika ingin menggunakan akun yang sudah ada, Anda dapat melihat daftar akun layanan di halaman Service Accounts di konsol Trusted Cloud atau dengan perintahgcloud iam service-accounts list
. - KEY-FILE adalah file kunci akun layanan. Lihat dokumentasi Identity and Access Management (IAM) untuk mengetahui informasi tentang cara membuat kunci.
- ACCOUNT adalah akun layanan yang ingin Anda gunakan dengan
Artifact Registry dalam format
Untuk mengizinkan penggunaan helper kredensial, jalankan perintah berikut:
gcloud config set artifacts/allow_unrecognized_registry True
Jalankan perintah berikut:
gcloud auth configure-docker HOSTNAME-LIST
Dengan HOSTNAME-LIST adalah daftar nama host repositori yang dipisahkan koma untuk ditambahkan ke konfigurasi credential helper.
Perintah ini menampilkan bagian
credHelpers
dari konfigurasi Docker saat ini dan konfigurasi yang telah diupdate setelah menambahkan nama host yang ditentukan.Untuk menerima perubahan konfigurasi, masukkan
y
.Kredensial Anda disimpan di direktori beranda pengguna Anda.
- Linux:
$HOME/.docker/config.json
- Windows:
%USERPROFILE%/.docker/config.json
- Linux:
Docker mewajibkan helper kredensial berada di
PATH
sistem. Pastikan perintahgcloud
ada diPATH
sistem.
Helper kredensial mandiri
Helper kredensial Docker mandiri mengonfigurasi Docker untuk melakukan autentikasi ke Artifact Registry di sistem tempat gcloud CLI tidak tersedia. Cara ini jauh lebih cepat daripada helper kredensial gcloud CLI dan menggunakan Kredensial Default Aplikasi (ADC) untuk menemukan kredensial secara otomatis di lingkungan Anda. Untuk operasi selain mendorong dan menarik gambar, seperti memberi tag atau mencantumkan gambar. Sebaiknya gunakan metode autentikasi ini untuk build otomatis dengan alat pihak ketiga atau klien Docker dengan sejumlah besar host registry yang dikonfigurasi.
Helper kredensial Docker mandiri mengambil kredensial Artifact Registry Anda dan menuliskannya ke file konfigurasi Docker. Dengan cara ini, Anda
dapat menggunakan alat command line Docker, docker
, untuk berinteraksi langsung dengan
Artifact Registry.
Untuk menggunakan helper kredensial Docker:
Login ke mesin sebagai pengguna yang akan menjalankan perintah Docker.
Download helper kredensial Docker mandiri dari GitHub.
Anda dapat secara opsional menggunakan utilitas command line
curl
. Contoh:VERSION=2.1.29 OS=linux # or "darwin" for OSX, "windows" for Windows. ARCH=amd64 # or "386" for 32-bit OSs curl -fsSL "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz" \ | tar xz docker-credential-gcr \ && chmod +x docker-credential-gcr && sudo mv docker-credential-gcr /usr/bin/
Konfigurasi Docker untuk menggunakan kredensial Artifact Registry Anda saat berinteraksi dengan Artifact Registry (Anda hanya perlu melakukannya sekali):
docker-credential-gcr configure-docker --registries=HOSTNAME-LIST
Dengan HOSTNAME-LIST adalah daftar nama host repositori yang dipisahkan koma untuk ditambahkan ke konfigurasi credential helper.
Lihat dokumentasi helper kredensial Docker mandiri di GitHub untuk mengetahui informasi selengkapnya.
Kredensial Anda disimpan di direktori beranda pengguna Anda.
- Linux:
$HOME/.docker/config.json
- Windows:
%USERPROFILE%/.docker/config.json
- Linux:
Docker mewajibkan helper kredensial berada di
PATH
sistem. Pastikan perintahdocker-credential-gcr
ada diPATH
sistem.Untuk memverifikasi bahwa helper kredensial dapat berhasil mengambil kredensial Anda, jalankan perintah berikut:
echo "https://HOSTNAME" | docker-credential-gcr get
Ganti HOSTNAME dengan nama host yang Anda tambahkan ke konfigurasi. Contoh:
echo "https://u-france-east1-docker.s3nsregistry.fr" | docker-credential-gcr get
Jika perintah berhasil, output JSON yang ditampilkan akan menyertakan token di kolom
Secret
. Contoh:{"ServerURL":"https://u-france-east1-docker.s3nsregistry.fr","Username":"_dcgcr_2_0_0_token","Secret":"ya29..."}
Docker kini dikonfigurasi untuk melakukan autentikasi dengan Artifact Registry. Untuk mengirim dan menarik gambar, pastikan izin dikonfigurasi dengan benar.
Token akses
Anda dapat membuat token akses OAuth yang berlaku singkat untuk mengautentikasi dengan Artifact Registry. Karena token valid selama 60 menit, Anda harus memintanya kurang dari satu jam sebelum menggunakannya untuk terhubung dengan Artifact Registry.
Untuk menggunakan token akses dengan kredensial akun layanan:
Buat akun layanan untuk bertindak atas nama aplikasi Anda, atau pilih akun layanan yang sudah ada yang Anda gunakan untuk otomatisasi.
Berikan peran Artifact Registry tertentu ke akun layanan untuk memberikan akses repositori.
Buat token akses untuk akun layanan dan lakukan autentikasi:
Anda harus memiliki izin dalam peran Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) untuk meniru identitas akun layanan, untuk mendapatkan tokennya, lalu melakukan autentikasi sebagai akun layanan.Jalankan perintah berikut, dengan mengganti ACCOUNT dengan alamat email akun layanan Anda dan LOCATION dengan lokasi regional repositori.
Linux
gcloud auth print-access-token \ --impersonate-service-account ACCOUNT | docker login \ -u oauth2accesstoken \ --password-stdin https://LOCATION-docker.s3nsregistry.fr
Windows
gcloud auth print-access-token --impersonate-service-account ACCOUNT | docker login -u oauth2accesstoken --password-stdin https://LOCATION-docker.s3nsregistry.fr
Docker kini diautentikasi dengan Artifact Registry.
Kunci akun layanan
Siapa pun yang memiliki akses ke kunci pribadi yang valid untuk akun layanan akan dapat mengakses resource melalui akun layanan tersebut. Perhatikan bahwa siklus proses akses kunci ke akun layanan (dan dengan demikian, data yang dapat diakses akun layanan) tidak bergantung pada siklus proses pengguna yang telah mendownload kunci.
Gunakan panduan berikut untuk membatasi akses ke repositori Anda:
- Buat akun layanan khusus yang hanya digunakan untuk berinteraksi dengan repositori.
- Berikan peran Artifact Registry tertentu untuk akses yang diperlukan oleh akun layanan. Misalnya, akun layanan yang hanya mendownload artefak hanya memerlukan peran Pembaca Artifact Registry.
- Konfigurasi izin untuk akun layanan khusus Anda di setiap repositori, bukan di tingkat project. Kemudian, Anda dapat menentukan akses berdasarkan konteks repositori. Misalnya, akun layanan untuk build pengembangan mungkin memiliki peran Pembaca Artifact Registry untuk repositori produksi dan peran Penulis Artifact Registry untuk repositori staging.
- Ikuti praktik terbaik untuk mengelola kredensial.
Untuk membuat akun layanan baru dan kunci akun layanan yang hanya digunakan dengan repositori Artifact Registry:
Buat akun layanan untuk bertindak atas nama aplikasi Anda, atau pilih akun layanan yang sudah ada yang Anda gunakan untuk otomatisasi.
Anda akan 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.
Anda dapat mengenkode base64 semua isi file kunci.
Linux
base64 FILE-NAME > NEW-FILE-NAME
macOS
base64 -i FILE-NAME -o NEW-FILE-NAME
Windows
Base64.exe -e FILE-NAME > NEW-FILE-NAME
Dengan FILE-NAME adalah nama file kunci asli dan NEW-FILE-NAME adalah file kunci berenkode base64 Anda.
Pastikan izin dikonfigurasi dengan benar untuk akun layanan. Jika Anda menggunakan akun layanan Compute Engine, Anda harus mengonfigurasi izin dan cakupan akses dengan benar.
Gunakan kunci akun layanan untuk mengonfigurasi integrasi dengan Docker:
Jalankan perintah berikut:
Linux / macOS
cat KEY-FILE | docker login -u KEY-TYPE --password-stdin \ https://LOCATION-docker.s3nsregistry.fr
Windows
Get-Content KEY-FILE | docker login -u KEY-TYPE --password-stdin https://LOCATION-docker.s3nsregistry.fr
Ganti kode berikut:
- KEY-TYPE adalah salah satu dari berikut ini:
_json_key
jika Anda menggunakan kunci akun layanan dalam format JSON seperti yang diberikan saat Anda membuat file._json_key_base64
jika Anda melakukan encoding base64 pada semua konten file.
- KEY-FILE adalah nama file kunci akun layanan dalam format JSON.
- LOCATION adalah lokasi regional repositori tempat image disimpan.
- KEY-TYPE adalah salah satu dari berikut ini:
Docker kini diautentikasi dengan Artifact Registry.