bcgov / cloud-pathfinder

This is the technology and UX backend repo for the cloud pathfinder ZenHub task board
https://app.zenhub.com/workspaces/cloud-pathfinder-5e4dbb426c3c6af8dcbf06a7/board?repos=241742911
Creative Commons Zero v1.0 Universal
2 stars 8 forks source link

SPIKE: Solidify approach to DNS, TLS termination, ALB use ,etc. within LZ #525

Closed sheaphillips closed 3 years ago

sheaphillips commented 3 years ago

Describe the issue This is a manual process which could overwhelm Cloud Ops. It's a bit of an unknown how we handle the firewalls. There was work done on the demo app which will feed into the design of an automated approach.

Which Sprint Priority is this issue related to? Priority 2

Additional context

Definition of done

wrnu commented 3 years ago

Firewalls

FortiGate Firewalls are currently in place; however, Check Point Firewalls are being evaluated for a potential switch

ActionAnalytics commented 3 years ago

Ryan J has finished his prototype and is ready to demo.

wrnu commented 3 years ago

Networking

Proposed Terraform Approach

Routing_Terraform.png

Routing

DNS

TLS (AWS Certificate Manager)

Perimeter ALB (Public)

Firewall

FortGate

Links

Check Point

TDB

Links

Project Spec

The project spec is defined using a project.json file.

Proposed schema for the network configuration (see network object in the accounts list):

{
  "identifier": "a1bc23",
  "name": "Example Project Spec",
  "accounts": [
    {
      "name": "Development",
      "environment": "dev",
      "alb": [
        {
          "name": "default"
        },
        {
          "name": "alb-for-service-0"
        }
      ],
      "network": {
        "routes": [
          {
            "public_subdomain": "service-0",
            "alb_name": "alb-for-service-0"
          },
          {
            "public_subdomain": "service-1",
            "alb_name": "created-by-tenant"
          }
        ]
      },
      "extra_tfc_workspaces": ["service-1"]
    },
    {
      "name": "Test",
      "environment": "test",
      "alb": [
        {
          "name": "default"
        }
      ],
      "network": {}
    },
    {
      "name": "Production",
      "environment": "prod",
      "alb": [
        {
          "name": "default"
        }
      ],
      "network": {}
    },
    {
      "name": "Tools",
      "environment": "sandbox",
      "alb": [],
      "network": {}
    },
    {
      "name": "Unclassified",
      "environment": "unclass",
      "alb": [],
      "network": {}
    }
  ]
}

Ryan Jaeger's Approach

State_Machine.png

Architecture

How we could use this from Terraform