Hizmet sorumlusuyla Azure'da kimlik doğrulaması
Bu makalede Terraform'un Azure'da hizmet sorumlusuyla kimlik doğrulaması nasıl yapılır açıklanmaktadır.
Bu makalede şunları öğreneceksiniz:
- Hizmet sorumlusu oluşturma
- Ortam değişkenlerinde hizmet sorumlusu kimlik bilgilerini belirtme
- Terraform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme
Hizmet sorumlusu oluşturma
Hizmet sorumlusuna erişiminiz yoksa yeni bir hizmet sorumlusu oluşturmak için bu bölümle devam edin. Kullanabileceğiniz bir hizmet sorumlunuz varsa Hizmet sorumlusu kimlik bilgilerini belirtme bölümüne atlayın.
Terraform gibi Azure hizmetlerini dağıtan veya kullanan otomatik araçlar her zaman kısıtlı izinlere sahip olmalıdır. Azure, uygulamalarda tamamen ayrıcalıklı bir kullanıcı olarak oturum açma olması yerine hizmet sorumluları sağlar.
En yaygın desen, Azure'da etkileşimli olarak oturum açmak, bir hizmet sorumlusu oluşturmak, hizmet sorumlusunu test etmek ve sonra bu hizmet sorumlusunu gelecekteki kimlik doğrulaması için (etkileşimli olarak veya betiklerinizden) kullanmaktır.
Hizmet sorumlusu oluşturmak için Azure'da oturum açın. Bir Microsoft hesabı aracılığıyla Azure'da kimlik doğrulaması yaptıktan sonra buraya dönün.
Git Bash'ten bir hizmet sorumlusu oluşturuyorsanız ortam değişkenini
MSYS_NO_PATHCONV
ayarlayın. (Cloud Shell kullanıyorsanız bu adım gerekli değildir.)export MSYS_NO_PATHCONV=1
Önemli noktalar:
- Ortam değişkenini
MSYS_NO_PATHCONV
genel olarak (tüm terminal oturumları için) veya yerel olarak (yalnızca geçerli oturum için) ayarlayabilirsiniz. Hizmet sorumlusu oluşturmak sık yaptığınız bir şey olmadığından, örnek geçerli oturum için değeri ayarlar. Bu ortam değişkenini genel olarak ayarlamak için, ayarı dosyaya~/.bashrc
ekleyin.
- Ortam değişkenini
Hizmet sorumlusu oluşturmak için az ad sp create-for-rbac komutunu çalıştırın.
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Önemli noktalar:
- öğesini ortamınız için özel bir adla değiştirebilir
<service-principal-name>
veya parametresini tamamen atlayabilirsiniz. parametresini atlarsanız, hizmet asıl adı geçerli tarih ve saat temelinde oluşturulur. - Başarıyla tamamlandıktan sonra birkaç
az ad sp create-for-rbac
değer görüntüler.appId
,password
vetenant
değerleri sonraki adımda kullanılır. - Parola kaybolursa alınamaz. Bu nedenle, parolanızı güvenli bir yerde depolamanız gerekir. Parolanızı unutursanız hizmet sorumlusu kimlik bilgilerini sıfırlayabilirsiniz.
- Bu makale için Katkıda Bulunan rolüne sahip bir hizmet sorumlusu kullanılıyor. Rol Tabanlı Erişim Denetimi (RBAC) rolleri hakkında daha fazla bilgi için bkz . RBAC: Yerleşik roller.
- Hizmet sorumlusu oluşturma çıktısı hassas kimlik bilgilerini içerir. Bu kimlik bilgilerini kodunuza eklemediğinizden veya kaynak denetiminizde kimlik bilgilerini denetlemediğinizden emin olun.
- 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.
- öğesini ortamınız için özel bir adla değiştirebilir
Hizmet sorumlusu kimlik bilgilerini belirtme
Hizmet sorumlusu kimlik bilgilerinizi belirtmenin birkaç yolu vardır. Ancak, güvenlik nedeniyle kimlik bilgilerini sağlayıcı bloğunda depolamamanızı öneririz. Bu teknik yalnızca eksiksizlik ve test amacıyla gösterilir.
- Ortam değişkenlerinde hizmet sorumlusu kimlik bilgilerini belirtme
- Terraform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme
Ortam değişkenlerinde hizmet sorumlusu kimlik bilgilerini belirtme
Hizmet sorumlusu oluşturduktan sonra ortam değişkenleri aracılığıyla Terraform'a kimlik bilgilerini belirtebilirsiniz.
~/.bashrc
Aşağıdaki ortam değişkenlerini ekleyerek dosyayı 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
~/.bashrc
için komutunu (veya kısaltılmış eşdeğerini. ~/.bashrc
) çalıştırınsource ~/.bashrc
. Ayrıca betiğin otomatik olarak çalışması için Cloud Shell'de çıkıp yeniden açabilirsiniz.. ~/.bashrc
Ortam değişkenleri ayarlandıktan sonra, değerlerini aşağıdaki gibi doğrulayabilirsiniz:
printenv | grep ^ARM*
Önemli noktalar:
- Terraform HCL'de ortam değişkenleriyle çalışma hakkında daha fazla bilgi için bkz . Terraform çalıştırmalarında ortam değişkenlerini okuma ve kullanma.
- Terraform yürütme planlarının oluşturulması ve uygulanması, hizmet sorumlusuyla ilişkili Azure aboneliğinde değişiklikler yapar. Bir Azure aboneliğinde oturum açtıysanız ve ortam değişkenleri ikinci bir Azure aboneliğine işaret ederse bu durum bazen kafa karıştırıcı olabilir. Şimdi açıklamak için aşağıdaki örneğe bakalım. İki Azure aboneliğiniz olduğunu varsayalım: SubA ve SubB. Ortam değişkenleri SubB'yi işaret ederken geçerli Azure aboneliği SubA (aracılığıyla
az account show
belirlenir) ise Terraform tarafından yapılan tüm değişiklikler SubB'de olur. Bu nedenle, değişikliklerinizi görüntülemek için Azure CLI komutlarını veya Azure PowerShell komutlarını çalıştırmak için SubB aboneliğinizde oturum açmanız gerekir.
Sonraki adımlar bölümüne atlayın
Terraform sağlayıcı bloğunda hizmet sorumlusu kimlik bilgilerini belirtme
Dikkat
Azure aboneliği kimlik bilgilerinizi bir Terraform yapılandırma dosyasında belirtme özelliği, özellikle test ederken kullanışlı olabilir. Ancak, kimlik bilgilerinin güvenilir olmayan kişiler tarafından görüntülenebilen bir düz metin dosyasında depolanması önerilmez.
Azure sağlayıcı bloğu, Azure aboneliğinizin kimlik doğrulama bilgilerini belirtmenize olanak tanıyan söz dizimini tanımlar.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.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