AZURE ÜZERİNDE TERRAFORM İLE ALT YAPI GELİŞTİRME – BÖLÜM 4 : AZURE İÇİN AUTHENTICATION
Azure üzerinde Terraform ile Altyapı Geliştirme makale serisine hoş geldiniz. Yazı dizisinin dördüncü bölümünde Terraform ile Azure’da kimlik doğrulama yöntemlerini göstereceğim.
Azure CLI kullanarak Azure’da kimlik doğrulama
Terraform yalnızca “az” CLI kullanılarak kimlik doğrulamayı destekler.
- İlk olarak, “az login” ile Azure CLI’de oturum açın
- Giriş yaptıktan sonra ve birden fazla aboneliğiniz varsa “az account list” ile listeleyebilir ve “az account set –subscription =” SUBSCRIPTION_ID” ile istediğinizi belirleyebilirsiniz.
- Azure CLI’de oturum açtığımıza göre, Terraform’u bu kimlik bilgilerini kullanacak şekilde yapılandırabiliriz.
- Terraform’u Azure CLI’de tanımlanan Varsayılan Aboneliği kullanacak şekilde yapılandırmak için aşağıdaki Sağlayıcı bloğunu kullanabilirsiniz.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=2.46.0"
}
}
}
# Configure the Microsoft Azure Provider
provider "azurerm" {
features {}
}
Terraform’u belirli bir Aboneliği kullanacak şekilde yapılandırmak da mümkündür.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=2.46.0"
}
}
}
# Configure the Microsoft Azure Provider
provider "azurerm" {
features {}
subscription_id = "SUBSCRIPTION_ID"
}
Terraform’u Azure Tenantlar arasında kullanmak istiyorsanız, Sağlayıcı bloğundaki Tenant Kimliği alanını aşağıda gösterildiği gibi yapılandırabilirsiniz.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=2.46.0"
}
}
}
# Configure the Microsoft Azure Provider
provider "azurerm" {
features {}
subscription_id = "SUBSCRIPTION_ID"
tenant_id = "TENANT_ID"
}
Yönetilen Kimlik (Managed Identity) kullanarak Azure’da kimlik doğrulama
Azure kaynakları için yönetilen kimlikler, Azure Active Directory (Azure AD) kimlik doğrulamasını destekleyen hizmetlerde kimlik doğrulaması yapmak için kullanılabilir. İki tür yönetilen kimlik vardır: sistem tarafından atanan ve kullanıcı tarafından atanan.
data "azurerm_subscription" "current" {}
<strong># Resources (VM, App Service, Storage, etc...)</strong>
resource "azurerm_virtual_machine" "test" {
<strong># Identity</strong>
identity {
type = "SystemAssigned"
}
}
<strong># Role Definition (Owner, Contributor, Reader, etc...)</strong>
data "azurerm_builtin_role_definition" "contributor" {
name = "Contributor"
}
<strong>
# Role Assignment</strong>
resource "azurerm_role_assignment" "test" {
name = "${azurerm_virtual_machine.test.name}"
scope = "${data.azurerm_subscription.primary.id}"
role_definition_id = "${data.azurerm_subscription.subscription.id}${data.azurerm_builtin_role_definition.contributor.id}"
principal_id = "${lookup(azurerm_virtual_machine.test.identity[0], "principal_id")}"
}
Service Principal ve İstemci Sertifikası kullanarak Azure’da kimlik doğrulama
Service Principal, Azure Abonelikleri içindeki kaynaklara erişim izni verilebilen Azure Active Directory içindeki bir güvenlik sorumlusudur. Service Principal ile kimlik doğrulaması yapmak için, Azure Active Directory içinde bir Client Secret veya İstemci Sertifikası kullanarak kimlik doğrulama aracı olarak kullanacağınız bir Uygulama nesnesi oluşturmanız gerekir.
Öncelikle, kimlik doğrulama için kullanılabilecek bir sertifika oluşturmanız gerekir. Bunun için “openssl” kullanacağım.
$ openssl req -newkey rsa:4096 -nodes -keyout "service-principal.key" -out "service-principal.csr"
Azure ile kimlik doğrulaması yapmak için kullanılabilecek bir PFX dosyası oluşturabilirsiniz.
$ openssl pkcs12 -export -out "service-principal.pfx" -inkey "service-principal.key" -in "service-principal.crt"
Artık Azure Portal’da Terraform uygulaması oluşturabiliriz.
Bu adımdan sonra sertifika yükle butonuna tıklayarak CRT sertifikanızı yükleyebilirsiniz.
Uygulamayı Azure Active Directory içinde oluşturduğumuza ve kimlik doğrulama için kullandığımız sertifikayı atadığımıza göre, artık Uygulamaya bağlı Service Principal aracılığıyla Aboneliği yönetmesi için izinler verebiliriz. Bunu yapmak için Aboneliği seçin, ardından Erişim Kontrolü’nü (IAM) tıklayın ve son olarak Ekle > Rol ataması tıklayın. İlk olarak, Service Principal için gereken uygun izinleri veren bir Rol belirtin. İkinci olarak, bu rolü atamak için Azure Active Directory’de oluşturulan Service Principal adını arayın ve seçin – ardından Kaydet’e basın.
Son olarak, değişkenleri sırayla veya Terraform’dan değişkenler kullanarak yapılandırmak mümkündür.
variable "client_certificate_path" {}
variable "client_certificate_password" {}
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=2.46.0"
}
}
}
# Configure the Microsoft Azure Provider
provider "azurerm" {
features {}
subscription_id = "SUBSCRIPTION_ID"
client_id = "CLIENT_ID"
client_certificate_path = var.client_certificate_path
client_certificate_password = var.client_certificate_password
tenant_id = "TENANT_ID"
}