Skip to content
AskFlorence
Main Navigation ArchitectureFlorence AIAgentsMembersAgent PlatformValidationInfrastructure

Appearance

Sidebar Navigation

Overview

Home

Glossary

System Architecture

Consumer & Agent Flow

Florence AI

Overview

Principles

Runtime

Tool surface

Adding a tool

Tool registry

Knowledge: SBC scenarios & CSR

Voice

Evals & observability

Provider risk & portability

Outage playbook

Roadmap

Build plan

Agents

Overview

Workflows & pain points

Members

Overview

Medicaid coverage gap

Carriers

Overview

Marketplaces

Overview

Agency

Overview

Regulations

Overview

Agent Platform

Overview

Auth Architecture

MongoDB Permissioning

Compliance Model

Data Models

Data Sources

Overview

CMS Marketplace API

CMS dependency map

PUF Data

State Subsidies

SBE Ingestion Playbook

SBE State Watchouts + Decisions

CA Phase C/D Playbook

NY Phase C/D Playbook

Validation

Overview

Methodology

APTC Formula

California 2026

New York 2026

CAPS Formula

Scenario Results

Infrastructure

Account Inventory

AWS Setup Runbook

AWS Organizations

CloudTrail

GuardDuty

Security Hub

Config

CloudFront + WAFv2

Data sources & ingest

Phase 4 DNS

Change Log

Vulnerability Management

MongoDB Setup

Access Control

Data Classification

Documentation Hosting

Post-deploy Smoke

Development

Preflight (local CI mirror)

Testing strategy

Compliance

Overview (auditor entry point)

SOC 2 Control Mapping

HIPAA Control Mapping

CMS EDE Appendix A Mapping

Risk Assessment

Encryption Policy

Data Retention Policy

Privacy Impact Assessment

Consent Capture & Versioning

Incident Response Plan

Access Control Policy

Marketing vs. Portal Analytics

Vendor / Subprocessor Register

Dependency Vulnerability Policy

BAA / Compliance Evidence

Compliance-Automation Integration

Compliance-Automation Vendor Evaluation

Penetration Test Reports

Architecture

Portal entry handoff

Mobile app strategy

Deferred architecture decisions

Session cookie architecture

Share flows

Decisions (ADRs)

Index

0001 — Atlas project isolation

0002 — Append-only audit log

0003 — Narrow-scoped Mongo users

0004 — Cross-cluster Atlas PrivateLink

0005 — Delayed-job architecture

0006 — Mongo user simplification

0007 — Terraform owns ECS task def

0008 — E2E testing strategy

0009 — Self-hosted analytics + observability (superseded)

0010 — PostHog HIPAA Cloud (supersedes 0009)

Runbooks

Security Incident Response

Break-Glass Root Login

Onboard Team Member

Offboard Team Member

Atlas user provisioning

Deploy via Terraform (ENG-277)

Rollback via Terraform (ENG-277)

S3 data bucket migration (planned Phase 11)

Access Reviews

2026-Q2 Review

Session log

Index

2026-04-23 — Phase 10 DNS cutover

2026-04-22 — Phase 8 prod AWS mirror

2026-04-22 — Phase 7 Atlas VPC peering

2026-04-22 — Phase 6 CloudFront + WAF

2026-04-21 — Phase 5 staging go-live

2026-04-17 — Atlas staging

Briefs

Index

Member portal plan (ENG-187)

2026-04-16/17 handoff

2026-04-17 Atlas handoff

System briefing (2026-04-17)

Creative AdBundance proposal brief

Creative AdBundance analytics brief

ElevenLabs RN integration research

Policies

Overview

On this page

CloudTrail — Organization trail to log-archive ​

Status: Active since 2026-04-18. Purpose: SOC 2 CC7.1 / CC7.2, HIPAA §164.308(a)(1)(ii)(D), CMS EDE Phase 3 audit trail requirement.

Summary ​

A single organization trail in the management account writes all AWS API activity across all 4 accounts to an S3 bucket in the dedicated log-archive account. Logs are encrypted with a customer-managed KMS CMK, version-protected, object-locked in COMPLIANCE mode for 7 years, and exported to CloudWatch Logs in the management account for near-real-time Insights anomaly detection.

