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:

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 Azure rol tabanlı erişim denetimi (Azure RBAC) Sınırlama
Bireysel AD 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 AD belirteci 3 saatte bir yenilenmelidir
AD 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 gizli dizisi   
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
Azure kaynakları için yönetilen kimlik  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

Evet Yalnızca Azure kaynakları için yönetilen kimlikleri destekleyen belirli Azure hizmetlerinden kullanın
AKS kümesi 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ümesine katılımsız çekme 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 AD kiracısında kayıt defterinden AKS kümesine katılımsız ç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
Depo kapsamlı erişim belirteci  docker login

az acr login Azure CLI'da

Connect-AzContainerRegistry Azure PowerShell'de

Kubernetes çekme gizli dizisi 
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
Evet Şu anda AD 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 tek bir kimliğin kimliğini doğrulamak için kullanınaz acr login.

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 kullanmakaz acr login, Azure rol tabanlı erişim denetimi (Azure RBAC) sağlar. Bazı senaryolarda, Microsoft Entra Id'de kendi bireysel kimliğiniz ile bir kayıt defterinde oturum açmak veya belirli Azure rolleri ve izinleri olan diğer Azure kullanıcılarını yapılandırmak isteyebilirsiniz. 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 --expose-token çalıştırınaz acr login. 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 helm registry login tarafından az acr 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 bunu başsız kimlik doğrulaması için kullanabilir. Hizmet sorumluları bir kayıt defterine Azure rol tabanlı erişim denetimine (Azure 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.

Kapsayıcı kayıt defteri için kullanılabilir roller şunlardır:

  • AcrPull: çekme

  • AcrPush: çekme ve gönderme

  • Sahip: diğer kullanıcılara rol çekme, gönderme ve atama

Rollerin tam listesi için bkz . Azure Container Registry rolleri ve izinleri.

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ılar iç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 az acr update komutunun parametresini kullanabilirsiniz--admin-enabled:

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 az acr login varsayılan kapsayıcı aracı olarak docker 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 gerekirse, bkz. Azure CLI yükleme.

Sonraki adımlar