π’ AWS Organizations β Cloud Governance Source of TruthΒΆ
Reconcile your cloud governance posture in <2 minutes
Discover AWS accounts, Organizational units (OUs), delegated administrators, policies, and ownership to validate APRA CPS 234 compliance and populate the CMDB.
Governance Verdict
- π‘ AMBER β Run the 8 discovery commands to populate; review the 4 KPIs below to confirm GREEN.
- π’ GREEN β Replace this line with your verdict after first run, e.g. "3 delegated admins healthy, 7 SCPs enforced, backup policy covers Production OU."
For CxO β what AWS Organizations data tells you in 60 seconds
AWS Organizations is your cloud governance source of truth. It defines delegation boundaries (who runs what), policy controls (what's forbidden), and service enablement across all accounts. These 8 discovery commands extract that data into CSV files that feed the CMDB service map and audit logs.
Why it matters to you:
-
- Regulatory compliance β
APRA CPS 234 Β§36requires traceable, dated exports of your governance posture.
- Regulatory compliance β
-
- Risk visibility β these KPIs tell you whether accounts can drift into unauthorized services or whether your backup/encryption policies are enforced.
-
- Service continuity β orphaned delegations or missing policies are failure modes that impact incident response.
Running this discovery quarterly (or when risk posture changes) ensures your CMDB reflects reality, not assumptions.
π Governance Posture SnapshotΒΆ
Board-meeting screenshot β 4 KPIs at a glance
| Governance KPI | Verdict trigger | Evidence file |
|---|---|---|
| Delegated Administrators | π’ β₯1 per security/finops/network domain π‘ 1β2 domains covered π΄ zero or >10 (sprawl audit finding) |
tenants/b2b-energy/raw/organizations/delegated-administrators.csv |
| SCP Coverage | π’ 1β10 SCPs with FullAWSAccess exempted at root π‘ 11β20 (review for overlap) π΄ zero (no preventive guardrails) OR >30 (impossible to reason about) |
tenants/b2b-energy/raw/organizations/policies/service-control-policy.csv |
| Backup Policy Coverage | π’ β₯1 covering Production OU with cross-region copy π‘ covers Prod but no cross-region π΄ zero policies on Production (APRA CPS 234 Β§36 breach risk) |
tenants/b2b-energy/raw/organizations/policies/backup-policy.csv |
| AI Opt-Out Stance | π’ β₯1 AISERVICES_OPT_OUT_POLICY attached org-wide π‘ policy exists but not at root OU π΄ none (AI services can use data for model training β legal/competitive risk) |
tenants/b2b-energy/raw/organizations/policies/aiservices-opt-out-policy.csv |
Test Coverage Status
The 4-tier test pyramid (T1 unit β T2 integration β T3 E2E β T4 visual) is being implemented incrementally. Current status as of 2026-05-22:
| Command | T1 Unit | T2 Integration | T3 E2E | T4 Visual |
|---|---|---|---|---|
| list-org-accounts | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) |
| list-org-users | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | β |
| draw-org | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | β |
| check-landingzone | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | β |
| check-controltower | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | β |
| find-lz-versions | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | β |
| collect-ram-shares | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) |
| list-enabled-services | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) |
| list-delegated-administrators | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) |
| list-org-policies | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) |
| list-resource-groups | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | β |
| list-app-registry-applications | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | β |
| describe-delegated-admin-policy | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | β |
| org-governance-report | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) | Planned (Round 2) |
Roadmap: see knowledge/plan/aws-organizations-test-plan.md (repo-root relative) for the full T1-T4 specification including profile-semantics unit tests per command.
See Section 5: Test Coverage for run commands.
Why This Matters
Audit Evidence Trail: Every service map CI in your CMDB must trace back to a dated, verified source of truth. This page's 8 CSVs are that source. When auditors (internal or regulatory) ask "where did this delegation come from?" or "prove you had a backup policy in place on Q3 2026", you pull the timestamped files. Without dated exports, you have no audit proof.
Risk Visibility & CMDB Completeness: The governance snapshot table above translates technical governance data into business risk language. A security team might report "we have 7 SCPs configured"; a CFO reads this and asks "OK, so what can a compromised account do without those policies?" These risk translations help leadership understand why governance matters. Your service map is only as complete as your governance data β if delegated admins are missing from the CMDB, ownership is ambiguous. These 8 exports feed the CMDB ingest pipeline so the service map reflects reality, not assumptions.
π οΈ Operational Paths β Generate the EvidenceΒΆ
14 Organizations Commands Reference
Profile defaults β all org-wide commands use $AWS_MANAGEMENT_PROFILE (read from envvar)
Three exceptions use $AWS_OPERATIONS_PROFILE: collect-ram-shares (#7), list-resource-groups (#11), list-app-registry-applications (#12). For per-account scope, see aws-profile-semantics.md.
| # | Command | Purpose | Key Params |
|---|---|---|---|
| 1 | list-org-accounts |
List all AWS accounts in Organizations | --output-dir |
| 2 | list-org-users |
Discover IAM + Identity Center users | --output-dir [--iam OR --idc] |
| 3 | draw-org |
Visualize org structure | --output-dir [--policy --output-format mermaid\|diagrams] |
| 4 | check-landingzone |
Validate LZ readiness | --output-dir |
| 5 | check-controltower |
Validate CT readiness | --output-dir |
| 6 | find-lz-versions |
Discover LZ versions | --output-dir |
| 7 | β οΈ collect-ram-shares |
RAM shares OWNED/RECEIVED | --all-profile $AWS_OPERATIONS_PROFILE --output-dir |
| 8 | list-enabled-services |
Org-enabled AWS services | --output-dir |
| 9 | list-delegated-administrators |
Delegated admin accounts | --output-dir |
| 10 | list-org-policies |
SCP/Tag/Backup/AI policies | --policy-type <TYPE> --output-dir |
| 11 | β οΈ list-resource-groups |
Resource Groups | --all-profile $AWS_OPERATIONS_PROFILE --region --output-dir |
| 12 | β οΈ list-app-registry-applications |
AppRegistry apps | --all-profile $AWS_OPERATIONS_PROFILE --region --output-dir |
| 13 | describe-delegated-admin-policy |
Org resource-based policy | --output-dir |
| 14 | org-governance-report |
HTML governance dashboard | --output-dir |
Prerequisites: Set $AWS_MANAGEMENT_PROFILE before running org commands
All 14 organizations commands require either $AWS_MANAGEMENT_PROFILE or $AWS_OPERATIONS_PROFILE to be set as environment variables. Run one of the following at the start of your session:
# Option 1: Source from .env file (if configured)
set -a; source .env; set +a
# Option 2: Export individually
export AWS_MANAGEMENT_PROFILE=<your-management-profile>
export AWS_OPERATIONS_PROFILE=<your-operations-profile>
Commands will raise a clear UsageError if the required env var is missing.
Environment Variables & --all-profile Convention
All 14 organizations commands use the --all-profile convention for multi-account orchestration. The flag is OPTIONAL β when omitted, the command reads its env var directly (set via $AWS_MANAGEMENT_PROFILE or $AWS_OPERATIONS_PROFILE). The internal envvar= binding routes to the correct LZ profile per the command's API class (see CC-ADR-016 and .adlc/.claude/rules/engineering/aws-profile-semantics.md).
| Flag | Context | Env Var Routes To | Used By |
|---|---|---|---|
--all-profile |
Multi-account orchestration (org-wide or LZ-shared) β OPTIONAL; when omitted, env var is used automatically | $AWS_MANAGEMENT_PROFILE (Organizations APIs) OR $AWS_OPERATIONS_PROFILE (centralised-ops shared resources) β internal binding per command |
All 14 organizations commands |
--profile |
Single-account workload investigation | Per-workload ~/.aws/config profile |
ec2-investigate, vpc-investigate, rds-investigate, s3-investigate, workspaces-investigate, etc. β NOT used by org commands |
--region |
Regional service override | $AWS_DEFAULT_REGION |
list-resource-groups, list-app-registry-applications |
--policy-type |
Filter policy types | n/a (Click choice) | list-org-policies only |
--output-dir, --json, --output-format, --export-format |
Output control | n/a | All / most commands |
Environment variables are the source of truth. The 4 env vars establish multi-account access: $AWS_BILLING_PROFILE, $AWS_MANAGEMENT_PROFILE, $AWS_OPERATIONS_PROFILE, $AWS_PROFILE. When any organizations command runs, it reads the required env var automatically. Override with --all-profile only if you need a different profile for testing.
Error handling: If you forget to export AWS_MANAGEMENT_PROFILE, the command raises a clear UsageError telling you which env var to set. This prevents the silent-empty-result trap (anti-pattern: CROSS_ACCOUNT_SILENT_ZERO).
Migration from --management-profile / --operations-profile (pre-2026-05-22)
Earlier versions briefly shipped explicit named profile flags (--management-profile, --operations-profile). These have been replaced with the --all-profile convention to minimise CLI flag surface (HITL directive 2026-05-22).
- Old:
runbooks inventory list-org-accounts --management-profile $AWS_MANAGEMENT_PROFILE - New:
runbooks inventory list-org-accounts(env var auto-loaded) - Optional override:
runbooks inventory list-org-accounts --all-profile <other-profile>
No behavior change β the env var is still the source of truth.
Migration from dated filenames list-*-YYYY-MM-DD.{csv,md} (pre-2026-05-22)
Earlier versions emitted dated filenames (list-delegated-administrators-2026-05-21.csv). CC-ORG-001 standardised on flat <resource>.{json,csv,md} β git tracks history. Downstream consumers (notebooks, CSDM ingest, CMDB pipeline) read stable paths; auditors git log for history.
- Old:
list-delegated-administrators-2026-05-21.csv - New:
delegated-administrators.csv - For point-in-time recovery:
git show <commit>:tenants/b2b-energy/raw/organizations/delegated-administrators.csv
| Category | Profile | Commands | Total Duration | Output |
|---|---|---|---|---|
| Organizations governance | $AWS_MANAGEMENT_PROFILE |
7 stages (loop below) | ~90s | 7 datasets + 5 policy datasets in tenants/b2b-energy/raw/organizations/ |
# Prerequisites: export AWS_MANAGEMENT_PROFILE (org-wide scope only; for per-account commands see dedicated docs)
set -euo pipefail # fail-fast on any error (CC-ORG-017)
set -a; source .env; set +a
# Phase 0 β Auth pre-check (fail-closed BEFORE 8 stages waste time)
aws sts get-caller-identity --profile "$AWS_MANAGEMENT_PROFILE" > /dev/null \
|| { echo "ERROR: SSO expired β run: aws sso login --profile=$AWS_MANAGEMENT_PROFILE"; exit 2; }
TENANT="${TENANT:-b2b-energy}" # multi-tenant friendly
OUT="tenants/${TENANT}/raw/organizations"
mkdir -p "$OUT" # idempotent
# Profile note: all 8 stages use $AWS_MANAGEMENT_PROFILE (envvar auto-bound β see "Migration" admonition above)
# Stage 1-3: Org-wide identity (Mgmt profile auto-loaded via envvar)
uv run runbooks inventory list-org-accounts --output-dir "$OUT"
uv run runbooks inventory list-org-users --output-dir "$OUT" --iam --idc # explicit: both IAM + Identity Center
uv run runbooks inventory draw-org --output-dir "$OUT" --output-format mermaid # explicit format
# Stage 4-5: Delegation
uv run runbooks inventory list-delegated-administrators --output-dir "$OUT"
uv run runbooks inventory describe-delegated-admin-policy --output-dir "$OUT"
# Stage 6: Enabled services β friendly Name column via botocore catalog (CC-ORG-010)
uv run runbooks inventory list-enabled-services --output-dir "$OUT"
# Stage 7: 5-policy-type loop β outputs under $OUT/policies/ subdir (CC-ORG-002)
for policy_type in SERVICE_CONTROL_POLICY TAG_POLICY BACKUP_POLICY AISERVICES_OPT_OUT_POLICY DECLARATIVE_POLICY_EC2; do
uv run runbooks inventory list-org-policies --policy-type "$policy_type" --output-dir "$OUT"
done
# Per-account resources (resource-groups, app-registry) live OUTSIDE this org-wide scope.
# See: ./list-resource-groups.md and ./list-app-registry-applications.md
# Stage 8: Aggregate HTML governance dashboard (consumes stages 1-7)
uv run runbooks inventory org-governance-report --output-dir "$OUT"
Verify test coverage:
# Unit test (no AWS required, ~50s)
task test:org:unit
# E2E test with $AWS_MANAGEMENT_PROFILE:
task test:org:e2e
Output artifacts (each command emits 3 file types)
Each command writes a triplet to --output-dir:
| Extension | Purpose | Reader |
|---|---|---|
.json |
Raw API response, machine-readable | downstream pipelines, CMDB ingest, agents |
.csv |
Tabular columnar export | spreadsheet review, BI tools |
.md |
Markdown table with emoji headers | human review, governance reports |
Filename pattern: <resource>.{json,csv,md} (flat β no list- prefix, no date suffix). Git provides history; date-stamping the filename is duplicative. Example for list-delegated-administrators:
- delegated-administrators.json
- delegated-administrators.csv
- delegated-administrators.md
Policies subdir: list-org-policies writes its 5 policy-type outputs to $OUT/policies/<kebab-case-type>.{json,csv,md} (e.g. policies/service-control-policy.json).
See tenants/b2b-energy/raw/organizations/ for the canonical reference set (10 datasets + 5 policy triplets in policies/).
Use the /inventory:discover orchestrator for autonomous multi-account discovery with ADLC governance:
Then in Claude session with $AWS_MANAGEMENT_PROFILE configured:
Why use Claude commands: Automatic pagination, retry logic, confidence scoring, APRA CPS 234 audit trail in tmp/.
Validate Organizations data directly via AWS CLI. Org-scoped APIs use $AWS_MANAGEMENT_PROFILE; account-scoped use $AWS_OPERATIONS_PROFILE:
# Collect all β date-stamped JSON exports
DATE=$(date +%Y-%m-%d)
OUT=tenants/b2b-energy/raw/organizations
mkdir -p "$OUT"
for CMD in \
"describe-organization" \
"list-accounts" \
"list-roots" \
"list-delegated-administrators" \
"list-policies --filter SERVICE_CONTROL_POLICY" \
"list-policies --filter TAG_POLICY" \
"list-policies --filter BACKUP_POLICY" \
"list-aws-service-access-for-organization"; do
NAME=$(echo "$CMD" | awk '{print $1}' | tr - _)
aws organizations $CMD \
--profile $AWS_MANAGEMENT_PROFILE \
--output json \
> "$OUT/${NAME}-${DATE}.json"
done
# Quick verify (single commands)
aws organizations describe-organization --profile $AWS_MANAGEMENT_PROFILE
# Account-scoped (Resource Groups, AppRegistry, RAM)
aws resource-groups list-groups --profile $AWS_OPERATIONS_PROFILE
aws servicecatalog-appregistry list-applications --profile $AWS_OPERATIONS_PROFILE
aws ram list-resources --profile $AWS_OPERATIONS_PROFILE
Same 8 datasets rendered with pandas for SRE on-call review:
cloudops/notebooks/inventory/organizations.ipynb
Executive narrative + RAG charts for board-meeting screenshots:
cloudops/notebooks/cxo/aws-org-cxo-dashboard.ipynb
Expected Output β 8 CSV Files
Output location: tenants/b2b-energy/raw/organizations/ Β· Date suffix: $(date +%Y-%m-%d)
Why these 8 datasets map to the CMDB: Every Configuration Item in your ServiceNow service map must trace back to a dated source-of-truth export β the CMDB/CSDM mapping column in each tab below shows which ServiceNow table column each AWS field lands in. Missing tabs = blind spots in the service map that block APRA CPS 234 Β§36 audit responses.
Source: aws organizations list-delegated-administrators Β· File: delegated-administrators.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
Id |
AWS account ID of the delegated admin | ${AWS_ACCOUNT_ID} |
cmdb_ci_cloud_service_account.account_id |
Arn |
Account ARN | arn:aws:organizations::${AWS_ACCOUNT_ID}:account/o-abc123/... |
cmdb_ci_cloud_service_account.u_account_arn |
Email |
Root email of the admin account | [email protected] |
cmdb_ci_cloud_service_account.u_root_email |
Name |
Friendly account name | SecurityHub-Delegated-Admin |
cmdb_ci_cloud_service_account.name |
Status |
Account status | ACTIVE |
cmdb_ci_cloud_service_account.operational_status |
JoinedTimestamp |
When the account joined | 2024-09-12T14:33:18Z |
cmdb_ci_cloud_service_account.install_date |
DelegationEnabledDate |
When delegation was enabled | 2025-01-15T08:21:09Z |
cmdb_ci_cloud_service_account.u_delegation_enabled_date |
ServicePrincipal |
AWS service being delegated | securityhub.amazonaws.com |
cmdb_ci_service_offering.u_service_principal |
Source: aws organizations list-aws-service-access-for-organization Β· File: enabled-services.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
ServicePrincipal |
AWS service enabled org-wide | guardduty.amazonaws.com |
cmdb_ci_service_offering.u_service_principal |
Name |
Friendly service name (CC-ORG-004 enrichment) | Amazon GuardDuty |
cmdb_ci_service_offering.name |
DateEnabled |
When service access was enabled | 2024-06-22T11:04:55Z |
cmdb_ci_service_offering.u_enabled_date |
Source: aws organizations list-policies --filter SERVICE_CONTROL_POLICY Β· File: policies/service-control-policy.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
Id |
Policy identifier | p-FullAWSAccess |
u_cmdb_ci_governance_policy.policy_id |
Arn |
Policy ARN | arn:aws:organizations::aws:policy/service_control_policy/p-FullAWSAccess |
u_cmdb_ci_governance_policy.u_policy_arn |
Name |
Human-readable policy name | DenyRootUserActions |
u_cmdb_ci_governance_policy.name |
Description |
Policy intent | Blocks all actions by root user |
u_cmdb_ci_governance_policy.short_description |
Type |
Policy type | SERVICE_CONTROL_POLICY |
u_cmdb_ci_governance_policy.u_policy_type |
AwsManaged |
AWS-managed or customer-managed | false |
u_cmdb_ci_governance_policy.u_aws_managed |
Source: aws organizations list-policies --filter TAG_POLICY Β· File: policies/tag-policy.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
Id |
Policy identifier | p-tagpolicy01 |
u_cmdb_ci_governance_policy.policy_id |
Arn |
Policy ARN | arn:aws:organizations::${AWS_ACCOUNT_ID}:policy/o-abc123/tag_policy/p-tagpolicy01 |
u_cmdb_ci_governance_policy.u_policy_arn |
Name |
Human-readable policy name | RequireCostCenterTag |
u_cmdb_ci_governance_policy.name |
Description |
Policy intent | Enforces CostCenter tag on all billable resources |
u_cmdb_ci_governance_policy.short_description |
Type |
Policy type | TAG_POLICY |
u_cmdb_ci_governance_policy.u_policy_type |
AwsManaged |
AWS-managed or customer-managed | false |
u_cmdb_ci_governance_policy.u_aws_managed |
Source: aws organizations list-policies --filter BACKUP_POLICY Β· File: policies/backup-policy.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
Id |
Policy identifier | p-backup01 |
u_cmdb_ci_governance_policy.policy_id |
Arn |
Policy ARN | arn:aws:organizations::${AWS_ACCOUNT_ID}:policy/o-abc123/backup_policy/p-backup01 |
u_cmdb_ci_governance_policy.u_policy_arn |
Name |
Human-readable policy name | DailyBackup-RDS-Critical |
u_cmdb_ci_governance_policy.name |
Description |
Policy intent | Daily backup with 35-day retention for production RDS |
u_cmdb_ci_governance_policy.short_description |
Type |
Policy type | BACKUP_POLICY |
u_cmdb_ci_governance_policy.u_policy_type |
AwsManaged |
AWS-managed or customer-managed | false |
u_cmdb_ci_governance_policy.u_aws_managed |
Source: aws organizations list-policies --filter AISERVICES_OPT_OUT_POLICY Β· File: policies/aiservices-opt-out-policy.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
Id |
Policy identifier | p-ai-optout01 |
u_cmdb_ci_governance_policy.policy_id |
Arn |
Policy ARN | arn:aws:organizations::${AWS_ACCOUNT_ID}:policy/o-abc123/aiservices_opt_out_policy/p-ai-optout01 |
u_cmdb_ci_governance_policy.u_policy_arn |
Name |
Human-readable policy name | OptOut-AllAIServices-DataSharing |
u_cmdb_ci_governance_policy.name |
Description |
Policy intent | Opts out of AI service content storage across the org |
u_cmdb_ci_governance_policy.short_description |
Type |
Policy type | AISERVICES_OPT_OUT_POLICY |
u_cmdb_ci_governance_policy.u_policy_type |
AwsManaged |
AWS-managed or customer-managed | false |
u_cmdb_ci_governance_policy.u_aws_managed |
Source: aws servicecatalog-appregistry list-applications Β· File: app-registry-applications.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
id |
Application identifier | 01234abcd567efgh890ijkl |
cmdb_ci_business_app.u_appregistry_id |
arn |
Application ARN | arn:aws:servicecatalog:${AWS_DEFAULT_REGION}:${AWS_ACCOUNT_ID}:/applications/01234abcd567efgh890ijkl |
cmdb_ci_business_app.u_appregistry_arn |
name |
Business application name | RetailEnergyBillingPlatform |
cmdb_ci_business_app.name |
description |
Business purpose | Customer billing and meter-data ingestion platform |
cmdb_ci_business_app.short_description |
creationTime |
ISO-8601 creation timestamp | 2024-03-18T09:14:22Z |
cmdb_ci_business_app.first_discovered |
lastUpdateTime |
ISO-8601 last-update timestamp | 2026-04-30T17:55:01Z |
cmdb_ci_business_app.last_discovered |
Source: aws resource-groups list-groups Β· File: resource-groups.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
GroupName |
Resource group name | prod-billing-${AWS_DEFAULT_REGION} |
cmdb_ci_service_offering.name |
GroupArn |
Resource group ARN | arn:aws:resource-groups:${AWS_DEFAULT_REGION}:${AWS_ACCOUNT_ID}:group/prod-billing-${AWS_DEFAULT_REGION} |
cmdb_ci_service_offering.u_resource_group_arn |
Description |
Resource group purpose | All production billing-platform resources in region |
cmdb_ci_service_offering.short_description |
Source: aws organizations list-accounts Β· File: org-accounts.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
Id |
AWS account ID | ${AWS_ACCOUNT_ID} |
cmdb_ci_cloud_service_account.account_id |
Arn |
Account ARN | arn:aws:organizations::${AWS_ACCOUNT_ID}:account/o-abc123/... |
cmdb_ci_cloud_service_account.u_account_arn |
Email |
Root email | [email protected] |
cmdb_ci_cloud_service_account.u_root_email |
Name |
Friendly account name | vams-prod-billing |
cmdb_ci_cloud_service_account.name |
Status |
Account status | ACTIVE |
cmdb_ci_cloud_service_account.operational_status |
JoinedTimestamp |
When account joined | 2024-09-12T14:33:18Z |
cmdb_ci_cloud_service_account.install_date |
Source: aws iam list-users + aws identitystore list-users Β· File: org-users.csv
| Field | Description | Example | CMDB/CSDM CI Mapping |
|---|---|---|---|
UserName |
IAM or Identity Center user | alice.smith |
cmdb_ci_user.user_name |
UserId |
Stable identifier | 01234abc-... |
cmdb_ci_user.u_idp_id |
Email |
Primary email | [email protected] |
cmdb_ci_user.email |
Source |
IAM or IDENTITY_CENTER |
IDENTITY_CENTER |
cmdb_ci_user.u_idp_source |
LastUsed |
Last credential use | 2026-05-20T08:14:22Z |
cmdb_ci_user.last_login_time |
Source: aws organizations describe-resource-policy Β· File: delegated-admin-policy.json
JSON document granting Organizations API permissions to delegated admin accounts. Stored as JSON only (no tabular form). CMDB mapping: attach as u_cmdb_ci_governance_policy.u_policy_document reference on the Delegated Administrators tab rows.
Downstream flow β raw org data β CSDM hierarchy β ServiceNow CMDB
This page's CSV exports are the first step in a 4-stage pipeline that lands in your CMDB service map:
flowchart LR
A["raw/organizations/*.csv<br/>(8 CSV files)"] -->|V1 ingest| B["tenants/b2b-energy/inputs/<br/>csdm_hierarchy.csv"]
B -->|V4 transform| C["_base/transforms/snow/<br/>cmdb_ci_business_app.j2"]
C -->|CSDM publish| D["(ServiceNow CMDB<br/>cmdb_ci_* tables)"]
The flow explained: - V1 (ingest): Raw CSVs are validated and deduplicated into a unified CSDM hierarchy file. - V4 (transform): The Jinja2 template transforms CSDM data into ServiceNow CMDB CI records (who owns what, who delegates to whom). - CSDM publish: Reconciliation script imports the CI records into your ServiceNow instance.
Data lineage authority: CC-ADR-014 (4-way cross-validation; V4 native-API is ground truth). Regulatory requirement: APRA CPS 234 Β§36 mandates every CMDB CI be traceable to a dated raw export β these CSVs ARE that evidence.
π§ How This Data Becomes the CMDBΒΆ
Raw org CSVs flow through: V1 ingest β V4 transform (Jinja2) β ServiceNow CMDB. Data lineage and pipeline details: See advanced.md Section 1. Regulatory requirement: APRA CPS 234 Β§36 mandates every CMDB CI trace back to dated raw exports β these CSVs ARE that evidence.
π§ SRE DetailΒΆ
Before you run
Verify your SSO session and profile:
Required env vars:$AWS_MANAGEMENT_PROFILE (management account only), $TENANT=b2b-energy (optional, default).
Common issues
AccessDenied: Verify profile is scoped to management account only (no workload accounts). Grant user AmazonOrganizationsReadOnlyAccess.
Empty CSV: Valid states β no delegated admins, services, policies, or AppRegistry entries configured. See advanced.md Section 3 for detailed error resolution.
Run or extend this runbook
Execute via /adlc slash command (orchestrates product-owner β cloud-architect β specialists) or invoke skills directly from .claude/skills/. See advanced.md for multi-account discovery patterns.
Last Updated: 2026-05-22 (CC-ORG-001..007) | Test Coverage: planned per knowledge/plan/aws-organizations-test-plan.md | Scope: READONLY AWS Organizations API only β no mutations | Filename convention: flat
For questions on AWS Organizations API limits, delegation best practices, or CMDB integration, see CC-ADR-014: Canonical Data-Flow Architecture and the Command-Center architecture documentation.