Resources ​

ResourceValue
Trail nameaskflorence-org-trail
Trail ARNarn:aws:cloudtrail:us-east-1:778477254880:trail/askflorence-org-trail
Home regionus-east-1
Multi-regionYes (captures all regions)
Org trailYes (applies to all member accounts)
Global service eventsYes (captures IAM, STS, Organizations, CloudFront, Route53)
Log file validationEnabled (hash chain for tamper detection)
S3 destination bucketaskflorence-org-cloudtrail-logs-754660694122 (log-archive account)
S3 object lockCOMPLIANCE mode, 7 years
S3 versioningEnabled
KMS keyalias/askflorence-org-logs in log-archive (arn:aws:kms:us-east-1:754660694122:key/e9dfcdbe-19e1-491c-a8f9-d17612cf6353)
KMS rotationAnnual auto-rotation
CloudWatch log group/aws/cloudtrail/askflorence-org-trail (mgmt, 365-day retention)
CloudTrail role for CW Logsarn:aws:iam::778477254880:role/CloudTrailToCloudWatchLogsRole
Event selectorsRead+Write management events, global service events included, no data events yet
InsightsApiCallRateInsight, ApiErrorRateInsight enabled

What's captured ​

All management-plane API calls across all accounts and all regions, including global services. Data events (S3 PutObject, Lambda Invoke) are not recorded by default — we'll enable them on specific resources when prod workloads exist (Phase 8 and beyond), scoped narrowly to control CloudTrail data-event cost.

Tamper protection ​

Two layers:

  1. S3 Object Lock COMPLIANCE on the destination bucket. Objects cannot be deleted or overwritten for 7 years, even by the log-archive account root. AWS enforces this at the bucket level; no admin override.
  2. Log file validation on the trail. Each hourly digest file contains a SHA-256 hash chain. aws cloudtrail validate-logs can verify chronological integrity at audit time.

SCP protection ​

ScpBaseline (attached to Prod, Non-Prod, Security OUs) denies cloudtrail:DeleteTrail, cloudtrail:PutEventSelectors, cloudtrail:StopLogging, cloudtrail:UpdateTrail in all member accounts. Only the management account (which is not under this SCP) can modify the trail, and only via SSO AdministratorAccess.

Encryption & access ​

  • In transit: CloudTrail service → S3 uses TLS. S3 bucket policy denies any non-SSL access.
  • At rest: SSE-KMS with the askflorence-org-logs CMK. Unencrypted puts denied by bucket policy.
  • Decrypt: any principal within the organization (aws:PrincipalOrgID == o-vefew8kgv1) can decrypt logs they're authorized to read per the bucket policy. The CMK policy separately grants kms:Decrypt to org principals. No external account can decrypt.

Incident access (future) ​

If a SOC 2 auditor or external responder needs to read trail logs, they get a time-limited IAM assumption into the log-archive account via SSO SecurityAudit permission set (4h session). No long-lived credentials.

Costs ​

  • CloudTrail: $2/100k management events (first trail is free for mgmt events; second trail = org trail counts as a second trail).
  • S3: tier-1 storage ~$0.023/GB/mo; compliance-mode object lock doesn't add cost.
  • KMS: $1/CMK/mo + $0.03/10k requests.
  • CloudWatch Logs: $0.50/GB ingested.
  • Estimated pre-launch: $5–10/mo.

Runbook references ​

  • aws-setup.md — general AWS runbook (profiles, deploy, logs, rollback)
  • change-log.md — setup and any modifications
  • aws cloudtrail get-trail-status --name askflorence-org-trail — quick health check (IsLogging should be true; LatestDeliveryTime should be <1hr old)
  • aws cloudtrail validate-logs --trail-arn <arn> --start-time ... --end-time ... — audit-time tamper verification
Pager
Previous pageAWS Organizations
Next pageGuardDuty

AskFlorence Internal Documentation. Not for public distribution.

AskFlorence

Internal Documentation

Access restricted. Not for public distribution.