Pazartesi, Ekim 14, 2024

Amazon AWS Terraform ile DNSSEC Aktivasyonu

Terraform logosu

Öncelikle Amazon AWS tarafındaki terraform modülünün ne kadar boktan olduğunu DevOps ile uğraşanları tamamı bilir. Modüller olmasa birisi hayrına bazı şeyleri yazmamış olsa 500 türlü takla atmak gerekiyor bir işi yapmak için. Bugün sizlere Route53 üzerinde Terraform ile DNSSEC aktivasyonunu göstericem. Bazıları bunları önemsemiyor veya alan adları farklı sağlayıcılarda olduğu için kullanmıyorlar.

Ama DNSSEC ciddi anlamda sizi DNS üzerinden gelecek saldırılarından korur. Bu korumayı sadece DDoS olarak düşünmeyin, DNSSEC Nedir? bir bakın sonra aktifleştirmek isteyebilirsiniz.

Kullanılacak olan public zone ayarlıyoruz.

resource "aws_route53_zone" "mertcangokgoz_public" {
  name    = "mertcangokgoz.com"
  comment = "Managed by Terraform"

  lifecycle {
    prevent_destroy = true
  }
}
HCL

alt yapınız için dnssec.tf adında bir dosya oluşturun ve içerisine aşağıdaki tanımlamaları yapın.

resource "aws_kms_key" "mertcangokgoz_dnssec_key" {
  customer_master_key_spec = "ECC_NIST_P256"
  key_usage                = "SIGN_VERIFY"
  policy = jsonencode({
    Statement = [
      {
        Action = [
          "kms:DescribeKey",
          "kms:GetPublicKey",
          "kms:Sign",
          "kms:Verify",
        ],
        Effect = "Allow"
        Principal = {
          Service = "dnssec-route53.amazonaws.com"
        }
        Resource = "*"
        Sid      = "Allow Route 53 DNSSEC Service",
      },
      {
        Action = "kms:*"
        Effect = "Allow"
        Principal = {
          AWS = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"
        }
        Resource = "*"
        Sid      = "Enable IAM User Permissions"
      },
    ]
    Version = "2012-10-17"
  })

  provider = aws.us-east-1
}

resource "aws_route53_key_signing_key" "mertcangokgoz" {
  hosted_zone_id             = aws_route53_zone.mertcangokgoz_public.id
  key_management_service_arn = aws_kms_key.mertcangokgoz_dnssec_key.arn
  name                       = "mertcangokgoz"

  provider = aws.us-east-1
}

resource "aws_route53_hosted_zone_dnssec" "mertcangokgoz" {
  depends_on = [
    aws_route53_key_signing_key.mertcangokgoz
  ]
  hosted_zone_id = aws_route53_key_signing_key.mertcangokgoz.hosted_zone_id

  provider = aws.us-east-1
}
HCL

Geçerli olması için terraform ile tetikliyoruz ve değişiklikleri uyguluyoruz.

terraform plan
terraform apply -auto-approve
ShellScript