Mengunci gambar kontainer di registri kontainer Azure

Di registri kontainer Azure, Anda dapat mengunci versi gambar atau repositori sehingga tidak dapat dihapus atau diperbarui. Untuk mengunci gambar atau repositori, perbarui atributnya menggunakan Azure CLI az acr repository update.

Artikel ini mengharuskan Anda menjalankan Azure CLI di Azure Cloud Shell atau secara lokal (versi 2.0.55 atau yang lebih baru direkomendasikan). Jalankan az --version untuk menemukan versinya. Jika Anda perlu menginstal atau memutakhirkan, lihat Menginstal Azure CLI.

Penting

Artikel ini tidak berlaku untuk mengunci seluruh registri, misalnya, menggunakan Pengaturan > Kunci di portal Azure, atau perintah az lock di Azure CLI. Mengunci sumber daya registri tidak menyebabkan Anda tidak dapat membuat, memperbarui, atau menghapus data di repositori. Mengunci registri hanya mempengaruhi operasi manajemen seperti menambahkan atau menghapus replikasi, atau menghapus registri itu sendiri. Untuk informasi selengkapnya, lihat Mengunci sumber daya untuk mencegah perubahan yang tidak terduga.

Skenario

Secara default, gambar bertag di Azure Container Registry dapat diubah, sehingga dengan izin yang sesuai, Anda dapat berulang kali memperbarui dan mendorong gambar dengan tag yang sama ke registri. Gambar kontainer juga dapat dihapus sesuai kebutuhan. Perilaku ini berguna ketika Anda mengembangkan gambar dan perlu mempertahankan ukuran untuk registri Anda.

Namun, ketika Anda menyebarkan gambar kontainer ke produksi, Anda mungkin memerlukan gambar kontainer yang tidak dapat diubah. Gambar yang tidak dapat diubah adalah gambar yang tidak dapat Anda hapus atau timpa secara tidak sengaja.

Lihat juga Rekomendasi untuk memberi tag dan membuat versi gambar kontainer untuk strategi untuk memberi tag dan membuat versi gambar di registri Anda.

Gunakan perintah pembaruan repositori az acr untuk mengatur atribut repositori sehingga Anda dapat:

  • Mengunci versi gambar, atau seluruh repositori

  • Melindungi versi gambar atau repositori dari penghapusan, tetapi perbolehkan pembaruan

  • Mencegah operasi baca (penarikan) pada versi gambar, atau seluruh repositori

Lihat bagian berikut ini sebagai contoh.

Mengunci gambar atau repositori

Menampilkan atribut repositori saat ini

Untuk melihat atribut repositori saat ini, jalankan perintah tampilkan repositori az acr berikut:

az acr repository show \
    --name myregistry --repository myrepo \
    --output jsonc

Tampilkan atribut gambar saat ini

Untuk melihat atribut tag saat ini, jalankan perintah tampilkan repositori az acr berikut:

az acr repository show \
    --name myregistry --image myrepo:tag \
    --output jsonc

Mengunci gambar menurut tag

Untuk mengunci gambar myrepo:tag di myregistry, jalankan perintah pembaruan repositori az acr berikut:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --write-enabled false

Mengunci gambar dengan inti manifes

Untuk mengunci gambar myrepo yang diidentifikasi oleh hash manifes (hash SHA-256, yang dinyatakan sebagai sha256:...), jalankan perintah berikut. (Untuk menemukan hash manifes yang terkait dengan satu atau beberapa tag gambar, jalankan perintah az acr manifest list-metadata.)

az acr repository update \
    --name myregistry --image myrepo@sha256:123456abcdefg \
    --write-enabled false

Mengunci repositori

Untuk mengunci repositori myrepo dan semua citra di dalamnya, jalankan perintah berikut:

az acr repository update \
    --name myregistry --repository myrepo \
    --write-enabled false

Mencantumkan atribut repositori saat ini

Untuk memperbarui atribut repositori untuk menunjukkan daftar kunci gambar, jalankan perintah az acr repository update .

az acr repository update \
    --name myregistry --repository myrepo \ 
    --list-enabled false

Menampilkan atribut gambar pada kunci gambar

Untuk mengkueri tag pada kunci gambar dengan --list-enabled false diaktifkan pada atribut , jalankan perintah az acr repository show .

az acr repository show-manifests \
    --name myregistry --repository myrepo \
    --query "[?listEnabled==null].tags" 
    --output table

Periksa atribut gambar untuk tag dan manifes yang sesuai.

Catatan

  • Atribut tag dan manifes yang dapat diubah dikelola secara terpisah. Artinya, mengatur atribut deleteEnabled=false untuk tag tidak akan mengatur yang sama untuk manifes yang sesuai.
  • Kueri atribut menggunakan skrip di bawah ini:
registry="myregistry"
repo="myrepo"
tag="mytag"

az login
az acr repository show -n $registry --repository $repo
az acr manifest show-metadata -r $registry -n "$repo:$tag"
digest=$(az acr manifest show-metadata -r $registry -n "$repo:$tag" --query digest -o tsv)
az acr manifest show-metadata -r $registry -n "$repo@$digest"

Catatan

Jika atribut gambar diatur dengan writeEnabled=false atau deleteEnabled=false, maka akan memblokir penghapusan gambar.

Melindungi gambar atau repositori dari penghapusan

Melindungi gambar dari penghapusan

Untuk mengizinkan gambar myrepo:tag diperbarui tetapi tidak dihapus, jalankan perintah berikut:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --delete-enabled false --write-enabled true

Melindungi repositori dari penghapusan

Perintah berikut mengatur repositori myrepo sehingga tidak dapat dihapus. Gambar individual masih dapat diperbarui atau dihapus.

az acr repository update \
    --name myregistry --repository myrepo \
    --delete-enabled false --write-enabled true

Mencegah operasi baca pada gambar atau repositori

Untuk mencegah operasi baca (tarik) pada gambar myrepo:tag , jalankan perintah berikut:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --read-enabled false

Untuk mencegah operasi baca (penarikan) pada semua gambar di repositori myrepo, jalankan perintah berikut:

az acr repository update \
    --name myregistry --repository myrepo \
    --read-enabled false

Mengunci gambar atau repositori

Untuk memulihkan perilaku default gambar myrepo:tag sehingga dapat dihapus dan diperbarui, jalankan perintah berikut:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --delete-enabled true --write-enabled true

Untuk memulihkan perilaku default dari repositori dan semua gambar myrepo sehingga dapat dihapus dan diperbarui, jalankan perintah berikut:

az acr repository update \
    --name myregistry --repository myrepo \
    --delete-enabled true --write-enabled true

Langkah berikutnya

Dalam artikel ini, Anda akan belajar tentang menggunakan perintah az acr repository update untuk mencegah penghapusan atau pembaruan versi gambar di repositori. Untuk mengatur atribut tambahan, lihat referensi perintah az acr repository update.

Untuk melihat atribut yang ditetapkan untuk versi gambar atau repositori, gunakan perintah tampilkan repositori az acr.

Untuk detail tentang operasi penghapusan, lihat Menghapus gambar kontainer di Azure Container Registry.