Terraform'da Azure'da kimlik doğrulaması

Terraform komutlarını Azure aboneliğinize karşı kullanmak için önce terraform kimliğini bu abonelikte doğrulamanız gerekir. Bu makalede Azure'da kimlik doğrulama için bazı yaygın senaryolar açıklanmıştır.

Bu makalede şunları öğreneceksiniz:

  • Yaygın Terraform ve Azure kimlik doğrulama senaryolarını anlama
  • Cloud Shell'den Microsoft hesabı kimlik doğrulaması (Bash veya PowerShell kullanarak)
  • Microsoft hesabı Windows (Bash veya PowerShell kullanarak) kimlik doğrulaması
  • Azure CLI kullanarak hizmet sorumlusu oluşturma
  • Azure PowerShell’i kullanarak hizmet sorumlusu oluşturma
  • Ortam değişkenlerde hizmet sorumlusu kimlik bilgilerini belirtme
  • Terraform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme

1. Ortamınızı yapılandırma

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

2. Terraform'dan Azure'a kimlik doğrulaması

Terraform ve Azure kimlik doğrulama senaryoları

Terraform yalnızca Azure CLI aracılığıyla Azure'da kimlik doğrulamayı destekler. Kimlik doğrulama Azure PowerShell kimlik doğrulama desteklenmiyor. Bu nedenle Terraform çalışmanızı yaparken Azure PowerShell modülünü kullanabilirsiniz ancak önce Azure CLI'yı kullanarak Azure'da kimlik doğrulamanız gerekir.

Bu makalede aşağıdaki senaryolar için Terraform'dan Azure'a kimlik doğrulaması yapma adımları açıklanmıştır. Terraform'da Azure'da kimlik doğrulaması yapma seçenekleri hakkında daha fazla bilgi için bkz. Azure CLI kullanarak kimlik doğrulama.

Azure'da kimlik doğrulaması Microsoft hesabı

Bu Microsoft hesabı, Azure gibi bir kullanıcı adı (e-posta ve kimlik bilgileriyle ilişkilendirilmiş) Microsoft hizmetleri oturum açmak için kullanılan kullanıcı adıdır. Bir Microsoft hesabı bir veya daha fazla Azure aboneliğiyle ilişkilendirilebilirsiniz ve bu aboneliklerden biri varsayılan değerdir.

Aşağıdaki adımlarda, Azure'da bir Microsoft hesabı kullanarak etkileşimli olarak oturum açma, hesabın ilişkili Azure aboneliklerini (varsayılan dahil) listele ve geçerli aboneliği ayarlama işlemleriyle ilgili bilgiler ve bilgiler yer alır.

  1. Azure CLI erişimi olan bir komut satırı açın.

  2. az login dosyasını parametre olmadan çalıştırın ve yönergeleri izleyerek Azure'da oturum açma.

    az login
    

    Önemli noktalar:

    • Başarılı bir oturum açma ardından, varsayılan abonelik de dahil olmak üzere oturum Microsoft hesabı az login Azure aboneliklerinin listesini görüntüler.
  3. Geçerli Azure aboneliğini onaylamak için az account show çalıştırın.

    az account show
    
  4. Belirli bir hesabın tüm Azure abonelik adlarını ve kimliklerini görüntülemek Microsoft hesabı az account list çalıştırın.

    az account list --query "[?user.name=='<microsoft_account_email>'].{Name:name, ID:id, Default:isDefault}" --output Table
    

    Önemli noktalar:

    • Yer <microsoft_account_email> tutucusunu Azure aboneliklerini Microsoft hesabı e-posta adresiyle değiştirin.
    • Hotmail veya outlook gibi bir Canlı hesap ile tam e-posta adresini belirtmeniz gerekir. Örneğin, e-posta adresiniz ise admin@hotmail.com yer tutucusunu ile değiştirmeniz live.com#admin@hotmail.com gerekir.
  5. Belirli bir Azure aboneliğini kullanmak için az account set çalıştırın.

    az account set --subscription "<subscription_id_or_subscription_name>"
    

    Önemli noktalar:

    • yer <subscription_id_or_subscription_name> tutucusunu kullanmak istediğiniz aboneliğin kimliği veya adıyla değiştirin.
    • Çağrısı, az account set belirtilen Azure aboneliğine geçişin sonuçlarını görüntülemez. Ancak, geçerli az account show Azure aboneliğinin değiştiğini onaylamak için kullanabilirsiniz.
    • Önceki adımda komutunu çalıştırdıysanız, varsayılan Azure aboneliğinin ile az account list belirttiğiniz aboneliğe değiştiğini az account set görüyorsunuz.

Hizmet sorumlusu oluşturma

Terraform gibi Azure hizmetlerini dağıtan veya kullanan otomatik araçların her zaman kısıtlı izinlere sahip olması gerekir. Azure, uygulamaların tam ayrıcalıklı bir kullanıcı olarak oturum açması yerine hizmet sorumluları sunar.

