Uncategorized

VMware vSphere ile Terraform Vault Kullanma

Merhaba, Terraform şirket içinden buluta kadar çok çeşitli ortamlarda altyapının kolayca sağlanmasını sağlayan okunabilir bir dil olarak tanımlayabiliriz. Kod olarak altyapı çabalarınızla karşılaşacağınız ilk engellerden biri, kimlik bilgileriyle güvenli bir şekilde nasıl başa çıkacağınızdır.

Terraform Kimlik Bilgilerini Düz Metin Olarak Depolama

Terraform koduyla vSphere ortamlarıyla nasıl etkileşime gireceğinizi ve bir variables.tf dosyasındaki kimlik bilgilerini sert bir şekilde kodlayarak vSphere ortamınıza nasıl bağlanabileceğinizi gösteren bir çok kaynak bulunmakta. Ancak, gerçekte açık güvenlik nedenleriyle kimlik bilgilerini düz metin görünümünde sabit kodlamak istemezsiniz. Aslında, genellikle, Terraform kodunu çalıştırmak için açık metne yerleştirilmiş SSO yöneticisi kimlik bilgilerini görürsünüz.

VMware vSphere ile Terraform Vault Sağlayıcısını Kullanma

Terraform, Bir Terraform sağlayıcısı ile Hashicorp Vault ile etkileşime girer. Sağlayıcı nedir? Terraform sağlayıcısı, Terraform’un uzak sistemlerle etkileşime girmesini sağlar.

Terraform Vault sağlayıcısının ayrıntılarını resmi Terraform sayfasından öğrenebilirsiniz:

Docs overview | hashicorp/vault | Terraform Registry

vSphere kimlik bilgileri için Hashicorp Vault’ı ayarlama

Ubuntu Server üzerinde Hashicorp Vault yüklemesi ve yapılandırmasını yapmanız gerekmekte. Yükleme ve yapılandırma işlemlerini gerçekleştirdiğiniz zaman pps Kasası’nda bir anahtar değeri deposu türü kimlik bilgisi oluşturmanız yeterlidir.

Anahtar değeri deposu kurulumunuzu Apps Kasası’nda aldıktan sonra, anahtar deposuna erişmek için bir erişim belirteci kullanabiliriz. Jeton nasıl elde edilir? Vault bulut sunucunuzda oturum açın ve aşağıdaki komutu kullanın:

vault token create 
vault token create -tls-skip-verify (if self-signed cert)

Hashicorp Kasası’nda jeton üretildiğine göre, merak edebilirsiniz. Belirteci açığa çıkarmaksızın kodda nasıl kullanırız? Aslında, bunu yapma şeklim, TF_VAR ortam değişkeni yoluyla bir ortam değişkeni ayarlamaktır. Ayarladığınız değişken adının önünde TF_VAR kullandığınızda, Terraform bunları okur ve her Terraform çalıştırmasındaki değerleri anlar. Bir Windows makinesinde çalışıyorsanız, TF_VAR_vault belirteç değişkenini ayarlamak için setx komutunu kullanabilirsiniz. Aşağıdaki koda baktığınızda bu daha mantıklı olacaktır. /m anahtarı, değişkeni yerel değişken yerine genel değişken olarak ayarlamasını söyler. Burada bir not olarak, Terraform’u çalıştırmak için kullanacağınız komut ortamında değişkeni ayarladığınızdan emin olmanız gerekir. Terraform terminalini çalıştırmak için PowerShell Core kullanıyorsanız, değişkeni kullanmak için aynı ortamı kullanın.

Bir ortam değişkeni kullanmanın en iyi yanı, belirtecin diskte düz metin olarak gösterilmemesi veya bir değişken dosyasında depolanmamasıdır.

Terraform’daki Hashicorp Kasa Sağlayıcısına Bağlanma

Terraform kodunuzda, Terraform Vault sağlayıcı bağlantısını aşağıdaki gibi ayarlayabilirsiniz. Gördüğünüz gibi, vault_token değişkenini kullanarak Vault sunucusunda kimlik doğrulaması yapıyoruz. Bu, yukarıda ayarlanan ortam değişkeninden çekilir.

provider "vault" {

  address         = "https://vault.cloud.local:8200/"
  skip_tls_verify = true
  token           = var.vault_token


}

Terraform Kasa Veri Blokları

Artık Vault sunucusuna bir bağlantımız olduğuna göre, Gerekli vCenter kimlik bilgileri için Vault sunucusunu sorgulamak için veri bloklarını kullanabiliriz. Ayrıca, aşağıda Terraform kodunun özelleştirme bölümünde ayarlanan Windows şifresini çekmek için bir veri bloğu kullanıyorum.

data "vault_generic_secret" "vcenterpass" {
  path = "vcenter/vcenter_pass"
}

data "vault_generic_secret" "windows_pass" {
  path = "windows/windows_pass"
}

vSphere sağlayıcınızda, parola için aşağıdaki kodu kullanacaksınız. Aşağıdakileri vCenter parolası için tanımlanan veri bloklarınızla eşleşecek şekilde özelleştireceğinizi unutmayın.

data.vault_generic_secret.vcenterpass.data["password"]

Terraform vSphere sağlayıcısı ilk olarak listelenmiş olsa bile, Terraform’un ne zaman çalıştığını bilecek kadar akıllı olduğunu, kimlik bilgilerini Vault’tan alması ve bunları vSphere sağlayıcı bağlantısı için kullanması gerektiğini unutmayın.

Ayrıca, kodumda sadece vCenter kullanıcı adını kodluyorum ve vCenter Server düz metindir, ancak bu değerleri de saklamanızı ve bunları Hashicorp Vault’ta saklamanızı engelleyen hiçbir şey yoktur.

Terraform Init, Planlayın ve Uygulayın

Vault ve vSphere sağlayıcılarını içeren Terraform kodunuzu çalıştırmadan önce, Terraform kodunu Vault ve vSphere sağlayıcılarıyla çalıştırmak için gereken sağlayıcı eklentilerini aşağı çekmek için Terraform Init komutunu çalıştırdığınızdan emin olun.

Eklentileri çektikten sonra, Terraform planınızı çalıştırabilmeli ve kodun vCenter Server‘a başarıyla bağlanabildiğini doğrulayabilmelisiniz. Değişkenin tanımlanmamış olmasıyla ilgili bir hata alırsanız, değişkeni variables.tf dosyanızda tanımladığınızdan emin olun.

VMware vSphere ile Terraform Vault Sağlayıcısı’nı kullanmak, vCenter ile güvenli bir şekilde etkileşim kurmak için altyapınızı kod olarak güvence altına almanın harika bir yoludur. Düz metin parolalarını kesinlikle kullanabilirsiniz, ancak kimlik bilgilerine sahip düz dosyalar saldırganlara ortamınızı tehlikeye atmaları için ihtiyaç duydukları her şeyi sağlayabildiğinden, bunu yapmak son derece tehlikelidir. Umarım, gönderide ortaya konan adımlar Terraform, Vault ve vSphere otomasyonu ile çalışmaya zorlanan diğer kişilere yardımcı olacaktır.

Cengiz YILMAZ

5 Yıldır IT Sektörü içerisindeyim, Microsoft ürünleri ve Sanallaştırma teknoloji ile ilgilenmekteyim. 2021 yılı içerisinde VMware tarafından vExpert ve vExpert Pro olarak seçildim. Cengiz YILMAZ | vExpert, MCT |

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu