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

AWS Organizations — Account Structure ​

Status: Living document. Last updated 2026-04-18. Purpose: SOC 2 CC6.6 (System Boundaries), CC7.1 (Infrastructure Management), HIPAA §164.308(a)(4) (Access Management), CMS EDE Phase 3 (isolation of production workloads).


Why multi-account ​

AskFlorence runs under AWS Organizations with separate member accounts for each environment. This gives us:

  • Blast radius containment — an IAM mistake or credential leak in staging cannot affect production.
  • Per-environment billing and cost attribution — prod vs. staging spend is impossible to co-mingle.
  • Per-environment audit trails — CloudTrail, GuardDuty, and Security Hub findings are scoped per account, simplifying SOC 2 and CMS EDE evidence.
  • Service Control Policy (SCP) enforcement — guardrails apply at the OU level and cannot be overridden by account admins.
  • Centralized logging to a segregated account — askflorence-log-archive is intentionally isolated from workload accounts; even compromised prod/staging credentials cannot tamper with logs.

Organization ​

FieldValue
Organization IDo-vefew8kgv1
Root IDr-9qla
Master (management) account778477254880 — askflorencehealth
Master account emailtaha.abbasi@askflorence.health
Feature setALL (enables SCPs, aggregated billing, tag policies)
SCPs enabledSERVICE_CONTROL_POLICY — ENABLED at root
CreatedApril 2026

Accounts ​

Account NameAccount IDRoot EmailOUPurpose
askflorencehealth778477254880taha.abbasi@askflorence.healthRootManagement account. AWS Organizations, IAM Identity Center (SSO), consolidated billing, budget alerts, S3 askflorence-data source-file bucket, Terraform state. Should not run production workloads.
askflorence-prod039624954211aws+prod@askflorence.healthProdProduction workloads. ECS Fargate web service, ALB, CloudFront, WAFv2, Secrets Manager, Atlas VPC peering (prod project).
askflorence-staging549136075525aws+staging@askflorence.healthNon-ProdStaging / pre-prod. Identical stack to prod, scaled down. Targets Atlas staging project (M0).
askflorence-log-archive754660694122aws+log-archive@askflorence.healthSecurityCentralized logging. Receives org-wide CloudTrail, AWS Config aggregation, VPC Flow Logs export, WAF logs. Object-locked S3 for immutable audit evidence. No workloads run here.

Organizational Units (OUs) ​

OUIDParentMembers
Rootr-9qla(top)askflorencehealth (management)
Prodou-9qla-8z7htmauRootaskflorence-prod
Non-Prodou-9qla-o6snxwssRootaskflorence-staging
Securityou-9qla-c5psmqcyRootaskflorence-log-archive

Future OU expansion (not yet created): Sandbox under Root (for ad-hoc dev accounts), Audit under Security (for future compliance-tooling account if separated from log archive).

Service Control Policies (SCPs) ​

ScpBaseline (ID p-oy7xxdzz) ​

Attached to: Prod, Non-Prod, Security OUs (all workload OUs). Management account is intentionally not constrained by this SCP so Taha can continue to manage the org.

Guardrails enforced (v2, 2026-04-18):

  1. Deny root user actions, except a narrow bootstrap allow-list (DenyRootExceptBootstrap). Root can still set up MFA, change password, check for access keys, and view account summary — one-time setup that every new AWS account requires. Everything else (workload actions, IAM user/role creation, service configuration) is denied to root. Day-to-day activity goes through SSO-issued roles. See change-log.md#2026-04-18T00:30Z for the allow-list rationale.
  2. Deny organizations:LeaveOrganization. Prevents accidental or malicious detachment.
  3. Deny disabling CloudTrail. Specifically: DeleteTrail, PutEventSelectors, StopLogging, UpdateTrail.
  4. Deny disabling AWS Config. Specifically: DeleteConfigurationRecorder, DeleteDeliveryChannel, StopConfigurationRecorder.
  5. Deny disabling GuardDuty. DeleteDetector, DisassociateFromMasterAccount, etc.
  6. Deny disabling Security Hub. DisableSecurityHub, DisassociateFromMasterAccount, etc.
  7. Region lock to us-east-1. All regional service calls must target us-east-1. Global services (IAM, CloudFront, Route 53, STS, Organizations, etc.) are exempted via NotAction. AWS service-linked roles are exempted via the PrincipalARN condition to avoid breaking background housekeeping jobs.

SCP JSON is not yet under Terraform — the authoritative copy is the policy attached in AWS Organizations (viewable via aws organizations describe-policy --policy-id p-oy7xxdzz). When Terraform takes ownership, the file path will be added here.

IAM Identity Center (SSO) ​

  • SSO instance ARN: arn:aws:sso:::instance/ssoins-722388357d4502e0
  • Identity store: d-90660882b4
  • Portal URL: https://d-90660882b4.awsapps.com/start

Permission sets ​

NameSessionManaged policiesIntended use
AdministratorAccess1hAdministratorAccessBreak-glass, infra changes. Short session by design.
PowerUserAccess4hPowerUserAccessDay-to-day engineering. No IAM/Org changes.
BillingReadOnly4hjob-function/BillingFinance review (future).
SecurityAudit4hSecurityAudit + ReadOnlyAccessRead-only security posture review (Drata connector role uses same policy shape).

Assignments (as of 2026-04-18) ​

UserAccountsPermission sets
taha.abbasiaskflorencehealth (mgmt), askflorence-prod, askflorence-staging, askflorence-log-archiveAdministratorAccess + PowerUserAccess on all 4

Local AWS CLI profiles ​

~/.aws/config on Taha's dev machine has profiles for each account:

ProfileAccountRole
askflorence or askflorence-mgmt778477254880AdministratorAccess
askflorence-prod039624954211AdministratorAccess
askflorence-prod-power039624954211PowerUserAccess
askflorence-staging549136075525AdministratorAccess
askflorence-staging-power549136075525PowerUserAccess
askflorence-log-archive754660694122AdministratorAccess

SSO session is shared (sso-session askflorence) — one aws sso login refreshes credentials for all profiles.

Budgets ​

All budgets live on the management account and filter by LinkedAccount for per-env attribution.

BudgetAmountFilterAlerts
askflorence-prod-monthly$200LinkedAccount = 03962495421180% actual + 100% forecast → taha@askflorence.health
askflorence-staging-monthly$100LinkedAccount = 54913607552580% actual + 100% forecast
askflorence-log-archive-monthly$50LinkedAccount = 75466069412280% actual + 100% forecast
askflorence-org-total-monthly$500(none — all accounts)80% actual + 100% forecast — hard cap alert
askflorence-monthly-budget$100(none — legacy, pre-migration)Existing

Pending manual actions ​

  • [x] AWS Organizations BAA signed — accepted 2026-04-18 via AWS Artifact Organization agreements tab. Covers all current + future member accounts in o-vefew8kgv1. Signed PDF: evidence/aws-organizations-baa-signed-2026-04-18.pdf.
  • [ ] Enable IAM User/Role Access to Billing Information on mgmt root (778477254880). Chrome agent verification found that even AdministratorAccess SSO gets "You don't have permission to access billing information" — because the account-level toggle was never flipped. Fix: sign in as mgmt root, console top-right account menu → Account → "IAM User and Role Access to Billing Information" → Edit → Activate. Doesn't grant new permissions; just lets existing Billing-scoped policies take effect. After toggle, the 5 budgets (prod/staging/log-archive/org-total/legacy) become visible via SSO and CLI. See change-log.md#2026-04-21T03:00Z.
  • [x] Root password + MFA complete on all 3 new member accounts as of 2026-04-18. Virtual MFA devices registered. Zero root access keys confirmed. Day-to-day access is SSO AdministratorAccess / PowerUserAccess. See change-log.md#2026-04-18T00:45Z.
  • [ ] Physical seal of root credentials (password vault entry per account + MFA recovery codes in a physical safe) — Taha's personal hygiene task, outside AWS infra scope.

Related docs ​

  • account-inventory.md — full service + account inventory across the company
  • access-control.md — access granting/revocation process
  • change-log.md — timestamped log of infra changes (this document was added at row #1 of that log)
Pager
Previous pageAWS Setup Runbook
Next pageCloudTrail

AskFlorence Internal Documentation. Not for public distribution.

AskFlorence

Internal Documentation

Access restricted. Not for public distribution.