Mengautentikasi dengan Azure Container Registry

Anda dapat mengautentikasi dengan registri kontainer Azure dalam beberapa cara. Tinjau opsi ini untuk menentukan apa yang paling sesuai untuk skenario penggunaan registri kontainer Anda.

Untuk sebagian besar skenario, autentikasi dengan menggunakan salah satu metode berbasis ID Microsoft Entra berikut:

  • Login individual - Mengautentikasi langsung ke registri
  • Prinsipal layanan - Gunakan prinsipal layanan Microsoft Entra untuk autentikasi tanpa pengawas, atau "tanpa kepala", oleh aplikasi dan orkestrator kontainer

Opsi autentikasi

Tabel berikut ini mencantumkan metode autentikasi yang tersedia dan skenario umum, dengan tautan ke detail selengkapnya.

Petunjuk / Saran

Untuk autentikasi dari Azure Kubernetes Service (AKS) atau kluster Kubernetes lainnya, lihat Skenario untuk mengautentikasi dengan Azure Container Registry dari Kubernetes.

Metode Cara mengautentikasi Skenario Kontrol akses berbasis peran Microsoft Entra (RBAC) Keterbatasan
Identitas Microsoft Entra individual  az acr login di Azure CLI

Connect-AzContainerRegistry di Azure PowerShell
Pendorongan/penarikan interaktif oleh pengembang, penguji Ya Token Microsoft Entra harus diperbarui setiap 3 jam
Prinsipal layanan Microsoft Entra  docker login

az acr login di Azure CLI

Connect-AzContainerRegistry di Azure PowerShell

Pengaturan masuk registri di API atau alat
Dorongan tanpa pengawas dari alur CI/CD

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

az acr login di Azure CLI

Connect-AzContainerRegistry di Azure PowerShell
Push otomatis dari pipeline Azure CI/CD

Penarikan data otomatis tanpa pengawasan ke layanan Azure

Untuk daftar skenario penetapan peran identitas terkelola, lihat Izin ACR Entra dan penetapan peran.
Ya Hanya dapat digunakan dari layanan Azure tertentu yang mendukung identitas terkelola untuk sumber daya Azure
Pengguna admin  docker login  Pendorongan/penarikan interaktif oleh pengembang atau penguji individu

Penyebaran citra melalui portal dari registri ke Azure App Service atau Azure Container Instances
Tidak, selalu tarik dan dorong akses Tingkat akses tinggi. Akun tunggal per registri; tidak disarankan untuk beberapa pengguna
Izin repositori berbasis token Non-Microsoft Entra  docker login

az acr login di Azure CLI

Connect-AzContainerRegistry di Azure PowerShell
Pendorongan/penarikan interaktif ke repositori oleh pengembang atau penguji individu

Penarikan tanpa pengawasan dari repositori oleh sistem individual atau perangkat eksternal
Izin repositori berbasis token tidak mendukung penetapan peran Microsoft Entra RBAC.

Untuk izin repositori berbasis Microsoft Entra, lihat Izin repositori kontrol akses berbasis atribut Azure (ABAC) di Azure Container Registry sebagai gantinya.
Saat ini tidak terintegrasi dengan MICROSOFT Entra ID

Mengautentikasi dengan ID Microsoft Entra

Saat bekerja langsung dengan registri Anda, seperti melakukan pull dan push gambar dari stasiun kerja pengembangan ke registri yang telah Anda buat, buat autentikasi dengan menggunakan identitas Azure individual Anda.

Masuk ke Azure CLI dengan menggunakan az login, lalu jalankan perintah az acr login :

az login
az acr login --name <acrName>

Saat Anda masuk dengan menggunakan az acr login, CLI menggunakan token yang dibuat saat Anda menjalankan az login untuk mengautentikasi sesi Anda dengan mulus 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 berikutnya docker dalam sesi Anda tidak memerlukan nama pengguna atau kata sandi.

Petunjuk / Saran

Gunakan az acr login juga untuk mengautentikasi identitas individu saat Anda ingin mendorong atau menarik artefak selain gambar Docker ke registri Anda, seperti artefak OCI.

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

