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ı düzenleyicileri, Microsoft Entra hizmet sorumlusu kullanarak katılımsız veya "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 | Azure rol tabanlı erişim denetimi (Azure RBAC) | Sınırlama |
---|---|---|---|---|
Bireysel AD kimliği | az acr login Azure CLI'daConnect-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'daConnect-AzContainerRegistry Azure PowerShell'deAPI'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'daConnect-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'daConnect-AzContainerRegistry Azure PowerShell'deKubernetes ç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 login
oturum 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 login
ve 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.
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ı docker
kullanmanı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_COMMAND
ayarlayabilirsiniz. Ö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.