En yaygın düzen, Azure'da etkileşimli olarak oturum açmak, bir hizmet sorumlusu oluşturmak, hizmet sorumlularını test etmek ve ardından bu hizmet sorumlularını gelecekteki kimlik doğrulaması (etkileşimli olarak veya betikleriniz aracılığıyla) için kullanmaktır.

  1. Hizmet sorumlusu oluşturmak için Azure'da oturum açma. Azure'da kimlik doğrulamadan sonra Microsoft hesabıburaya geri dön.

  2. Git Bash'te hizmet sorumlusu oluşturuyorsanız ortam MSYS_NO_PATHCONV değişkenlerini ayarlayın. (Uygulama kullanıyorsanız bu adım Cloud Shell.)

    export MSYS_NO_PATHCONV=1    
    

    Önemli noktalar:

    • Ortam değişkenlerini genel olarak (tüm terminal oturumları için) veya yerel MSYS_NO_PATHCONV olarak (yalnızca geçerli oturum için) ayarlayın. Hizmet sorumlusu oluşturmak sık sık değil, örnek geçerli oturum için değeri ayarlar. Bu ortam değişkenlerini genel olarak ayarlamak için ayarı dosyaya ~/.bashrc ekleyin.
  3. Hizmet sorumlusu oluşturmak için az ad sp create-for-rbac çalıştırın.

    az ad sp create-for-rbac --name <service_principal_name> --role Contributor
    

    Önemli noktalar:

    • parametresini <service-principal-name> ortamınız için özel bir adla değiştirebilir veya parametresini tamamen atabilirsiniz. parametresini atlarsanız, hizmet asıl adı geçerli tarih ve saat temel alarak oluşturulur.
    • Başarıyla tamamlandıktan az ad sp create-for-rbac sonra birkaç değer görüntüler. appId, password ve tenant değerleri bir sonraki adımda kullanılır.
    • Parola kaybolursa alınamıyor. Bu nedenle parolanızı güvenli bir yerde depolamanız gerekir. Parolanızı unutursanız hizmet sorumlusu kimlik bilgilerini sıfırlayabilirsiniz.
    • Bu makalede Katkıda Bulunan rolüne sahip bir hizmet sorumlusu kullanılmaktadır. Yönetim (RBAC) Role-Based Access Control daha fazla bilgi için bkz. RBAC: Yerleşik roller.
    • Hizmet sorumlusu oluşturmanın çıktısı hassas kimlik bilgilerini içerir. Bu kimlik bilgilerini kodunuza dahil etmeyebilirsiniz veya kimlik bilgilerini kaynak denetiminize kontrol edin.
    • Azure CLI ile hizmet sorumlusu oluşturma seçenekleri hakkında daha fazla bilgi için Azure CLI ile Azure hizmet sorumlusu oluşturma makalesine bakın.

Ortam değişkenlerde hizmet sorumlusu kimlik bilgilerini belirtme

Hizmet sorumlusu oluşturdukta, ortam değişkenleri aracılığıyla terraform kimlik bilgilerini belirtebilirsiniz.

  1. Aşağıdaki ~/.bashrc ortam değişkenlerini ekleyerek dosyasını düzenleyin.

    export ARM_SUBSCRIPTION_ID="<azure_subscription_id>"
    export ARM_TENANT_ID="<azure_subscription_tenant_id>"
    export ARM_CLIENT_ID="<service_principal_appid>"
    export ARM_CLIENT_SECRET="<service_principal_password>"
    
  2. Betiği yürütmek ~/.bashrc için source ~/.bashrc (veya kısaltılmış eşdeğerini) . ~/.bashrc çalıştırın. Betiğin otomatik olarak çalışması için Cloud Shell yeniden açabilirsiniz.

    . ~/.bashrc
    
  3. Ortam değişkenleri ayarlanmıştır ve değerlerini aşağıdaki gibi doğrularsınız:

    printenv | grep ^ARM*
    

Önemli noktalar:

  • Herhangi bir ortam değişkende olduğu gibi, Terraform betiğinden bir Azure aboneliği değerine erişmek için şu söz dizimlerini kullanın: ${env.<environment_variable>} . Örneğin, değerine erişmek ARM_SUBSCRIPTION_ID için değerini ${env.ARM_SUBSCRIPTION_ID} belirtin.
  • Terraform yürütme planlarını oluşturma ve uygulama, hizmet sorumlusuyla ilişkili Azure aboneliğinde değişiklikler yapar. Bir Azure aboneliğine oturum açtıysanız ve ortam değişkenleri ikinci bir Azure aboneliğine işaret ediyorsa bu durum bazen kafa karıştırıcı olabilir. Şimdi aşağıdaki örneği açıklayacak şekilde bakalım. İki Azure aboneliğiniz olduğunu varsayın: SubA ve SubB. Ortam değişkenleri SubB'ye işaret ederken geçerli Azure aboneliği SubA (aracılığıyla belirlenir) ise Terraform tarafından yapılan tüm az account show değişiklikler SubB üzerindedir. Bu nedenle, Azure CLI komutlarını çalıştırmak veya değişikliklerinizi görüntülemek için Azure PowerShell abonelikte oturum açabilirsiniz.

Terraform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme

Azure sağlayıcı bloğu, Azure aboneliğinizin kimlik doğrulama bilgilerini belirtmenize olanak sağlayan söz dizimi tanımlar.

terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}

provider "azurerm" {
  features {}

  subscription_id   = "<azure_subscription_id>"
  tenant_id         = "<azure_subscription_tenant_id>"
  client_id         = "<service_principal_appid>"
  client_secret     = "<service_principal_password>"
}

# Your code goes here

Dikkat

Terraform yapılandırma dosyasında Azure aboneliği kimlik bilgilerinizi belirtme özelliği özellikle test sırasında kullanışlı olabilir. Ancak, kimlik bilgilerinin güvenilir olmayan kişiler tarafından görüntülen kolay bir metin dosyasında depolanabilir olması tavsiye edilemez.

3. Sonuçları doğrulama

Geçerli aboneliği görüntüleyerek Azure aboneliğinde kimlik doğrulamanız olduğunu doğrulayın.

Azure CLI aracılığıyla geçerli Azure aboneliğini onaylamak için az account show çalıştırın.

az account show

Sonraki adımlar