Menggunakan az acr login dengan identitas Azure memungkinkan kontrol akses berbasis peran 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 tertentu. Untuk skenario lintas layanan, atau untuk grup kerja atau alur kerja pengembangan di mana Anda tidak ingin mengelola akses individual, Anda juga dapat masuk dengan menggunakan identitas terkelola untuk sumber daya Azure.

Menggunakan az acr login tanpa daemon Docker

Dalam beberapa kasus, Anda perlu mengautentikasi dengan menggunakan az acr login saat 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 dengan parameter --expose-token. Opsi ini mengembalikan token akses alih-alih 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 otentikasi registri, simpan kredensial token di lokasi yang aman dan ikuti praktik yang direkomendasikan untuk kelola kredensial 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, lewati 00000000-0000-0000-0000-000000000000 sebagai nama pengguna dan gunakan 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 dikembalikan oleh az acr login perintah helm registry login untuk mengautentikasi pada registri:

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

Principal layanan

Jika Anda menetapkan perwakilan layanan ke registri, aplikasi atau layanan Anda dapat menggunakannya untuk autentikasi tanpa kepala. Prinsipal layanan mengaktifkan kontrol akses berbasis peran Azure (RBAC) dalam sebuah registri. Anda dapat menetapkan beberapa perwakilan layanan ke registri, sehingga Anda dapat menggunakan peran yang didukung yang berbeda untuk aplikasi tertentu.

Untuk informasi selengkapnya, 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 kredensialnya di portal Microsoft Azure, atau dengan menggunakan Azure CLI, Azure PowerShell, atau alat Azure lainnya. Akun admin memiliki izin penuh ke registri, jadi Anda harus mengaktifkannya hanya jika perlu.

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 Container Apps.

Penting

Akun admin dirancang untuk satu pengguna untuk mengakses registri, terutama untuk tujuan pengujian. Jangan bagikan kredensial akun admin di antara beberapa pengguna. Semua pengguna yang mengautentikasi dengan akun admin muncul sebagai satu pengguna dengan akses push dan pull ke registri. Mengubah atau menonaktifkan akun ini menonaktifkan akses registri untuk semua pengguna yang menggunakan kredensialnya. Gunakan identitas individu untuk pengguna dan perwakilan layanan untuk skenario tanpa kepala.

Akun admin memiliki dua kata sandi, yang keduanya dapat Anda regenerasi. Meregenerasi kata sandi untuk akun admin membutuhkan waktu sekitar 60 detik untuk mereplikasi dan menjadi tersedia. Karena akun memiliki dua kata sandi, Anda dapat mempertahankan koneksi ke registri dengan menggunakan satu kata sandi saat Anda meregenerasi kata sandi lainnya. Jika mengaktifkan akun admin, Anda dapat meneruskan nama pengguna dan kata sandi ke docker login perintah saat diminta untuk autentikasi dasar ke registri. Untuk praktik yang direkomendasikan untuk mengelola kredensial autentikasi, lihat referensi perintah masuk docker .

Untuk mengaktifkan pengguna admin untuk registri yang ada, gunakan --admin-enabled parameter perintah az acr update di Azure CLI:

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

Anda juga dapat mengaktifkan pengguna admin untuk registri Anda di portal Microsoft Azure. Di menu layanan, di bawah Pengaturan, pilih Kunci akses. Lalu centang kotak Pengguna admin untuk mengaktifkan akun. Nama pengguna admin ditampilkan, bersama dengan dua kata sandi, yang dapat Anda tampilkan atau regenerasi sesuai kebutuhan.

Masuk dengan menggunakan alat kontainer alternatif alih-alih Docker

Dalam beberapa skenario, Anda perlu menggunakan alat kontainer alternatif seperti podman alih-alih Docker.

Alat kontainer default diatur ke docker untuk az acr login perintah. Jika Anda tidak mengatur alat kontainer bawaan dan perintah docker hilang di lingkungan Anda, Anda akan melihat kesalahan. Untuk mengubah alat kontainer default yang digunakan oleh perintah az acr login, atur variabel lingkungan DOCKER_COMMAND. Contohnya:

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

Langkah selanjutnya