Infrastructure templates
Your Service Catalog will need to include off-the-shelf solutions for infrastructure: e.g., servers, data stores, networking, etc. Here's a starting list of the type of infrastructure you'll need to build out:
Account baselines ("Landing Zone")
Enforce a secure baseline for each of your cloud accounts, including:
- Authentication: e.g., IAM users, SSO, MFA.
- Authorization: e.g., IAM groups, IAM roles.
- Audit logging: e.g., CloudTrail, AWS Config.
- Guard rails: e.g., SCPs.
- Security scanning: e.g., GuardDuty, Macie, Shield, ECR scanning of images.
- Account-wide defaults: e.g., encryption by default.
We'll discuss Landing Zones more in a dedicated section later on.
Networking
Configure networking within your cloud, including:
- Virtual Private Clouds (VPCs): manage IP, subnets, routing, NAT.
- Firewalls: control which ports and protocols are allowed in and out.
- Client VPN: connect to your cloud account from workstations.
- Site-to-site VPN: connect to your cloud account from offices and data centers.
- SSH and RDP: connect to servers remotely; bastion hosts.
- DNS: register domain names and configure DNS entries.
- Load balancing and service mesh: route traffic to your apps.
Monitoring
Give your team visibility into what's happening within your cloud, including:
- Metrics: gather metrics from your apps (e.g., Prometheus, DataDog, CloudWatch).
- Logs: aggregate logs from your apps (e.g., Elastic, Sumo Logic, Loggly).
- Dashboards: display and slice and dice metrics and logs in a web UI (e.g., Grafana).
- Alerts: set up automated alerts and an on-call rotation (e.g., PagerDuty).
- Observability: store and slice and dice event data (e.g., Honeycomb).
- Tracing: track requests across all your apps, microservices, etc (e.g., X-Ray).
Security
Think through security at every layer of the stack. Aim for defense in depth, where you have multiple layers of security, a bit like a castle: e.g., moat, walls, gate, keep, guards, etc. This way, you're never just one mistake away from disaster. This includes:
- Secrets management: secret stores (e.g., Vault), password management (e.g., 1Password), key management (e.g., KMS).
- Encryption: encrypt all data in transit (e.g., TLS, self-signed certs, private CA, service mesh) and at rest (e.g., disk encryption, KMS).
- Server hardening: intrusion detection (e.g., TripWire, fail2ban), antivirus, file integrity monitoring, sandboxing (e.g., SELinux, AppArmor), limited OS users and permissions, etc.
- Network hardening: server firewalls, network firewalls, web application firewalls (WAF).
- Policy as code: define and enforce company and legal policies as code using tools such as Open Policy Agent (OPA).
Application orchestration
Deploy and manage your application workloads, including:
- Virtual servers: EC2 instances, Google Compute instances, Azure Virtual Machines.
- Docker containers: Kubernetes (including EKS, GKE, AKS), ECS, Fargate.
- Serverless: Lambda, API Gateway, Cloud Functions, Azure Functions.
Data storage
Set up data stores, including:
- Relational databases: MySQL, PostgreSQL, SQL Server.
- Caches: Redis, Memcached.
- Search indices: Elasticsearch.
- Document stores: MongoDB, DynamoDB.
- Streams and queues: Kafka, SQS, SNS.
- File stores: S3, GCS, Azure Storage.
- Docker registries: ECR, GCP Container Registry, Azure Container Registry.
CI / CD
Configure CI / CD tools, including:
- CI / CD platform: Jenkins, GitLab, GitHub Actions, CircleCi, Argo CD.
- CI / CD pipeline: for builds, tests, app deploys, and infrastructure deploys.
We'll discuss CI / CD more in a dedicated section later on.