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.
Terraform'yi yapılandırma: Henüz bunu yapmamışsanız, aşağıdaki seçeneklerden birini kullanarak Terraform'ı yapılandırabilirsiniz:
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.
- Cloud Shell kullanarak Microsoft hesabı (Bash veya PowerShell ile) ve
- Windows kullanarak Microsoft hesabı doğrulama (Bash veya PowerShell ile)
- Hizmet sorumlusu aracılığıyla 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.
Azure CLI erişimi olan bir komut satırı açın.
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 loginAzure aboneliklerinin listesini görüntüler.
- Başarılı bir oturum açma ardından, varsayılan abonelik de dahil olmak üzere oturum Microsoft hesabı
Geçerli Azure aboneliğini onaylamak için az account show çalıştırın.
az account showBelirli 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.comyer tutucusunu ile değiştirmenizlive.com#admin@hotmail.comgerekir.
- Yer
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 setbelirtilen Azure aboneliğine geçişin sonuçlarını görüntülemez. Ancak, geçerliaz account showAzure 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 listbelirttiğiniz aboneliğe değiştiğiniaz account setgörüyorsunuz.
- yer
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.
Hizmet sorumlusu oluşturmak için Azure'da oturum açma. Azure'da kimlik doğrulamadan sonra Microsoft hesabıburaya geri dön.
Git Bash'te hizmet sorumlusu oluşturuyorsanız ortam
MSYS_NO_PATHCONVdeğ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_PATHCONVolarak (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~/.bashrcekleyin.
- Ortam değişkenlerini genel olarak (tüm terminal oturumları için) veya yerel
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-rbacsonra birkaç değer görüntüler.appId,passwordvetenantdeğ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.
- parametresini
Ortam değişkenlerde hizmet sorumlusu kimlik bilgilerini belirtme
Hizmet sorumlusu oluşturdukta, ortam değişkenleri aracılığıyla terraform kimlik bilgilerini belirtebilirsiniz.
Aşağıdaki
~/.bashrcortam 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>"Betiği yürütmek
~/.bashrciçinsource ~/.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.. ~/.bashrcOrtam 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şmekARM_SUBSCRIPTION_IDiç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 showdeğ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