Yönetilen kimlikleri Azure sanal makineleriyle kullanma

Tamamlandı

Yönetilen kimlik atanmış olan bir sanal makinede stok takibi uygulamanızı çalıştırmaya karar verdiniz. Bu kurulum, uygulamanın kodda kullanıcı adı ve parola depolamak zorunda kalmadan kimlik doğrulaması yapmak için azure anahtar kasası kullanmasına olanak tanır.

Şirketinizin sanal makinenizi şirket içinden Azure’a geçirdiğini bildiğinize göre şimdi sabit kodlanmış kimlik doğrulama ayrıntılarını uygulama kodundan kaldırabilirsiniz. Azure kaynaklarına erişmek için daha güvenli yönetilen kimlik belirtecini kullanmak istiyorsunuz.

Bu ünitede, Azure sanal makinelerinde kimliğin nasıl yönetileceğini öğreneceksiniz. Ayrıca uygulamalar için daha güvenli bir ortam oluşturmak üzere kimliğin Azure Resource Manager ile nasıl etkileşime geçeceğini de öğreneceksiniz.

Azure sanal makinelerinde yönetilen kimlik

Bir VM'de, uygulamanızın kodunda kimlik bilgilerini belirtmek zorunda kalmadan birden çok Azure kaynağına erişmek için yönetilen kimlik kullanın. Yönetilen kimlikler arka planda otomatik kimlik doğrulamasına izin verir. Uygulamanız mümkün olduğunca kullanımı kolay ve güvenli olmaya devam eder.

Bir sanal makineye, derleme oluşturma sırasında veya sonrasında istediğiniz zaman yönetilen kimlik atayabilirsiniz. Azure portalını, Azure CLI'yi veya PowerShell'i kullanarak mevcut bir VM'ye yönetilen kimlik atayabilirsiniz.

Önceki ünitede sistem tarafından atanan yönetilen kimlikler ve kullanıcı tarafından atanan yönetilen kimlikler hakkında bilgi edindiniz. Sistem tarafından atanan yönetilen kimliği vm'nin ayarlarındaki Kimlik bölümünden etkinleştirebilirsiniz. Bunu yaptığınızda, şunlar olur:

  1. VM, yönetilen kimlik için bir istek gönderir.
  2. Microsoft Entra Id'de, aboneliğin güvendiği kiracı içindeki VM için bir hizmet sorumlusu oluşturulur.
  3. Azure Resource Manager, Azure Instance Metadata Service kimlik uç noktasını hizmet sorumlusu istemci kimliği ve sertifikasıyla güncelleştirir.
  4. Sanal makineye Azure kaynakları üzerinde erişim vermek için yeni hizmet sorumlusu bilgileri kullanılır. Uygulamanıza anahtar kasasına erişim vermek için Microsoft Entra Id'de rol tabanlı erişim denetimi (RBAC) kullanın. Sanal makinenin hizmet sorumlusuna gerekli rolü atayın. Örneğin, Okuyucu veya Katkıda Bulunan rollerini atayabilirsiniz.
  5. İstemci kimliği ve sertifika kullanılarak erişim belirteci istemek için Microsoft Entra Kimliği'ne bir çağrı yapılır.
  6. Microsoft Entra Id bir JSON Web Belirteci erişim belirteci döndürür.

Yapılandırma tamamlandığında, Azure'da barındırılan ve Microsoft Entra kimlik doğrulamasını destekleyen diğer kaynaklara erişmek için başka kimlik bilgileri oluşturmanız gerekmez.

Erişim denetimi ve kimlik doğrulaması

RBAC, Azure Resource Manager’da yerleşik olarak bulunan bir yetkilendirme sistemidir. Azure'daki kaynaklara ayrıntılı erişim vermek için bunu kullanabilirsiniz.

İzinler, rol tabanlı erişime göre oluşturulur. Rol tabanlı erişim, üç öğeden oluşur: hizmet sorumlusu, rol tanımı ve kapsam.

Bir uygulamada yönetilen kimlik kullanma

Sanal makine veya işlev uygulaması gibi Azure kaynağında çalıştırılan bir uygulama, kimlik doğrulaması yapmak ve diğer kaynaklara erişmek için yönetilen kimlik kullanır.

Kimlik doğrulaması ve erişim süreci, Azure Instance Metadata Service’a yapılan bir dizi isteği kapsar:

  1. Hizmet, uygulamanızla ilişkili kimliği doğrular.
  2. Bir kaynak erişim belirteci oluşturur.
  3. Uygulamanız, erişmesi gereken kaynağa belirteci gönderir.
  4. Belirtecin kimliği doğrulanır.
  5. Belirteç geçerliyse kaynak, belirtecin istek için uygun yetkilendirmeye sahip bir kimliği temsil ettiğini doğrular.
  6. Bu testten geçildiğinde, uygulamanız kaynağa erişebilir.

Karmaşıklığın büyük bölümünden kaçınmak için kodunuzda AzureServiceTokenProvider API’sini kullanabilirsiniz. AzureServiceTokenProvider nesnesi uygulamanız için hizmet sorumlusu kimliğini alır ve kaynak erişim belirtecini oluşturur. Erişim belirtecinin hangi kaynak için oluşturulacağını belirtmek için GetAccessTokenAsync yöntemini kullanın. Kaynağı barındıran hizmetin URI’sini sağlayın.

Aşağıdaki C# örneği Azure Depolama için bir belirteç oluşturur.

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
var token = await azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/");

Diğer Azure Depolama API’leri, erişimin kimliğini doğrulayıp erişimi yetkilendirmek için bu belirteci kullanabilir.