214 lines
7.9 KiB
YAML
214 lines
7.9 KiB
YAML
# OCI Well-Architected Framework — Pillar 2: Reliability and Resilience
|
|
# Source: https://docs.oracle.com/en/solutions/oci-best-practices/reliable-and-resilient-cloud-topology-practices1.html
|
|
|
|
pillar:
|
|
name: "Reliability and Resilience"
|
|
id: reliability_resilience
|
|
wa_reference: "https://docs.oracle.com/en/solutions/oci-best-practices/reliable-and-resilient-cloud-topology-practices1.html"
|
|
reference: "https://docs.oracle.com/en/solutions/oci-best-practices/reliable-and-resilient-cloud-topology-practices1.html"
|
|
|
|
categories:
|
|
- name: "Scalability"
|
|
id: scalability
|
|
checks:
|
|
- id: REL-SCL-001
|
|
name: "Auto-scaling configured"
|
|
description: "Auto-scaling configured for variable workloads"
|
|
auto_detect:
|
|
pass_if: "auto-scaling policies defined for compute or OKE"
|
|
gap_if: "variable workloads without auto-scaling"
|
|
severity: MEDIUM
|
|
applies_when: "has_variable_workloads"
|
|
|
|
- id: REL-SCL-002
|
|
name: "Service limits reviewed"
|
|
description: "Service limits reviewed and increased where needed"
|
|
auto_detect:
|
|
pass_if: "service limit review mentioned in deployment plan"
|
|
gap_if: "no service limit review planned"
|
|
severity: LOW
|
|
applies_when: always
|
|
|
|
- id: REL-SCL-003
|
|
name: "Capacity reservations"
|
|
description: "Capacity reservations for critical workloads"
|
|
auto_detect:
|
|
pass_if: "capacity reservations specified for critical compute"
|
|
gap_if: "critical production workloads without capacity reservations"
|
|
severity: MEDIUM
|
|
applies_when: "has_critical_workloads"
|
|
|
|
- name: "Fault-Tolerant Networking"
|
|
id: fault_tolerant_networking
|
|
checks:
|
|
- id: REL-NET-001
|
|
name: "Redundant FastConnect"
|
|
description: "Redundant FastConnect circuits (2 virtual circuits, different physical paths)"
|
|
auto_detect:
|
|
pass_if: "dual FastConnect circuits on diverse paths"
|
|
gap_if: "single FastConnect circuit without redundancy"
|
|
severity: HIGH
|
|
applies_when: "has_fastconnect"
|
|
|
|
- id: REL-NET-002
|
|
name: "VPN backup for FastConnect"
|
|
description: "VPN as backup if FastConnect is primary"
|
|
auto_detect:
|
|
pass_if: "IPSec VPN configured as FastConnect backup"
|
|
gap_if: "FastConnect without VPN backup"
|
|
severity: MEDIUM
|
|
applies_when: "has_fastconnect"
|
|
|
|
- id: REL-NET-003
|
|
name: "Redundant DRG tunnels"
|
|
description: "DRG with redundant tunnels"
|
|
auto_detect:
|
|
pass_if: "DRG configured with redundant IPSec tunnels"
|
|
gap_if: "DRG with single tunnel"
|
|
severity: MEDIUM
|
|
applies_when: "has_drg"
|
|
|
|
- id: REL-NET-004
|
|
name: "Load Balancer health checks"
|
|
description: "Load Balancer health checks configured"
|
|
auto_detect:
|
|
pass_if: "health check policies defined on load balancers"
|
|
gap_if: "load balancers without health checks"
|
|
severity: HIGH
|
|
applies_when: "has_load_balancers"
|
|
|
|
- id: REL-NET-005
|
|
name: "Multi-AD/FD compute placement"
|
|
description: "Multiple ADs or FDs used for compute placement"
|
|
auto_detect:
|
|
pass_if: "compute instances distributed across ADs or FDs"
|
|
gap_if: "all compute in single AD/FD"
|
|
severity: HIGH
|
|
applies_when: "has_production_compute"
|
|
|
|
- name: "Data Backup"
|
|
id: data_backup
|
|
checks:
|
|
- id: REL-BAK-001
|
|
name: "Automated database backups"
|
|
description: "Automated backups enabled for all databases"
|
|
auto_detect:
|
|
pass_if: "automated backup configured for all database services"
|
|
gap_if: "any database without automated backup"
|
|
severity: HIGH
|
|
applies_when: "has_databases"
|
|
|
|
- id: REL-BAK-002
|
|
name: "Backup retention policy"
|
|
description: "Backup retention policy defined and documented"
|
|
auto_detect:
|
|
pass_if: "backup retention periods specified"
|
|
gap_if: "no backup retention policy defined"
|
|
severity: MEDIUM
|
|
applies_when: "has_databases"
|
|
|
|
- id: REL-BAK-003
|
|
name: "Block Volume backups"
|
|
description: "Block Volume backups scheduled"
|
|
auto_detect:
|
|
pass_if: "block volume backup policies configured"
|
|
gap_if: "block volumes without backup schedules"
|
|
severity: MEDIUM
|
|
applies_when: "has_block_volumes"
|
|
|
|
- id: REL-BAK-004
|
|
name: "Cross-region backup copy"
|
|
description: "Cross-region backup copy for critical data"
|
|
auto_detect:
|
|
pass_if: "cross-region backup replication configured"
|
|
gap_if: "critical data without cross-region backup"
|
|
severity: MEDIUM
|
|
applies_when: "has_critical_data"
|
|
|
|
- id: REL-BAK-005
|
|
name: "Boot volume backups"
|
|
description: "Boot volume backups for compute instances"
|
|
auto_detect:
|
|
pass_if: "boot volume backup policies configured"
|
|
gap_if: "compute instances without boot volume backups"
|
|
severity: LOW
|
|
applies_when: "has_compute_instances"
|
|
|
|
- name: "Data Replication"
|
|
id: data_replication
|
|
checks:
|
|
- id: REL-REP-001
|
|
name: "Data Guard / ADG"
|
|
description: "Data Guard (or ADG for ADB) configured for HA databases"
|
|
auto_detect:
|
|
pass_if: "Data Guard or Autonomous Data Guard configured"
|
|
gap_if: "production databases without HA replication"
|
|
severity: HIGH
|
|
applies_when: "has_production_databases"
|
|
|
|
- id: REL-REP-002
|
|
name: "RPO/RTO documented"
|
|
description: "RPO/RTO documented and validated with actual testing"
|
|
auto_detect:
|
|
pass_if: "RPO and RTO targets defined with validation plan"
|
|
gap_if: "no RPO/RTO targets documented"
|
|
severity: HIGH
|
|
applies_when: "has_production_workloads"
|
|
|
|
- id: REL-REP-003
|
|
name: "Cross-region Object Storage replication"
|
|
description: "Cross-region replication for Object Storage"
|
|
auto_detect:
|
|
pass_if: "Object Storage replication configured to DR region"
|
|
gap_if: "critical object storage without cross-region replication"
|
|
severity: MEDIUM
|
|
applies_when: "has_critical_object_storage"
|
|
|
|
- name: "Disaster Recovery"
|
|
id: disaster_recovery
|
|
checks:
|
|
- id: REL-DR-001
|
|
name: "DR region identified"
|
|
description: "DR region identified and provisioned"
|
|
auto_detect:
|
|
pass_if: "DR region specified in architecture"
|
|
gap_if: "no DR region identified"
|
|
severity: HIGH
|
|
applies_when: "requires_dr"
|
|
|
|
- id: REL-DR-002
|
|
name: "DR architecture documented"
|
|
description: "DR architecture documented with switchover/failover procedures"
|
|
auto_detect:
|
|
pass_if: "DR runbook with switchover/failover procedures defined"
|
|
gap_if: "no DR procedures documented"
|
|
severity: HIGH
|
|
applies_when: "requires_dr"
|
|
|
|
- id: REL-DR-003
|
|
name: "DR drill schedule"
|
|
description: "DR drill schedule defined (quarterly minimum)"
|
|
auto_detect:
|
|
pass_if: "DR drill schedule defined"
|
|
gap_if: "no DR drill schedule"
|
|
severity: MEDIUM
|
|
applies_when: "requires_dr"
|
|
|
|
- id: REL-DR-004
|
|
name: "DNS failover"
|
|
description: "DNS failover or traffic management configured"
|
|
auto_detect:
|
|
pass_if: "OCI Traffic Management or DNS failover configured"
|
|
gap_if: "no automated DNS failover for DR"
|
|
severity: MEDIUM
|
|
applies_when: "requires_dr"
|
|
|
|
- id: REL-DR-005
|
|
name: "Application tier DR"
|
|
description: "Application tier DR strategy (pre-provisioned, Terraform-on-demand, or pilot light)"
|
|
auto_detect:
|
|
pass_if: "application DR strategy defined and documented"
|
|
gap_if: "no application tier DR strategy"
|
|
severity: HIGH
|
|
applies_when: "requires_dr"
|