Aracılığıyla paylaş


Azure Container Registry ile kimlik doğrulama

Azure kapsayıcı kayıt defteriyle kimlik doğrulaması yapmanın çeşitli yolları vardır ve bunların her biri bir veya daha fazla kayıt defteri kullanım senaryosu için geçerlidir.

Önerilen yollar şunlardır:

  • Tek tek oturum açma bilgileriyle doğrudan kayıt defterinde kimlik doğrulaması
  • Uygulamalar ve kapsayıcı orakestratörleri, Microsoft Entra hizmet sorumlusu kullanarak katılımsız ('başsız') kimlik doğrulaması gerçekleştirebilir.

Azure Kubernetes Service (AKS) veya başka bir Kubernetes kümesiyle kapsayıcı kayıt defteri kullanıyorsanız bkz. Kubernetes'ten Azure Container Registry ile kimlik doğrulaması senaryoları.

Kimlik doğrulaması seçenekleri

Aşağıdaki tabloda kullanılabilir kimlik doğrulama yöntemleri ve tipik senaryolar listelemektedir. Ayrıntılar için bağlı içeriğe bakın.

Metot Kimlik doğrulaması Senaryo Microsoft Entra rol tabanlı erişim denetimi (RBAC) Sınırlama
Bireysel Microsoft Entra kimliği  az acr login Azure CLI'da

Connect-AzContainerRegistry Azure PowerShell'de
Geliştiriciler, testçiler tarafından etkileşimli gönderim/çekme Evet Microsoft Entra belirteci 3 saatte bir yenilenmelidir
Microsoft Entra hizmet sorumlusu  docker login

az acr login Azure CLI'da

Connect-AzContainerRegistry Azure PowerShell'de

API'lerde veya araçlarda kayıt defteri oturum açma ayarları

Kubernetes çekme sırrı   
CI/CD işlem hattından katılımsız gönderme

Azure'a veya dış hizmetlere katılımsız çekme
Evet SP parola varsayılan süre sonu 1 yıldır
Microsoft Entra tarafından yönetilen Azure kaynakları kimliği  docker login

az acr login Azure CLI'da

Connect-AzContainerRegistry Azure PowerShell'de
Azure CI/CD işlem hattından katılımsız gönderme

Azure hizmetlerine katılımsız çekme

Yönetilen kimlik rolü atama senaryolarının listesi için ACR rol atama senaryolarına bakın.
Evet

ACR yerleşik rolleriyle Microsoft Entra RBAC rol atamaları

Microsoft Entra tabanlı depo izinleri için Microsoft Entra öznitelik tabanlı erişim denetimi (ABAC) 
Yalnızca Azure kaynakları için yönetilen kimlikleri destekleyen belirli Azure hizmetlerinden kullanın
AKS küme düğümü kubelet'in yönetilen kimliği  AKS kümesi oluşturulduğunda veya güncelleştirildiğinde kayıt defteri ekleme Aynı veya farklı bir abonelikteki AKS küme düğümüne katılımsız olarak bir çekme işlemi gerçekleştirme Hayır, yalnızca çekme erişimi Yalnızca AKS kümesiyle kullanılabilir

Kiracılar arası kimlik doğrulaması için kullanılamaz
AKS kümesi hizmet sorumlusu  AKS kümesi oluşturulduğunda veya güncelleştirildiğinde etkinleştirme Başka bir Entra kiracısındaki kayıttan AKS kümesine denetimsiz çekme Hayır, yalnızca çekme erişimi Yalnızca AKS kümesiyle kullanılabilir
Yönetici kullanıcı  docker login  Bireysel geliştirici veya test oluşturucu tarafından etkileşimli gönderim/çekme

Görüntünün kayıt defterinden Azure Uygulaması Hizmetine veya Azure Container Instances'a portal dağıtımı
Hayır, her zaman çekme ve gönderme erişimi Kayıt defteri başına tek hesap, birden çok kullanıcı için önerilmez
Microsoft Entra belirteci tabanlı olmayan depo izinleri  docker login

az acr login Azure CLI'da

Connect-AzContainerRegistry Azure PowerShell'de

Kubernetes çekme sırrı 
Bireysel geliştirici veya test oluşturucu tarafından depoya etkileşimli gönderme/çekme

Tek tek sistem veya dış cihaz tarafından depodan katılımsız çekme
Belirteç tabanlı depo izinleri Microsoft Entra RBAC rol atamalarını desteklemez .

