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 CLIConnect-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 CLIConnect-AzContainerRegistry di Azure PowerShellPengaturan 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 CLIConnect-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 CLIConnect-AzContainerRegistry di Azure PowerShellKubernetes 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.
Masuk dengan alat kontainer alternatif alih-alih Docker
Dalam beberapa skenario, Anda perlu menggunakan alat kontainer alternatif seperti podman
alih-alih alat docker
kontainer 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_COMMAND
lingkungan . 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.