Bagikan melalui


Mengautentikasi dengan registri kontainer Azure

Ada beberapa cara untuk mengautentikasi dengan registri kontainer Azure, yang masing-masing berlaku untuk satu atau beberapa skenario penggunaan registri.

Cara yang disarankan meliputi:

  • Autentikasi ke registri langsung melalui login individual
  • Aplikasi dan orkestrator kontainer dapat melakukan autentikasi tanpa pengawas, atau "tanpa kepala", dengan menggunakan perwakilan layanan Microsoft Entra

Jika Anda menggunakan registri kontainer dengan Azure Kubernetes Service (AKS) atau kluster Kubernetes lainnya, lihat Skenario untuk autentikasi dengan Azure Container Registry dari Kubernetes.

Opsi autentikasi

Tabel berikut ini mencantumkan metode autentikasi dan skenario umum yang tersedia. Lihat konten tertaut untuk detailnya.

Metode Cara mengautentikasi Skenario Kontrol akses berbasis peran Azure (Azure RBAC) Keterbatasan
Identitas AD Individual  az acr login di Azure CLI

Connect-AzContainerRegistry di Azure PowerShell
Pendorongan/penarikan interaktif oleh pengembang, penguji Ya Token AD harus diperpanjang setiap 3 jam
Perwakilan layanan AD  docker login

az acr login di Azure CLI

Connect-AzContainerRegistry di Azure PowerShell

Pengaturan login registri dalam API atau alat

Kubernetes menarik rahasia   
Dorongan tanpa pengawasan dari jalur CI/CD

Penarikan tanpa pengawas ke Azure atau layanan eksternal
Ya Kedaluwarsa default kata sandi SP adalah 1 tahun
Identitas Terkelola untuk sumber daya Azure  docker login

az acr login di Azure CLI

Connect-AzContainerRegistry di Azure PowerShell
Dorongan tanpa pengawasan dari jalur Azure CI/CD

Tarik tanpa pengawasan ke layanan Azure

Ya Hanya gunakan dari pilih layanan Azure yang mendukung identitas terkelola untuk sumber daya Azure
Identitas terkelola kluster AKS  Lampirkan registri saat kluster AKS dibuat atau diperbarui Penarikan tanpa pengawasan ke kluster AKS di langganan yang sama atau berbeda Tidak, tarik akses saja Hanya tersedia dengan kluster AKS

Tidak dapat digunakan untuk autentikasi lintas penyewa
Perwakilan layanan kluster AKS  Aktifkan saat kluster AKS dibuat atau diperbarui Penarikan tanpa pengawas ke kluster AKS dari registri di penyewa AD lain Tidak, tarik akses saja Hanya tersedia dengan kluster AKS
Pengguna admin  docker login  Dorongan/tarik interaktif oleh pengembang atau penguji individu

Penyebaran gambar portal dari registri ke Azure App Service atau Azure Container Instances
Tidak, selalu tarik dan dorong akses Akun tunggal per registri, tidak disarankan untuk beberapa pengguna
Token akses yang dicakup repositori  docker login

az acr login di Azure CLI

Connect-AzContainerRegistry di Azure PowerShell

Kubernetes menarik rahasia 
Dorongan/tarik interaktif oleh pengembang atau penguji individu

Penarikan tanpa pengawasan dari repositori oleh sistem individual atau perangkat eksternal
Ya Saat ini tidak terintegrasi dengan identitas AD

Login individual dengan ID Microsoft Entra

Saat bekerja dengan registri Anda secara langsung, seperti menarik gambar ke dan mendorong gambar dari stasiun kerja pengembangan ke registri yang Anda buat, autentikasi dengan menggunakan identitas Azure individual Anda. Masuk ke Azure CLI dengan az login, lalu jalankan perintah az acr login:

az login
az acr login --name <acrName>

