Aracılığıyla paylaş


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

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

Örnek 2: Sistem tarafından atanan kimlikle erişim

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