{"id":39162,"date":"2026-02-15T18:00:42","date_gmt":"2026-02-15T15:00:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/"},"modified":"2026-02-15T18:00:42","modified_gmt":"2026-02-15T15:00:42","slug":"terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/","title":{"rendered":"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek"},"content":{"rendered":"<h2>Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, yaz\u0131l\u0131m tedarik zinciri g\u00fcvenli\u011fi her zamankinden daha kritik bir hale gelmi\u015ftir. A\u00e7\u0131k kaynak ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n yayg\u0131n kullan\u0131m\u0131, uygulamalar\u0131n i\u00e7erdi\u011fi bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n takibini zorunlu k\u0131lmaktad\u0131r. \u0130\u015fte tam bu noktada, yaz\u0131l\u0131m bile\u015fen listesi (SBOM) ve g\u00fcvenlik a\u00e7\u0131\u011f\u0131 y\u00f6netimi i\u00e7in g\u00fc\u00e7l\u00fc bir platform olan DependencyTrack devreye girer. Ancak, DependencyTrack&#8217;\u0131n da\u011f\u0131t\u0131m\u0131 ve yap\u0131land\u0131rmas\u0131 manuel olarak yap\u0131ld\u0131\u011f\u0131nda zaman al\u0131c\u0131 ve hataya a\u00e7\u0131k olabilir. Bu makalede, altyap\u0131y\u0131 kod olarak (IaC) y\u00f6netmenin pop\u00fcler bir arac\u0131 olan Terraform&#8217;u kullanarak DependencyTrack kurulumunu ve yap\u0131land\u0131rmas\u0131n\u0131 nas\u0131l otomatikle\u015ftirece\u011fimizi detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Bu sayede, g\u00fcvenlik duru\u015funuzu g\u00fc\u00e7lendirirken operasyonel verimlili\u011finizi art\u0131rabileceksiniz.<\/p>\n<h3>1. DependencyTrack ve Otomasyonun \u00d6nemi<\/h3>\n<p>Yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde h\u0131z ve verimlilik aray\u0131\u015f\u0131, beraberinde g\u00fcvenlik risklerini de getirebilir. Binlerce ba\u011f\u0131ml\u0131l\u0131k i\u00e7eren modern uygulamalar\u0131n her bir bile\u015fenini manuel olarak takip etmek imkans\u0131zd\u0131r.<\/p>\n<h4>1.1. DependencyTrack Nedir?<\/h4>\n<p>DependencyTrack, yaz\u0131l\u0131m bile\u015fen listelerini (SBOM) analiz ederek, bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 (CVE&#8217;ler) ve lisans uyumsuzluklar\u0131n\u0131 proaktif bir \u015fekilde tespit eden ve y\u00f6neten bir a\u00e7\u0131k kaynak platformudur. OWASP projesi kapsam\u0131nda geli\u015ftirilen DependencyTrack, geli\u015ftiricilerin ve g\u00fcvenlik ekiplerinin yaz\u0131l\u0131m tedarik zinciri risklerini anlamalar\u0131na ve azaltmalar\u0131na yard\u0131mc\u0131 olur. Projelerinizin kulland\u0131\u011f\u0131 t\u00fcm k\u00fct\u00fcphanelerin ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n bir envanterini \u00e7\u0131kar\u0131r, bu ba\u011f\u0131ml\u0131l\u0131klar\u0131n bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 s\u00fcrekli olarak izlenmesini sa\u011flar ve riskleri g\u00f6rselle\u015ftirir.<\/p>\n<h4>1.2. Yaz\u0131l\u0131m Tedarik Zinciri G\u00fcvenli\u011fi<\/h4>\n<p>Yaz\u0131l\u0131m tedarik zinciri g\u00fcvenli\u011fi, bir yaz\u0131l\u0131m\u0131n geli\u015ftirilmesinden da\u011f\u0131t\u0131m\u0131na kadar ge\u00e7en t\u00fcm a\u015famalardaki riskleri kapsar. \u00dc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphaneler, a\u00e7\u0131k kaynak bile\u015fenleri, geli\u015ftirme ara\u00e7lar\u0131 ve altyap\u0131 bile\u015fenleri bu zincirin halkalar\u0131n\u0131 olu\u015fturur. Bir zincir en zay\u0131f halkas\u0131 kadar g\u00fc\u00e7l\u00fc oldu\u011fu i\u00e7in, bu bile\u015fenlerdeki herhangi bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 t\u00fcm sistemi riske atabilir. DependencyTrack gibi ara\u00e7lar, bu zincirdeki zay\u0131fl\u0131klar\u0131 erken a\u015famada tespit ederek olas\u0131 sald\u0131r\u0131 y\u00fczeyini daraltmaya yard\u0131mc\u0131 olur.<\/p>\n<h4>1.3. Neden Otomasyon?<\/h4>\n<p>Manuel kurulum ve yap\u0131land\u0131rma s\u00fcre\u00e7leri, insan hatas\u0131na a\u00e7\u0131k olmas\u0131n\u0131n yan\u0131 s\u0131ra, tekrarlanabilirlik ve tutarl\u0131l\u0131k sorunlar\u0131 yarat\u0131r. \u00d6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli veya s\u0131k g\u00fcncellenen sistemlerde bu durum, ciddi operasyonel y\u00fck ve g\u00fcvenlik a\u00e7\u0131klar\u0131 anlam\u0131na gelebilir. Otomasyon, bu sorunlar\u0131 ortadan kald\u0131rarak:<br \/>\n*   <strong>Tutarl\u0131l\u0131k:<\/strong> Her da\u011f\u0131t\u0131m\u0131n ayn\u0131 konfig\u00fcrasyona sahip olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>H\u0131z:<\/strong> Kurulum ve g\u00fcncelleme s\u00fcrelerini dramatik \u015fekilde azalt\u0131r.<br \/>\n*   <strong>Tekrarlanabilirlik:<\/strong> Geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 aras\u0131nda kolayca ge\u00e7i\u015f yapmay\u0131 m\u00fcmk\u00fcn k\u0131lar.<br \/>\n*   <strong>Hata Azaltma:<\/strong> Manuel hatalar\u0131 ortadan kald\u0131r\u0131r.<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> G\u00fcvenlik politikalar\u0131n\u0131n ve en iyi uygulamalar\u0131n otomatik olarak uygulanmas\u0131n\u0131 sa\u011flar.<br \/>\nTerraform ile DependencyTrack&#8217;\u0131 otomatikle\u015ftirmek, bu avantajlar\u0131 g\u00fcvenlik altyap\u0131n\u0131za ta\u015f\u0131man\u0131n en etkili yollar\u0131ndan biridir.<\/p>\n<h3>2. Terraform&#8217;a Giri\u015f ve Temel Kavramlar<\/h3>\n<p>Terraform, HashiCorp taraf\u0131ndan geli\u015ftirilen, altyap\u0131y\u0131 kod olarak (Infrastructure as Code &#8211; IaC) tan\u0131mlaman\u0131z\u0131 ve sa\u011flaman\u0131z\u0131 sa\u011flayan a\u00e7\u0131k kaynakl\u0131 bir ara\u00e7t\u0131r.<\/p>\n<h4>2.1. Terraform Nedir?<\/h4>\n<p>Terraform, altyap\u0131 kaynaklar\u0131n\u0131 (sanal makineler, a\u011flar, veritabanlar\u0131, depolama vb.) bildirimsel bir s\u00f6zdizimi kullanarak tan\u0131mlaman\u0131za olanak tan\u0131r. Bu tan\u0131mlamalar, <code>HCL<\/code> (HashiCorp Configuration Language) ad\u0131 verilen okunabilir bir dilde yaz\u0131l\u0131r. Terraform, bu yap\u0131land\u0131rma dosyalar\u0131n\u0131 okur, mevcut altyap\u0131n\u0131z\u0131n durumunu \u00f6\u011frenir ve tan\u0131mlad\u0131\u011f\u0131n\u0131z duruma ula\u015fmak i\u00e7in gerekli de\u011fi\u015fiklikleri planlar ve uygular. Bu sayede, altyap\u0131n\u0131z\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc ba\u015ftan sona y\u00f6netebilirsiniz.<\/p>\n<h4>2.2. IaC ve Avantajlar\u0131<\/h4>\n<p>Altyap\u0131y\u0131 kod olarak (IaC), altyap\u0131 y\u00f6netimi i\u00e7in geleneksel manuel s\u00fcre\u00e7lerin yerine, s\u00fcr\u00fcm kontrol sistemleriyle y\u00f6netilebilen, test edilebilir ve otomatikle\u015ftirilebilir kod dosyalar\u0131n\u0131 kullanma prensibidir. IaC&#8217;nin temel avantajlar\u0131 \u015funlard\u0131r:<br \/>\n*   <strong>S\u00fcr\u00fcm Kontrol\u00fc:<\/strong> Altyap\u0131 de\u011fi\u015fiklikleri kod gibi izlenir, geri al\u0131nabilir ve denetlenebilir.<br \/>\n*   <strong>Tekrarlanabilirlik:<\/strong> Ayn\u0131 altyap\u0131y\u0131 farkl\u0131 ortamlarda veya b\u00f6lgelerde kolayca olu\u015fturabilirsiniz.<br \/>\n*   <strong>H\u0131z ve \u00c7eviklik:<\/strong> Altyap\u0131 da\u011f\u0131t\u0131m\u0131n\u0131 h\u0131zland\u0131r\u0131r ve yeni \u00f6zelliklerin daha h\u0131zl\u0131 devreye al\u0131nmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Maliyet Azaltma:<\/strong> Operasyonel hatalar\u0131 ve manuel i\u015f y\u00fck\u00fcn\u00fc azaltarak maliyet tasarrufu sa\u011flar.<\/p>\n<h4>2.3. Terraform Temelleri: Provider&#8217;lar, Kaynaklar, Mod\u00fcller<\/h4>\n<p>Terraform&#8217;un \u00e7al\u0131\u015fma prensibi birka\u00e7 temel kavram \u00fczerine kuruludur:<br \/>\n*   <strong>Provider&#8217;lar:<\/strong> Terraform&#8217;un farkl\u0131 bulut sa\u011flay\u0131c\u0131lar\u0131 (AWS, Azure, GCP) veya di\u011fer hizmetlerle (Kubernetes, Docker, Datadog) etkile\u015fim kurmas\u0131n\u0131 sa\u011flayan eklentilerdir. Her provider, belirli bir hizmetin API&#8217;si ile ileti\u015fim kurar. \u00d6rne\u011fin, AWS provider&#8217;\u0131 EC2 instance&#8217;lar\u0131 veya S3 bucket&#8217;lar\u0131 olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong>Kaynaklar (Resources):<\/strong> Provider&#8217;lar arac\u0131l\u0131\u011f\u0131yla y\u00f6netilen altyap\u0131 bile\u015fenleridir. Her bir kaynak blo\u011fu, belirli bir altyap\u0131 nesnesini (\u00f6rne\u011fin, <code>aws_instance<\/code>, <code>azurerm_virtual_machine<\/code>, <code>docker_container<\/code>) tan\u0131mlar ve yap\u0131land\u0131r\u0131r.<br \/>\n*   <strong>Mod\u00fcller (Modules):<\/strong> Terraform kodunu d\u00fczenlemenin ve yeniden kullanman\u0131n bir yoludur. Bir mod\u00fcl, bir veya daha fazla kaynak tan\u0131m\u0131n\u0131 kapsayan bir koleksiyondur. Mod\u00fcller sayesinde karma\u015f\u0131k altyap\u0131lar\u0131 daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir ve tekrar kullan\u0131labilir par\u00e7alara b\u00f6lebilirsiniz.<\/p>\n<h3>3. DependencyTrack Kurulum Ortam\u0131n\u0131n Haz\u0131rlanmas\u0131<\/h3>\n<p>DependencyTrack&#8217;\u0131 Terraform ile da\u011f\u0131tmadan \u00f6nce, gerekli \u00f6n ko\u015fullar\u0131n yerine getirildi\u011finden emin olmal\u0131y\u0131z.<\/p>\n<h4>3.1. Gereksinimler: Docker, Veritaban\u0131 (PostgreSQL \u00f6nerilir)<\/h4>\n<p>DependencyTrack, Docker konteynerleri arac\u0131l\u0131\u011f\u0131yla da\u011f\u0131t\u0131lmak \u00fczere tasarlanm\u0131\u015ft\u0131r. Bu nedenle, hedef sunucunuzda Docker ve Docker Compose&#8217;un kurulu olmas\u0131 gerekmektedir. Veritaban\u0131 olarak PostgreSQL veya H2 (k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli testler i\u00e7in) kullanabilir. \u00dcretim ortamlar\u0131 i\u00e7in PostgreSQL \u015fiddetle tavsiye edilir.<\/p>\n<h4>3.2. Terraform Kurulumu<\/h4>\n<p>Terraform&#8217;u sisteminize kurmak olduk\u00e7a basittir. HashiCorp&#8217;un resmi web sitesinden (<code>releases.hashicorp.com\/terraform\/<\/code>) i\u015fletim sisteminize uygun paketi indirip PATH&#8217;inize eklemeniz yeterlidir. Kurulumu do\u011frulama i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">terraform --version<\/pre>\n<p><\/code><\/p>\n<h4>3.3. Cloud Provider Se\u00e7imi (AWS, Azure, GCP veya On-Prem)<\/h4>\n<p>DependencyTrack'\u0131 hangi ortamda bar\u0131nd\u0131raca\u011f\u0131n\u0131za karar vermelisiniz. Terraform, ba\u015fl\u0131ca bulut sa\u011flay\u0131c\u0131lar\u0131n\u0131 (AWS, Azure, GCP) destekledi\u011fi gibi, Docker veya Kubernetes gibi on-premise ortamlar\u0131 da y\u00f6netebilir. Se\u00e7ti\u011finiz sa\u011flay\u0131c\u0131ya g\u00f6re Terraform yap\u0131land\u0131rman\u0131z de\u011fi\u015fiklik g\u00f6sterecektir. Bu makalede, \u00f6rneklerimizde AWS'yi temel alaca\u011f\u0131z, ancak konseptler di\u011fer sa\u011flay\u0131c\u0131lara da kolayca uyarlanabilir.<\/p>\n<h3>4. Terraform ile Temel DependencyTrack Altyap\u0131s\u0131n\u0131n Olu\u015fturulmas\u0131<\/h3>\n<p>\u015eimdi Terraform ile DependencyTrack i\u00e7in gerekli altyap\u0131 bile\u015fenlerini olu\u015fturmaya ba\u015flayabiliriz.<\/p>\n<h4>4.1. Veritaban\u0131 Kaynaklar\u0131n\u0131n Tan\u0131mlanmas\u0131 (\u00d6rn: AWS RDS PostgreSQL)<\/h4>\n<p>\u00dcretim ortamlar\u0131 i\u00e7in y\u00f6netilen bir veritaban\u0131 hizmeti kullanmak en iyi yakla\u015f\u0131md\u0131r. AWS RDS PostgreSQL \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-terraform\"># main.tf\nprovider \"aws\" {\n  region = \"us-east-1\"\n}\n\nresource \"aws_db_instance\" \"dependencytrack_db\" {\n  allocated_storage    = 20\n  engine               = \"postgres\"\n  engine_version       = \"13.6\"\n  instance_class       = \"db.t3.micro\"\n  name                 = \"dependencytrack\"\n  username             = \"dtadmin\"\n  password             = \"SuperSecretPassword123!\" # \u00dcretim ortam\u0131nda AWS Secrets Manager kullan\u0131n!\n  skip_final_snapshot  = true\n  publicly_accessible  = false\n  vpc_security_group_ids = [aws_security_group.db_sg.id]\n  db_subnet_group_name = aws_db_subnet_group.default.name\n  tags = {\n    Name = \"DependencyTrack-DB\"\n  }\n}\n\nresource \"aws_db_subnet_group\" \"default\" {\n  # Mevcut VPC subnet ID'lerinizi buraya ekleyin\n  subnet_ids = [\"subnet-0abcdef1234567890\", \"subnet-0fedcba9876543210\"] \n  tags = {\n    Name = \"DependencyTrack-DB-SubnetGroup\"\n  }\n}<\/pre>\n<p><\/code><\/p>\n<h4>4.2. Compute Kaynaklar\u0131n\u0131n Tan\u0131mlanmas\u0131 (\u00d6rn: EC2, Azure VM veya Docker Compose i\u00e7in EC2 User Data)<\/h4>\n<p>DependencyTrack uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131racak sunucuyu veya konteyner ortam\u0131n\u0131 olu\u015fturmal\u0131y\u0131z. Basit bir EC2 \u00f6rne\u011fi ve <code>user_data<\/code> ile Docker Compose kurulumu:<\/p>\n<pre><code class=\"language-terraform\">resource \"aws_instance\" \"dependencytrack_app\" {\n  ami           = \"ami-0abcdef1234567890\" # Ubuntu 20.04 LTS veya benzeri bir AMI ID\n  instance_type = \"t3.medium\"\n  key_name      = \"my-ssh-key\" # SSH eri\u015fimi i\u00e7in anahtar\u0131n\u0131z\n  vpc_security_group_ids = [aws_security_group.app_sg.id]\n  user_data = <<-EOF\n              #!\/bin\/bash\n              sudo apt-get update -y\n              sudo apt-get install -y docker.io docker-compose\n              sudo systemctl start docker\n              sudo systemctl enable docker\n              sudo usermod -aG docker ubuntu\n\n              # DependencyTrack Docker Compose dosyas\u0131\n              cat << 'EOT' > \/home\/ubuntu\/docker-compose.yml\n              version: \"3.8\"\n              services:\n                database:\n                  image: postgres:13-alpine\n                  environment:\n                    - POSTGRES_USER=${DB_USER}\n                    - POSTGRES_PASSWORD=${DB_PASSWORD}\n                    - POSTGRES_DB=${DB_NAME}\n                  volumes:\n                    - .\/data\/database:\/var\/lib\/postgresql\/data\n                  restart: unless-stopped\n                  networks:\n                    - dtrack-network\n                  # \u00dcretim ortam\u0131nda bu servisi kullanmak yerine AWS RDS gibi y\u00f6netilen bir DB kullan\u0131n!\n                  # Bu \u00f6rnekte, harici RDS'ye ba\u011flanaca\u011f\u0131z, bu y\u00fczden bu servis asl\u0131nda kullan\u0131lmayacak.\n                  # Sadece Docker Compose dosyas\u0131n\u0131n tamamlanmas\u0131 i\u00e7in burada b\u0131rak\u0131ld\u0131.\n\n                dependencytrack:\n                  image: dependencytrack\/apiserver:4.9.0 # G\u00fcncel s\u00fcr\u00fcm\u00fc kontrol edin\n                  depends_on:\n                    - database\n                  environment:\n                    - ALPINE_DATABASE_MODE=external\n                    - ALPINE_DATABASE_URL=jdbc:postgresql:\/\/${aws_db_instance.dependencytrack_db.address}:5432\/${aws_db_instance.dependencytrack_db.name}\n                    - ALPINE_DATABASE_USERNAME=${aws_db_instance.dependencytrack_db.username}\n                    - ALPINE_DATABASE_PASSWORD=${aws_db_instance.dependencytrack_db.password}\n                    - ALPINE_WORKER_THREADS=4\n                    - ALPINE_METRICS_ENABLED=true\n                  ports:\n                    - \"8080:8080\"\n                  volumes:\n                    - .\/data\/dependencytrack:\/data\n                  restart: unless-stopped\n                  networks:\n                    - dtrack-network\n\n                frontend:\n                  image: dependencytrack\/frontend:4.9.0 # G\u00fcncel s\u00fcr\u00fcm\u00fc kontrol edin\n                  depends_on:\n                    - dependencytrack\n                  ports:\n                    - \"80:8080\" # Frontend i\u00e7in 80 portunu a\u00e7\u0131yoruz\n                  environment:\n                    - API_BASE_URL=\/api\n                  restart: unless-stopped\n                  networks:\n                    - dtrack-network\n\n              networks:\n                dtrack-network:\n                  driver: bridge\n              EOT\n\n              # Docker Compose dosyas\u0131ndaki placeholder'lar\u0131 ger\u00e7ek de\u011ferlerle de\u011fi\u015ftir\n              sed -i \"s\/\\${DB_USER}\/${aws_db_instance.dependencytrack_db.username}\/g\" \/home\/ubuntu\/docker-compose.yml\n              sed -i \"s\/\\${DB_PASSWORD}\/${aws_db_instance.dependencytrack_db.password}\/g\" \/home\/ubuntu\/docker-compose.yml\n              sed -i \"s\/\\${DB_NAME}\/${aws_db_instance.dependencytrack_db.name}\/g\" \/home\/ubuntu\/docker-compose.yml\n\n              # Docker Compose'u ba\u015flat\n              docker-compose -f \/home\/ubuntu\/docker-compose.yml up -d\n              EOF\n  tags = {\n    Name = \"DependencyTrack-App\"\n  }\n}<\/pre>\n<p><\/code><br \/>\n*Not: Yukar\u0131daki <code>user_data<\/code> script'i, <code>aws_db_instance<\/code> kaynaklar\u0131n\u0131n \u00e7\u0131kt\u0131lar\u0131ndan dinamik olarak veritaban\u0131 ba\u011flant\u0131 bilgilerini almaktad\u0131r. <code>ami<\/code> ve <code>key_name<\/code> de\u011ferlerini kendi ortam\u0131n\u0131za g\u00f6re g\u00fcncellemeyi unutmay\u0131n.*<\/p>\n<h4>4.3. G\u00fcvenlik Gruplar\u0131 ve A\u011f Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>A\u011f g\u00fcvenli\u011fi kritik \u00f6neme sahiptir. Veritaban\u0131 ve uygulama sunucular\u0131 i\u00e7in g\u00fcvenlik gruplar\u0131 tan\u0131mlayal\u0131m:<\/p>\n<pre><code class=\"language-terraform\">resource \"aws_security_group\" \"db_sg\" {\n  name        = \"dependencytrack-db-sg\"\n  description = \"Allow inbound traffic to DependencyTrack DB\"\n  vpc_id      = \"vpc-0abcdef1234567890\" # Kendi VPC ID'nizi girin\n\n  ingress {\n    from_port   = 5432\n    to_port     = 5432\n    protocol    = \"tcp\"\n    security_groups = [aws_security_group.app_sg.id] # Sadece uygulama sunucusundan eri\u015fime izin ver\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0\/0\"]\n  }\n  tags = {\n    Name = \"DependencyTrack-DB-SG\"\n  }\n}\n\nresource \"aws_security_group\" \"app_sg\" {\n  name        = \"dependencytrack-app-sg\"\n  description = \"Allow inbound traffic to DependencyTrack App\"\n  vpc_id      = \"vpc-0abcdef1234567890\" # Kendi VPC ID'nizi girin\n\n  ingress {\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0\/0\"] # HTTP eri\u015fimine izin ver (\u00dcretimde daha k\u0131s\u0131tl\u0131 olmal\u0131!)\n  }\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"YOUR_IP_ADDRESS\/32\"] # SSH eri\u015fimine sadece kendi IP'nizden izin ver\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0\/0\"]\n  }\n  tags = {\n    Name = \"DependencyTrack-App-SG\"\n  }\n}<\/pre>\n<p><\/code><\/p>\n<h3>5. DependencyTrack Uygulamas\u0131n\u0131n Da\u011f\u0131t\u0131m\u0131 ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Temel altyap\u0131 haz\u0131rland\u0131ktan sonra, DependencyTrack uygulamas\u0131n\u0131n kendisini da\u011f\u0131tma ve ilk yap\u0131land\u0131rmalar\u0131n\u0131 yapma zaman\u0131.<\/p>\n<h4>5.1. Docker Compose veya Kubernetes ile Da\u011f\u0131t\u0131m Stratejileri<\/h4>\n<p>Yukar\u0131daki \u00f6rnekte <code>user_data<\/code> ile Docker Compose kullanarak basit bir da\u011f\u0131t\u0131m g\u00f6sterdik. \u00dcretim ortamlar\u0131 i\u00e7in daha sa\u011flam ve \u00f6l\u00e7eklenebilir \u00e7\u00f6z\u00fcmler tercih edilmelidir:<br \/>\n*   <strong>Kubernetes:<\/strong> Terraform, Kubernetes k\u00fcmelerini (EKS, AKS, GKE) olu\u015fturabilir ve <code>kubernetes<\/code> provider'\u0131 ile bu k\u00fcmeler \u00fczerinde DependencyTrack'\u0131n Helm chart'\u0131n\u0131 veya Kubernetes manifest'lerini da\u011f\u0131tabilirsiniz. Bu, y\u00fcksek kullan\u0131labilirlik ve \u00f6l\u00e7eklenebilirlik sa\u011flar.<br \/>\n*   <strong>AWS ECS\/Fargate:<\/strong> Terraform ile ECS k\u00fcmeleri, g\u00f6rev tan\u0131mlar\u0131 ve servisler olu\u015fturarak DependencyTrack konteynerlerini y\u00f6netebilirsiniz. Bu, sunucusuz konteyner y\u00f6netimi ile operasyonel y\u00fck\u00fc azalt\u0131r.<\/p>\n<h4>5.2. DependencyTrack Ayarlar\u0131n\u0131n Terraform ile Y\u00f6netimi (API Key, Projeler, Politikalar)<\/h4>\n<p>Terraform, altyap\u0131 kaynaklar\u0131n\u0131 y\u00f6netmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. DependencyTrack'\u0131n *i\u00e7indeki* kaynaklar\u0131 (kullan\u0131c\u0131lar, API anahtarlar\u0131, projeler, politikalar) do\u011frudan y\u00f6netmek i\u00e7in resmi bir Terraform provider'\u0131 bulunmamaktad\u0131r. Ancak bu, otomasyonun m\u00fcmk\u00fcn olmad\u0131\u011f\u0131 anlam\u0131na gelmez:<br \/>\n*   <strong><code>null_resource<\/code> ve <code>local-exec<\/code>:<\/strong> Terraform'un <code>null_resource<\/code> kayna\u011f\u0131n\u0131 <code>local-exec<\/code> provisioner'\u0131 ile birle\u015ftirerek, DependencyTrack API'sine <code>curl<\/code> komutlar\u0131 veya Python\/Go betikleri arac\u0131l\u0131\u011f\u0131yla \u00e7a\u011fr\u0131lar yapabilirsiniz. Bu, Terraform'un ya\u015fam d\u00f6ng\u00fcs\u00fc i\u00e7inde DependencyTrack i\u00e7indeki kaynaklar\u0131 olu\u015fturman\u0131za veya g\u00fcncellemenize olanak tan\u0131r.<br \/>\n*   <strong>Custom Provider:<\/strong> Daha geli\u015fmi\u015f senaryolar i\u00e7in, DependencyTrack API'sini kullanan \u00f6zel bir Terraform provider'\u0131 geli\u015ftirebilirsiniz. Bu, daha entegre ve s\u00fcrd\u00fcr\u00fclebilir bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<p><strong>\u00d6rnek: <code>local-exec<\/code> ile API Anahtar\u0131 Olu\u015fturma (Basitle\u015ftirilmi\u015f)<\/strong><\/p>\n<pre><code class=\"language-terraform\">resource \"null_resource\" \"create_dtrack_api_key\" {\n  depends_on = [aws_instance.dependencytrack_app] # Uygulama aya\u011fa kalkt\u0131ktan sonra \u00e7al\u0131\u015ft\u0131r\n\n  provisioner \"local-exec\" {\n    # DependencyTrack'\u0131n ilk admin kullan\u0131c\u0131s\u0131 ve \u015fifresi ile oturum a\u00e7\u0131p bir API anahtar\u0131 olu\u015ftur\n    # Bu \u00f6rnek, DTrack'\u0131n varsay\u0131lan admin\/admin \u015fifresiyle \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 varsayar.\n    # \u00dcretim ortam\u0131nda bu \u015fifreyi de\u011fi\u015ftirmeli veya daha g\u00fcvenli bir y\u00f6ntem kullanmal\u0131s\u0131n\u0131z.\n    command = <<-EOF\n              sleep 60 # DependencyTrack'\u0131n tamamen ba\u015flamas\u0131 i\u00e7in bekle\n              DTRACK_URL=\"http:\/\/${aws_instance.dependencytrack_app.public_ip}:8080\"\n              ADMIN_USERNAME=\"admin\"\n              ADMIN_PASSWORD=\"admin\"\n\n              # Admin token al\n              ADMIN_TOKEN=$(curl -s -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" \\\n                  -d \"username=${ADMIN_USERNAME}&#038;password=${ADMIN_PASSWORD}\" \\\n                  \"${DTRACK_URL}\/api\/v1\/user\/login\" | jq -r '.token')\n\n              if [ -z \"$ADMIN_TOKEN\" ] || [ \"$ADMIN_TOKEN\" == \"null\" ]; then\n                  echo \"ERROR: Could not get admin token. Check DependencyTrack URL and credentials.\"\n                  exit 1\n              fi\n\n              # Yeni bir API anahtar\u0131 olu\u015ftur\n              API_KEY_NAME=\"TerraformManagedKey\"\n              API_KEY=$(curl -s -X PUT -H \"X-Api-Key: ${ADMIN_TOKEN}\" \\\n                  -H \"Content-Type: application\/json\" \\\n                  -d \"{ \\\"description\\\": \\\"${API_KEY_NAME}\\\" }\" \\\n                  \"${DTRACK_URL}\/api\/v1\/user\/key\" | jq -r '.key')\n\n              if [ -z \"$API_KEY\" ] || [ \"$API_KEY\" == \"null\" ]; then\n                  echo \"ERROR: Could not create API key.\"\n                  exit 1\n              fi\n\n              echo \"DependencyTrack API Key created: ${API_KEY}\"\n              echo \"${API_KEY}\" > dtrack_api_key.txt\n              EOF\n  }\n}\n\noutput \"dependencytrack_api_key\" {\n  value = file(\"dtrack_api_key.txt\")\n  sensitive = true\n}<\/pre>\n<p><\/code><br \/>\n*Bu \u00f6rnek, <code>jq<\/code> arac\u0131n\u0131n sunucuda kurulu oldu\u011funu varsayar ve hassas bilgileri (API anahtar\u0131) bir dosyaya yazar. \u00dcretim ortam\u0131nda bu anahtar\u0131 AWS Secrets Manager gibi g\u00fcvenli bir yere kaydetmeli ve <code>sensitive = true<\/code> kullanmal\u0131s\u0131n\u0131z.*<\/p>\n<h4>5.3. Uygulama \u0130\u00e7i Kaynaklar\u0131n Y\u00f6netimi (\u00d6rn: <code>dtrack-client<\/code> veya custom provider)<\/h4>\n<p>Yukar\u0131daki <code>local-exec<\/code> yakla\u015f\u0131m\u0131yla API anahtarlar\u0131 olu\u015fturabildi\u011fimiz gibi, ayn\u0131 y\u00f6ntemle DependencyTrack API'sini kullanarak projeler, bile\u015fenler ve politikalar gibi di\u011fer uygulama i\u00e7i kaynaklar\u0131 da y\u00f6netebiliriz. Bu, CI\/CD boru hatlar\u0131n\u0131zda SBOM'lar\u0131 otomatik olarak y\u00fcklemek veya belirli g\u00fcvenlik politikalar\u0131n\u0131 uygulamak i\u00e7in temel olu\u015fturur.<\/p>\n<h3>6. Geli\u015fmi\u015f Yap\u0131land\u0131rma ve Entegrasyonlar<\/h3>\n<p>DependencyTrack'\u0131n yeteneklerini daha da art\u0131rmak i\u00e7in geli\u015fmi\u015f yap\u0131land\u0131rmalar ve di\u011fer sistemlerle entegrasyonlar yap\u0131labilir.<\/p>\n<h4>6.1. LDAP\/SSO Entegrasyonu<\/h4>\n<p>Kurumsal ortamlarda, kullan\u0131c\u0131 kimlik do\u011frulamas\u0131n\u0131 mevcut LDAP dizinleri veya Tek Oturum A\u00e7ma (SSO) \u00e7\u00f6z\u00fcmleri (\u00f6rne\u011fin Okta, Azure AD) ile entegre etmek yayg\u0131n bir gereksinimdir. DependencyTrack, LDAP ve OIDC (OpenID Connect) tabanl\u0131 SSO'yu destekler. Bu entegrasyonlar, genellikle DependencyTrack'\u0131n <code>application.properties<\/code> dosyas\u0131 \u00fczerinden veya web aray\u00fcz\u00fcnden yap\u0131l\u0131r. Terraform ile bu yap\u0131land\u0131rma dosyalar\u0131n\u0131 dinamik olarak olu\u015fturup sunucuya da\u011f\u0131tabilirsiniz.<\/p>\n<h4>6.2. Bildirim Mekanizmalar\u0131 (Slack, Microsoft Teams)<\/h4>\n<p>G\u00fcvenlik a\u00e7\u0131klar\u0131 tespit edildi\u011finde ilgili ekiplerin h\u0131zl\u0131ca bilgilendirilmesi hayati \u00f6nem ta\u015f\u0131r. DependencyTrack, Slack, Microsoft Teams, Webhook'lar ve e-posta gibi \u00e7e\u015fitli bildirim mekanizmalar\u0131n\u0131 destekler. Bu bildirim kurallar\u0131 ve entegrasyon ayarlar\u0131 da yine <code>application.properties<\/code> dosyas\u0131 veya API arac\u0131l\u0131\u011f\u0131yla yap\u0131land\u0131r\u0131labilir. Terraform, bu ayarlar\u0131 <code>user_data<\/code> script'i i\u00e7inde veya bir yap\u0131land\u0131rma dosyas\u0131 \u015fablonu (template) kullanarak otomatikle\u015ftirebilir.<\/p>\n<h4>6.3. CI\/CD Boru Hatlar\u0131 ile Entegrasyon<\/h4>\n<p>DependencyTrack'\u0131n ger\u00e7ek g\u00fcc\u00fc, CI\/CD boru hatlar\u0131na entegre edildi\u011finde ortaya \u00e7\u0131kar. Geli\u015ftirme s\u00fcrecinin her a\u015famas\u0131nda SBOM'lar\u0131n otomatik olarak olu\u015fturulup DependencyTrack'a y\u00fcklenmesi, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n erken tespiti i\u00e7in kritik \u00f6neme sahiptir.<br \/>\n*   <strong>SBOM Olu\u015fturma:<\/strong> Maven (CycloneDX Maven Plugin), Gradle (CycloneDX Gradle Plugin), Node.js (cyclonedx-node-npm), .NET (dotnet-cyclonedx) gibi ara\u00e7larla projelerinizin SBOM'lar\u0131n\u0131 otomatik olarak olu\u015fturun.<br \/>\n*   <strong>SBOM Y\u00fckleme:<\/strong> Olu\u015fturulan SBOM'lar\u0131, Terraform ile olu\u015fturdu\u011funuz API anahtar\u0131n\u0131 kullanarak DependencyTrack API'sine g\u00f6nderin.<br \/>\n*   <strong>Politika Kontrol\u00fc:<\/strong> DependencyTrack'taki politikalar\u0131 kullanarak, kritik g\u00fcvenlik a\u00e7\u0131klar\u0131 i\u00e7eren ba\u011f\u0131ml\u0131l\u0131klar\u0131n da\u011f\u0131t\u0131m\u0131n\u0131 engelleyin.<\/p>\n<h3>7. Sonu\u00e7<\/h3>\n<p>Terraform ile DependencyTrack'\u0131 yap\u0131land\u0131rmak, yaz\u0131l\u0131m tedarik zinciri g\u00fcvenli\u011fi s\u00fcre\u00e7lerinizi otomatikle\u015ftirmek ve modern DevOps uygulamalar\u0131na entegre etmek i\u00e7in g\u00fc\u00e7l\u00fc bir yakla\u015f\u0131md\u0131r. Bu makalede, DependencyTrack'\u0131n ne oldu\u011funu, neden otomasyonun \u00f6nemli oldu\u011funu, Terraform'un temel prensiplerini ve AWS \u00fczerinde DependencyTrack altyap\u0131s\u0131n\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceledik. Ayr\u0131ca, DependencyTrack'\u0131n uygulama i\u00e7i kaynaklar\u0131n\u0131 Terraform ile y\u00f6netme zorluklar\u0131na ve \u00e7\u00f6z\u00fcmlerine de\u011findik.<\/p>\n<p>Terraform kullanarak, DependencyTrack kurulumunuzu tutarl\u0131, tekrarlanabilir ve \u00f6l\u00e7eklenebilir hale getirebilirsiniz. Bu, manuel hatalar\u0131 azalt\u0131rken, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n daha h\u0131zl\u0131 tespit edilmesini ve giderilmesini sa\u011flayarak genel g\u00fcvenlik duru\u015funuzu \u00f6nemli \u00f6l\u00e7\u00fcde g\u00fc\u00e7lendirecektir. Unutmay\u0131n, g\u00fcvenlik bir yolculuktur ve otomasyon bu yolculukta en iyi m\u00fcttefiklerinizden biridir.<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<h4>DependencyTrack'\u0131 Terraform ile y\u00f6netmek ne gibi avantajlar sa\u011flar?<\/h4>\n<p>Terraform ile y\u00f6netim, kurulum ve yap\u0131land\u0131rma s\u00fcre\u00e7lerinde tutarl\u0131l\u0131k, tekrarlanabilirlik, h\u0131z ve hata azaltma gibi \u00f6nemli avantajlar sunar. Altyap\u0131n\u0131z\u0131 kod olarak tan\u0131mlayarak, s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda tutabilir, farkl\u0131 ortamlarda kolayca da\u011f\u0131tabilir ve g\u00fcvenlik politikalar\u0131n\u0131z\u0131 otomatik olarak uygulayabilirsiniz.<\/p>\n<h4>Terraform ile DependencyTrack'\u0131n hangi bile\u015fenlerini yap\u0131land\u0131rabilirim?<\/h4>\n<p>Terraform ile DependencyTrack i\u00e7in gerekli olan temel altyap\u0131 bile\u015fenlerini (sanal sunucular, veritabanlar\u0131, a\u011f g\u00fcvenlik gruplar\u0131) olu\u015fturabilir ve y\u00f6netebilirsiniz. Uygulaman\u0131n kendisini (Docker konteynerleri veya Kubernetes da\u011f\u0131t\u0131m\u0131) ba\u015flatabilir ve hatta <code>local-exec<\/code> provisioner'\u0131 veya \u00f6zel bir provider kullanarak DependencyTrack i\u00e7indeki API anahtarlar\u0131, projeler ve kullan\u0131c\u0131lar gibi kaynaklar\u0131 da dolayl\u0131 olarak y\u00f6netebilirsiniz.<\/p>\n<h4>Mevcut bir DependencyTrack kurulumunu Terraform'a nas\u0131l aktarabilirim?<\/h4>\n<p>Mevcut bir altyap\u0131y\u0131 Terraform'a aktarmak i\u00e7in <code>terraform import<\/code> komutunu kullanabilirsiniz. Bu komut, mevcut kaynaklar\u0131 Terraform state dosyas\u0131na eklemenizi sa\u011flar, b\u00f6ylece daha sonra bu kaynaklar\u0131 Terraform kodunuzla y\u00f6netebilirsiniz. Ancak, uygulama i\u00e7i yap\u0131land\u0131rmalar i\u00e7in (API anahtarlar\u0131, projeler) bu genellikle manuel olarak veya \u00f6zel betikler arac\u0131l\u0131\u011f\u0131yla yap\u0131lmal\u0131d\u0131r.<\/p>\n<h4>Terraform ile DependencyTrack i\u00e7indeki projeleri veya API anahtarlar\u0131n\u0131 y\u00f6netebilir miyim?<\/h4>\n<p>Do\u011frudan bir DependencyTrack Terraform provider'\u0131 olmamas\u0131na ra\u011fmen, <code>null_resource<\/code> ve <code>local-exec<\/code> provisioner'lar\u0131 kullanarak DependencyTrack API'sine \u00e7a\u011fr\u0131lar yapabilir ve bu sayede projeler, API anahtarlar\u0131, kullan\u0131c\u0131lar ve politikalar gibi uygulama i\u00e7i kaynaklar\u0131 dolayl\u0131 olarak y\u00f6netebilirsiniz. Daha entegre bir \u00e7\u00f6z\u00fcm i\u00e7in \u00f6zel bir Terraform provider'\u0131 geli\u015ftirmek de bir se\u00e7enektir.<\/p>\n<h4>Hangi bulut sa\u011flay\u0131c\u0131lar\u0131 desteklenir?<\/h4>\n<p>Terraform, AWS, Azure ve Google Cloud Platform (GCP) gibi ba\u015fl\u0131ca bulut sa\u011flay\u0131c\u0131lar\u0131n\u0131 tam olarak destekler. Ayr\u0131ca Docker, Kubernetes ve VMware gibi on-premise veya hibrit ortamlar i\u00e7in de provider'lar mevcuttur. Bu sayede DependencyTrack'\u0131 neredeyse her ortamda Terraform ile da\u011f\u0131tabilirsiniz.<\/p>\n","protected":false},"excerpt":{"rendered":"Terraform ile y\u00f6netim, kurulum ve yap\u0131land\u0131rma s\u00fcre\u00e7lerinde tutarl\u0131l\u0131k, tekrarlanabilirlik, h\u0131z ve hata azaltma gibi \u00f6nemli avantajlar sunar. Altyap&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-39162","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek\" \/>\n<meta property=\"og:description\" content=\"Terraform ile y\u00f6netim, kurulum ve yap\u0131land\u0131rma s\u00fcre\u00e7lerinde tutarl\u0131l\u0131k, tekrarlanabilirlik, h\u0131z ve hata azaltma gibi \u00f6nemli avantajlar sunar. Altyap...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-15T15:00:42+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek\",\"datePublished\":\"2026-02-15T15:00:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/\"},\"wordCount\":2488,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/\",\"name\":\"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-15T15:00:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/","og_locale":"tr_TR","og_type":"article","og_title":"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek","og_description":"Terraform ile y\u00f6netim, kurulum ve yap\u0131land\u0131rma s\u00fcre\u00e7lerinde tutarl\u0131l\u0131k, tekrarlanabilirlik, h\u0131z ve hata azaltma gibi \u00f6nemli avantajlar sunar. Altyap...","og_url":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-15T15:00:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"11 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek","datePublished":"2026-02-15T15:00:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/"},"wordCount":2488,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/","url":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/","name":"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-15T15:00:42+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/terraform-ile-dependencytrack-yapilandirma-yazilim-guvenligini-otomatiklestirmek\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Terraform ile DependencyTrack Yap\u0131land\u0131rma: Yaz\u0131l\u0131m G\u00fcvenli\u011fini Otomatikle\u015ftirmek"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39162"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39162\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}