Ketika Anda masuk dengan az acr login, CLI menggunakan token yang dibuat ketika Anda dieksekusi az login untuk mengautentikasi sesi Anda dengan lancar dengan registri Anda. Untuk menyelesaikan alur autentikasi, daemon Docker CLI dan Docker harus diinstal dan berjalan di lingkungan Anda. az acr login menggunakan klien Docker untuk mengatur token Microsoft Entra dalam docker.config file. Setelah Anda masuk dengan cara ini, kredensial Anda di-cache, dan perintah docker berikutnya dalam sesi Anda tidak memerlukan nama pengguna atau kata sandi.

Tip

Juga gunakan az acr login untuk mengautentikasi identitas individu ketika Anda ingin mendorong atau menarik artefak selain gambar Docker ke registri Anda, seperti artefak OCI.

Untuk akses registri, token yang digunakan az acr login berlaku selama 3 jam, jadi kami sarankan Anda selalu masuk ke registri sebelum menjalankan perintah docker. Jika token kedaluwarsa, Anda dapat menyegarkannya dengan menggunakan perintah az acr login lagi untuk mengotorisasi ulang.

Penggunaan az acr login dengan identitas Azure menyediakan kontrol akses berbasis peran Azure (Azure RBAC). Untuk beberapa skenario, Anda mungkin ingin masuk ke registri dengan identitas individual Anda sendiri di ID Microsoft Entra, atau mengonfigurasi pengguna Azure lainnya dengan peran dan izin Azure tertentu. Untuk skenario lintas layanan atau untuk menangani kebutuhan grup kerja atau alur kerja pengembangan di mana Anda tidak ingin mengelola akses individual, Anda juga dapat masuk dengan identitas terkelola untuk sumber daya Azure.

az acr login dengan --expose-token

Dalam beberapa kasus, Anda perlu mengautentikasi dengan az acr login ketika daemon Docker tidak berjalan di lingkungan Anda. Misalnya, Anda mungkin perlu menjalankan az acr login dalam skrip di Azure Cloud Shell, yang menyediakan Docker CLI tetapi tidak menjalankan daemon Docker.

Untuk skenario ini, jalankan az acr login terlebih dahulu dengan parameter --expose-token. Opsi ini memaparkan token akses, bukan masuk melalui Docker CLI.

az acr login --name <acrName> --expose-token

Output menampilkan token akses, disingkat di sini:

{
  "accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
  "loginServer": "myregistry.azurecr.io"
}

Untuk autentikasi registri, kami sarankan Anda menyimpan kredensial token di lokasi yang aman dan mengikuti praktik yang direkomendasikan mengelola kredensial untuk login docker. Misalnya, simpan nilai token dalam variabel lingkungan:

TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)

Kemudian, jalankan docker login, melewati 00000000-0000-0000-0000-000000000000 sebagai nama pengguna dan menggunakan token akses sebagai kata sandi:

docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN

Demikian juga, Anda dapat menggunakan token yang ditampilkan az acr login dengan perintah helm registry login untuk mengautentikasi dengan registri:

echo $TOKEN | helm registry login myregistry.azurecr.io \
            --username 00000000-0000-0000-0000-000000000000 \
            --password-stdin

Perwakilan layanan

Jika Anda menetapkan perwakilan layanan ke registri, aplikasi atau layanan Anda dapat menggunakannya untuk autentikasi headless. Perwakilan layanan memungkinkan kontrol akses berbasis peran Azure (Azure RBAC) ke registri, dan Anda dapat menetapkan beberapa perwakilan layanan ke registri. Beberapa perwakilan layanan memungkinkan Anda menentukan akses yang berbeda untuk aplikasi yang berbeda.

Token autentikasi Azure Container Registry dibuat saat masuk ke Azure Container Registry, dan direfresh pada operasi berikutnya. Waktu hidup untuk token itu adalah 3 jam.

Peran yang tersedia untuk registri kontainer meliputi:

  • AcrPull: tarik

  • AcrPush: tarik dan dorong

  • Pemilik: menarik, mendorong, dan menetapkan peran kepada pengguna lain

Untuk daftar lengkap peran, lihat peran dan izin Azure Container Registry.

Agar skrip CLI dapat membuat perwakilan layanan untuk mengautentikasi dengan registri kontainer Azure, dan panduan lainnya, lihat Autentikasi Azure Container Registry dengan perwakilan layanan.

Akun admin

Setiap registri kontainer menyertakan akun pengguna admin, yang dinonaktifkan secara default. Anda dapat mengaktifkan pengguna admin dan mengelola info masuknya di portal Microsoft Azure, atau dengan menggunakan Azure CLI, Azure PowerShell, atau alat Azure lainnya. Akun admin memiliki izin penuh ke registri.

Akun admin saat ini diperlukan untuk beberapa skenario untuk menyebarkan gambar dari registri kontainer ke layanan Azure tertentu. Misalnya, akun admin diperlukan saat Anda menggunakan portal Microsoft Azure untuk menyebarkan gambar kontainer dari registri langsung ke Azure Container Instances atau Azure Web Apps for Containers.

Penting

Akun admin dideasain agar satu pengguna dapat mengakses registri, terutama untuk tujuan pengujian. Kami tidak menyarankan untuk membagikan kredensial akun admin dengan beberapa pengguna. Semua pengguna yang mengautentikasi dengan akun admin muncul sebagai pengguna tunggal dengan akses dorong dan tarik ke registri. Mengubah atau menonaktifkan akun ini akan menonaktifkan akses registri untuk semua pengguna yang menggunakan kredensialnya. Identitas individu direkomendasikan untuk pengguna dan perwakilan layanan untuk skenario headless.

Akun admin dilengkapi dengan dua kata sandi, yang keduanya dapat diregenerasi. Kata sandi baru yang dibuat untuk akun admin segera tersedia. Pembuatan ulang kata sandi untuk akun admin akan memakan waktu 60 detik untuk direplikasi dan tersedia. Dua kata sandi memungkinkan Anda mempertahankan koneksi ke registri dengan menggunakan satu kata sandi selagi Anda meregenerasi kata sandi lainnya. Jika akun admin diaktifkan, Anda dapat meneruskan nama pengguna dan kata sandi ke perintah docker login ketika diminta untuk autentikasi dasar ke registri. Contohnya:

docker login myregistry.azurecr.io

Untuk praktik yang direkomendasikan dalam mengelola kredensial login, lihat referensi perintah login docker.

Untuk mengaktifkan pengguna admin untuk registri yang sudah ada, Anda bisa menggunakan parameter --admin-enabled dari perintah az acr update di Azure CLI:

az acr update -n <acrName> --admin-enabled true

Anda bisa mengaktifkan pengguna admin di portal Microsoft Azure dengan menavigasi registri Anda, memilih tombol Akses di bawah PENGATURAN, lalu Aktifkan di bawah Pengguna admin.

Mengaktifkan UI pengguna admin di portal Microsoft Azure

Masuk dengan alat kontainer alternatif alih-alih Docker

Dalam beberapa skenario, Anda perlu menggunakan alat kontainer alternatif seperti podman alih-alih alat dockerkontainer umum . Misalnya: Docker tidak lagi tersedia di RHEL 8 dan 9, jadi Anda harus mengalihkan alat kontainer Anda.

Alat kontainer default diatur ke docker untuk az acr login perintah. Jika Anda tidak mengatur alat kontainer default dan docker perintah hilang di lingkungan Anda, kesalahan berikut akan muncul:

az acr login --name <acrName>
2024-03-29 07:30:10.014426 An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.

Untuk mengubah alat kontainer default yang az acr login digunakan perintah, Anda dapat mengatur variabel DOCKER_COMMANDlingkungan . Contoh:

DOCKER_COMMAND=podman \
az acr login --name <acrName>

Catatan

Anda memerlukan Azure CLI versi 2.59.0 atau yang lebih baru yang diinstal dan dikonfigurasi untuk menggunakan fitur ini. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Langkah berikutnya