Microsoft Entra tabanlı depo izinleri için bunun yerine, Microsoft Entra öznitelik tabanlı erişim denetimine (ABAC) bakınız.
Şu anda Microsoft Entra kimliğiyle tümleştirilmemiş

Microsoft Entra Id ile bireysel oturum açma

Doğrudan kayıt defterinizle çalışırken( örneğin görüntüleri kendi oluşturduğunuz bir geliştirme iş istasyonundan kayıt defterine gönderirken) tek tek Azure kimliğinizi kullanarak kimlik doğrulaması yapın. Az login ile Azure CLI'da oturum açın ve ardından az acr login komutunu çalıştırın:

az login
az acr login --name <acrName>

ile az acr loginoturum açtığınızda CLI, kayıt defterinizle oturumunuzun kimliğini sorunsuz bir şekilde doğrulamak için yürüttüğünüzde az login oluşturulan belirteci kullanır. Kimlik doğrulama akışını tamamlamak için Docker CLI ve Docker daemon'unun ortamınızda yüklü ve çalışır durumda olması gerekir. az acr login dosyasında bir Microsoft Entra belirteci ayarlamak için Docker istemcisini docker.config kullanır. Bu şekilde oturum açtıktan sonra kimlik bilgileriniz önbelleğe alınır ve oturumunuzun sonraki docker komutlarında kullanıcı adı veya parola gerekmez.

İpucu

Ayrıca, OCI yapıtları gibi Docker görüntüleri dışındaki yapıtları kayıt defterinize göndermek veya çekmek istediğinizde bir kullanıcının kimliğini doğrulamak için az acr login kullanın.

Kayıt defteri erişimi için, tarafından az acr login kullanılan belirteç 3 saat geçerlidir, bu nedenle bir docker komutu çalıştırmadan önce her zaman kayıt defterinde oturum açmanızı öneririz. Belirtecinizin süresi dolarsa, yeniden kimlik doğrulaması yapmak için komutunu yeniden kullanarak az acr login yenileyebilirsiniz.

Azure kimlikleriyle az acr login kullanmak, Azure rol tabanlı erişim denetimi (RBAC) sağlar. Bazı senaryolarda, Microsoft Entra Id'de kendi bireysel kimliğinizle bir kayıt defterinde oturum açmak veya belirli rollere sahip diğer Azure kullanıcılarını yapılandırmak isteyebilirsiniz. Bkz. Azure Container Registry Entra izinlerine ve rollerine genel bakış. Hizmetler arası senaryolar için veya tek tek erişimi yönetmek istemediğiniz bir çalışma grubunun veya geliştirme iş akışının gereksinimlerini karşılamak için Azure kaynakları için yönetilen kimlikle de oturum açabilirsiniz.

--expose-token ile az acr login

Bazı durumlarda, Docker daemon ortamınızda çalışmadığında kimlik az acr login doğrulaması yapmanız gerekir. Örneğin, Docker CLI sağlayan ancak Docker daemon'unu çalıştırmayan Azure Cloud Shell'de bir betikte çalıştırmanız az acr login gerekebilir.

Bu senaryo için ilk olarak parametresini az acr login çalıştırın--expose-token. Bu seçenek, Docker CLI üzerinden oturum açmak yerine erişim belirtecini kullanıma sunar.

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

Çıktı, erişim belirtecini burada kısaltılmış olarak görüntüler:

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

Kayıt defteri kimlik doğrulaması için, belirteç kimlik bilgilerini güvenli bir konumda depolamanızı ve docker oturum açma kimlik bilgilerini yönetmek için önerilen yöntemleri izlemenizi öneririz. Örneğin, belirteç değerini bir ortam değişkeninde depolayın:

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

Ardından komutunu çalıştırın docker loginve kullanıcı adı olarak geçirin 00000000-0000-0000-0000-000000000000 ve erişim belirtecini parola olarak kullanın:

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

Benzer şekilde, kayıt defteriyle kimlik doğrulaması yapmak için komutuyla az acr login tarafından helm registry login döndürülen belirteci kullanabilirsiniz:

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

Hizmet sorumlusu

Kayıt defterinize bir hizmet sorumlusu atarsanız, uygulamanız veya hizmetiniz onu insansız kimlik doğrulaması için kullanabilir. Hizmet sorumluları bir kayıt defterine Azure rol tabanlı erişim denetimine (RBAC) izin verir ve bir kayıt defterine birden çok hizmet sorumlusu atayabilirsiniz. Birden çok hizmet sorumlusu, farklı uygulamalar için farklı erişim tanımlamanıza olanak tanır.

