Azure kapsayıcı kayıt defterinde kimlik doğrulaması yapmak için Azure yönetilen kimliği kullanma
Kayıt defteri kimlik bilgilerini sağlamaya veya yönetmeye gerek kalmadan başka bir Azure kaynağından azure kapsayıcı kayıt defterinde kimlik doğrulaması yapmak için Azure kaynakları için yönetilen kimlik kullanın. Örneğin, kapsayıcı kayıt defterinizdeki kapsayıcı görüntülerine erişmek için, genel kayıt defteri kullandığınız kadar kolay bir şekilde Linux VM'de kullanıcı tarafından atanan veya sistem tarafından atanan bir yönetilen kimlik ayarlayın. Alternatif olarak, pod dağıtımları için Azure Container Registry'den kapsayıcı görüntülerini çekmek üzere yönetilen kimliğini kullanmak üzere bir Azure Kubernetes Service kümesi ayarlayın.
Bu makale için yönetilen kimlikler ve nasıl yapılır hakkında daha fazla bilgi ediniyorsunuz:
- Azure VM'de kullanıcı tarafından atanan veya sistem tarafından atanan kimliği etkinleştirme
- Azure kapsayıcı kayıt defterine kimlik erişimi verme
- Yönetilen kimliği kullanarak kayıt defterine erişme ve kapsayıcı görüntüsü çekme
Azure kaynaklarını oluşturmak için bu makale, Azure CLI 2.0.55 veya sonraki bir sürümünü çalıştırmanızı gerektirir. Sürümü bulmak için az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
Kapsayıcı kayıt defterini ayarlamak ve kapsayıcı görüntüsü göndermek için Docker'ın da yerel olarak yüklenmiş olması gerekir. Docker macOS, Windows veya Linux'ta Docker'ı kolayca yapılandırmanızı sağlayan paketler sağlar.
Yönetilen kimlik neden kullanılır?
Azure kaynakları için yönetilen kimlikler özelliği hakkında bilgi sahibi değilseniz bu genel bakışı inceleyin.
Seçili Azure kaynaklarını yönetilen kimlikle ayarladıktan sonra, kimliğe herhangi bir güvenlik sorumlusu gibi başka bir kaynağa istediğiniz erişimi verin. Örneğin, yönetilen bir kimliğe Azure'daki özel kayıt defterine çekme, gönderme ve çekme veya diğer izinlere sahip bir rol atayın. (Kayıt defteri rollerinin tam listesi için bkz. Azure Container Registry rolleri ve izinleri.) Bir veya daha fazla kaynağa kimlik erişimi verebilirsiniz.
Ardından, kodunuzda herhangi bir kimlik bilgisi olmadan Microsoft Entra kimlik doğrulamasını destekleyen herhangi bir hizmette kimlik doğrulaması yapmak için kimliği kullanın. Senaryonuza bağlı olarak yönetilen kimliği kullanarak kimlik doğrulaması yapmayı seçin. Kimliği kullanarak bir sanal makineden Azure kapsayıcı kayıt defterine erişmek için Azure Resource Manager ile kimlik doğrulaması yaparsınız.
Kapsayıcı kayıt defteri oluşturma
Henüz bir Azure kapsayıcı kayıt defteriniz yoksa, bir kayıt defteri oluşturun ve örnek bir kapsayıcı görüntüsü gönderin. Adımlar için bkz . Hızlı Başlangıç: Azure CLI kullanarak özel kapsayıcı kayıt defteri oluşturma.
Bu makalede, kapsayıcı görüntüsünün aci-helloworld:v1
kayıt defterinizde depolandığı varsayılır. Örneklerde myContainerRegistry kayıt defteri adı kullanılır. öğesini sonraki adımlarda kendi kayıt defterinizle ve görüntü adlarınızla değiştirin.
Docker özellikli vm oluşturma
Docker özellikli bir Ubuntu sanal makinesi oluşturun. Azure CLI'yi sanal makineye de yüklemeniz gerekir. Zaten bir Azure sanal makineniz varsa, sanal makineyi oluşturmak için bu adımı atlayın.
az vm create ile varsayılan bir Ubuntu Azure sanal makinesi dağıtın. Aşağıdaki örnek, myResourceGroup adlı mevcut bir kaynak grubunda myDockerVM adlı bir VM oluşturur:
az vm create \
--resource-group myResourceGroup \
--name myDockerVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
VM’nin oluşturulması birkaç dakika sürer. Komut tamamlandığında Azure CLI tarafından görüntülenenleri publicIpAddress
not alın. VM'ye SSH bağlantıları oluşturmak için bu adresi kullanın.
Docker'ı VM'ye yükleme
Sanal makinenizde Docker kapsayıcılarını çalıştırmak için Docker'ı yüklemeniz gerekir. Bu bölümde Docker'ı bir Ubuntu VM'sine yükleme adımları sağlanır ve VM'nizin Azure Container Registry'nizden kapsayıcı görüntülerini çekmeye ve çalıştırmaya hazır olduğundan emin olun.
VM çalıştırıldıktan sonra VM'ye bir SSH bağlantısı oluşturun. publicIpAddress değerini VM'nizin genel IP adresiyle değiştirin.
ssh azureuser@publicIpAddress
Docker'ı VM'ye yüklemek için aşağıdaki komutu çalıştırın:
sudo apt update
sudo apt install docker.io -y
Yüklemeden sonra, Docker'ın VM'de düzgün çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:
sudo docker run -it mcr.microsoft.com/hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Azure CLI'yi yükleme
Azure CLI'yı Ubuntu sanal makinenize yüklemek için Apt ile Azure CLI'yı yükleme makalesindeki adımları izleyin. Bu makale için 2.0.55 veya sonraki bir sürümü yüklediğinizden emin olun.
SSH oturumundan çıkın.
Örnek 1: Kullanıcı tarafından atanan kimlikle erişim
Kimlik oluşturma
az identity create komutunu kullanarak aboneliğinizde bir kimlik oluşturun . Kapsayıcı kayıt defterini veya sanal makineyi oluşturmak için daha önce kullandığınız kaynak grubunu veya farklı bir kaynak grubunu kullanabilirsiniz.
az identity create --resource-group myResourceGroup --name myACRId
Aşağıdaki adımlarda kimliği yapılandırmak için az identity show komutunu kullanarak kimliğin kaynak kimliğini ve hizmet sorumlusu kimliğini değişkenlerde depolayın.
# Get resource ID of the user-assigned identity
userID=$(az identity show --resource-group myResourceGroup --name myACRId --query id --output tsv)
# Get service principal ID of the user-assigned identity
spID=$(az identity show --resource-group myResourceGroup --name myACRId --query principalId --output tsv)
Daha sonraki bir adımda sanal makinenizden CLI'da oturum açtığınızda kimliğin kimliğine ihtiyacınız olduğundan değerini gösterin:
echo $userID
Kimlik şu biçimdedir:
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId
VM'yi kimlikle yapılandırma
Aşağıdaki az vm identity assign komutu, Docker VM'nizi kullanıcı tarafından atanan kimlikle yapılandırır:
az vm identity assign --resource-group myResourceGroup --name myDockerVM --identities $userID
Kapsayıcı kayıt defterine kimlik erişimi verme
Şimdi kapsayıcı kayıt defterinize erişmek için kimliği yapılandırın. Kayıt defterinin kaynak kimliğini almak için önce az acr show komutunu kullanın:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Kimliğe AcrPull rolünü atamak için az role assignment create komutunu kullanın. Bu rol, kayıt defteri için çekme izinleri sağlar. Hem çekme hem de gönderme izinleri sağlamak için AcrPush rolünü atayın.
az role assignment create --assignee $spID --scope $resourceID --role acrpull
Kayıt defterine erişmek için kimliği kullanma
Kimlikle yapılandırılan Docker sanal makinesinde SSH. VM'de yüklü Azure CLI'yı kullanarak aşağıdaki Azure CLI komutlarını çalıştırın.
İlk olarak, VM'de yapılandırdığınız kimliği kullanarak az login ile Azure CLI'da kimlik doğrulaması yapın. için <userID>
, önceki adımda aldığınız kimliğin kimliğini değiştirin.
az login --identity --username <userID>
Ardından az acr login ile kayıt defterinde kimlik doğrulaması yapın. Bu komutu kullandığınızda CLI, kapsayıcı kayıt defteriyle oturumunuzun kimliğini sorunsuz bir şekilde doğrulamak için çalıştırdığınızda az login
oluşturulan Active Directory belirtecini kullanır. (VM'nizin kurulumuna bağlı olarak, bu komutu ve docker komutlarını ile sudo
çalıştırmanız gerekebilir.)
az acr login --name myContainerRegistry
Bir Login succeeded
ileti görmeniz gerekir. Ardından kimlik bilgileri sağlamadan komutları çalıştırabilirsiniz docker
. Örneğin, kayıt defterinizin oturum açma sunucusu adını belirterek görüntüyü çekmek aci-helloworld:v1
için docker pull komutunu çalıştırın. Oturum açma sunucusu adı, kapsayıcı kayıt defteri adınızdan (tümü küçük harfle) ve ardından .azurecr.io
örneğin , mycontainerregistry.azurecr.io
şeklinden oluşur.
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
VM'yi sistem tarafından yönetilen kimlikle yapılandırma
Sistem tarafından atanan yönetilen kimlik, sanal makinenizin Azure Active Directory'de kendi kimliğini otomatik olarak yönetmesine olanak tanıyan bir Azure özelliğidir. Bu bölümde, Azure Container Registry'nize güvenli bir şekilde erişmek için vm'nizi sistem tarafından atanan bir kimlikle yapılandırma adımları açıklanmaktadır.
VM'yi sistem tarafından yönetilen kimlikle yapılandırma
Aşağıdaki az vm identity assign komutu Docker VM'nizi sistem tarafından atanan bir kimlikle yapılandırır:
az vm identity assign --resource-group myResourceGroup --name myDockerVM
Sonraki adımlarda kullanmak üzere vm kimliğinin principalId
değerine (hizmet sorumlusu kimliği) bir değişken ayarlamak için az vm show komutunu kullanın.
spID=$(az vm show --resource-group myResourceGroup --name myDockerVM --query identity.principalId --out tsv)
Kapsayıcı kayıt defterine kimlik erişimi verme
Şimdi kapsayıcı kayıt defterinize erişmek için kimliği yapılandırın. Kayıt defterinin kaynak kimliğini almak için önce az acr show komutunu kullanın:
resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)
Kimliğe AcrPull rolünü atamak için az role assignment create komutunu kullanın. Bu rol, kayıt defteri için çekme izinleri sağlar. Hem çekme hem de gönderme izinleri sağlamak için AcrPush rolünü atayın.
az role assignment create --assignee $spID --scope $resourceID --role acrpull
Kayıt defterine erişmek için kimliği kullanma
Kimlikle yapılandırılan Docker sanal makinesinde SSH. VM'de yüklü Azure CLI'yı kullanarak aşağıdaki Azure CLI komutlarını çalıştırın.
İlk olarak, VM'de sistem tarafından atanan kimliği kullanarak az login ile Azure CLI kimliğini doğrula.
az login --identity
Ardından az acr login ile kayıt defterinde kimlik doğrulaması yapın. Bu komutu kullandığınızda CLI, kapsayıcı kayıt defteriyle oturumunuzun kimliğini sorunsuz bir şekilde doğrulamak için çalıştırdığınızda az login
oluşturulan Active Directory belirtecini kullanır. (VM'nizin kurulumuna bağlı olarak, bu komutu ve docker komutlarını ile sudo
çalıştırmanız gerekebilir.)
az acr login --name myContainerRegistry
Bir Login succeeded
ileti görmeniz gerekir. Ardından kimlik bilgileri sağlamadan komutları çalıştırabilirsiniz docker
. Örneğin, kayıt defterinizin oturum açma sunucusu adını belirterek görüntüyü çekmek aci-helloworld:v1
için docker pull komutunu çalıştırın. Oturum açma sunucusu adı, kapsayıcı kayıt defteri adınızdan (tümü küçük harfle) ve ardından .azurecr.io
örneğin , mycontainerregistry.azurecr.io
şeklinden oluşur.
docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1
Sonraki adımlar
Bu makalede, Azure Container Registry ile yönetilen kimlikleri kullanmayı ve nasıl yapılacağını öğrendiniz:
- Azure VM'de kullanıcı tarafından atanan veya sistem tarafından atanan kimliği etkinleştirme
- Azure kapsayıcı kayıt defterine kimlik erişimi verme
- Yönetilen kimliği kullanarak kayıt defterine erişme ve kapsayıcı görüntüsü çekme
- Azure kaynakları için yönetilen kimlikler hakkında daha fazla bilgi edinin.
- App Service ve Azure Container Registry ile sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği kullanmayı öğrenin.
- Yönetilen kimlik kullanarak Azure Container Registry'den kapsayıcı görüntüsü dağıtmayı öğrenin.