ACR kimlik doğrulama belirteci, ACR'de oturum açıldığında oluşturulur ve sonraki işlemlerde yenilenir. Bu belirteç için yaşam süresi 3 saattir.

Kullanılabilir rollerin listesi için bkz. Azure Container Registry Entra izinlerine ve rollerine genel bakış.

Azure kapsayıcı kayıt defteriyle kimlik doğrulaması için hizmet sorumlusu oluşturmaya yönelik CLI betikleri ve daha fazla kılavuz için bkz. Hizmet sorumlularıyla Azure Container Registry kimlik doğrulaması.

Yönetici hesabı

Her kapsayıcı kayıt defteri, varsayılan olarak devre dışı bırakılan bir yönetici kullanıcı hesabı içerir. Yönetici kullanıcıyı etkinleştirebilir ve kimlik bilgilerini Azure portalında veya Azure CLI, Azure PowerShell veya diğer Azure araçlarını kullanarak yönetebilirsiniz. Yönetici hesabının kayıt defterinde tam izinleri vardır.

Yönetici hesabı şu anda bazı senaryolarda kapsayıcı kayıt defterinden belirli Azure hizmetlerine görüntü dağıtmak için gereklidir. Örneğin, bir kayıt defterinden kapsayıcı görüntüsünü doğrudan Azure Container Instances'a veya Kapsayıcılariçin Azure Web Apps'e dağıtmak için Azure portalını kullandığınızda yönetici hesabı gerekir.

Önemli

Yönetici hesabı, tek bir kullanıcının özellikle test amacıyla kayıt defterine erişmesi için tasarlanmıştır. Yönetici hesabı kimlik bilgilerinin birden çok kullanıcı arasında paylaşılması önerilmez. Yönetici hesabıyla kimlik doğrulaması yapan tüm kullanıcılar, kayıt defterine gönderme ve çekme erişimi olan tek bir kullanıcı olarak görünür. Bu hesabın değiştirilmesi veya devre dışı bırakılması, kimlik bilgilerini kullanan tüm kullanıcılar için kayıt defteri erişimini devre dışı bırakır. Tek tek kimlik, kullanıcılar ve hizmet sorumluları için başsız senaryolar için önerilir.

Yönetici hesabı iki parolayla sağlanır ve her ikisi de yeniden oluşturulabilir. Yönetici hesapları için oluşturulan yeni parolalar hemen kullanılabilir. Yönetici hesaplarının parolalarını yeniden oluşturma işleminin çoğaltılması ve kullanılabilir olması 60 saniye sürer. İki parola, siz diğerini yeniden oluştururken bir parola kullanarak kayıt defteriyle bağlantıyı sürdürmenize olanak tanır. Yönetici hesabı etkinse, kayıt defterinde temel kimlik doğrulaması istendiğinde komutuna docker login kullanıcı adını ve parolayı geçirebilirsiniz. Örneğin:

docker login myregistry.azurecr.io

Oturum açma kimlik bilgilerini yönetmeye yönelik önerilen uygulamalar için docker oturum açma komutu başvurusuna bakın.

Yönetici kullanıcıyı mevcut bir kayıt defterinde etkinleştirmek için Azure CLI'da --admin-enabled komutunun parametresini kullanabilirsiniz:

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

Azure portalında yönetici kullanıcıyı etkinleştirmek için kayıt defterinizde gezinebilir, AYARLAR'ın altında Erişim anahtarları'nı ve ardından Yönetici kullanıcı'nın altında Etkinleştir'i seçebilirsiniz.

Azure portalında yönetici kullanıcı kullanıcı arabirimini etkinleştirme

Docker yerine alternatif bir kapsayıcı aracıyla oturum açın

Bazı senaryolarda, ortak kapsayıcı aracı yerine gibi podman alternatif kapsayıcı araçlarını dockerkullanmanız gerekir. Örneğin: Docker artık RHEL 8 ve 9'da kullanılamadığından kapsayıcı aracınızı değiştirmeniz gerekir.

Komutlar için docker varsayılan kapsayıcı aracı olarak az acr login ayarlanır. Varsayılan kapsayıcı aracını ayarlamazsanız ve docker komutu ortamınızda yoksa aşağıdaki hata açılır:

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.

Komutun kullandığı varsayılan kapsayıcı aracını az acr login değiştirmek için ortam değişkenini DOCKER_COMMANDayarlayabilirsiniz. Örneğin:

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

Not

Bu özelliği kullanmak için Azure CLI sürüm 2.59.0 veya üzerinin yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.

Sonraki adımlar