DoD Cloud Computing Security Requirements Guide level for higher-sensitivity CUI and National Security Systems information.
No AWS conformance pack exists for the DoD SRG. FedRAMP High + CMMC 2.0 L2 stand in; IL5-specific SRG controls (CNSSI 1253 overlays, SCCA) are NOT covered by Config rules.
Pinned to awslabs/aws-config-rules commit 3c4879c18c68.
| Pack | Template | Control mapping |
|---|---|---|
| FedRAMP-HighPart1 | YAML | AWS docs |
| FedRAMP-HighPart2 | YAML | AWS docs |
| CMMC-2.0-Level-2 | YAML | AWS docs |
Baseline validation status: Not deployment-validated (sgea verify / sgea check only); baseline flagged scaffold-unverified (sgea export needs --allow-unverified).
| Profile | Composes | How this baseline is used | Partition | Regions (primary; allowed) | Terraform | CDK |
|---|---|---|---|---|---|---|
dod-il5.govcloud |
dod-il5 | composed: pack deployed, rules checked | aws-us-gov | us-gov-west-1; us-gov-west-1, us-gov-east-1 | not deployed (scaffold) | not deployed (scaffold) |
163 AWS Config rules in the composed pack(s). Every rule is checked by sgea check or carries one recorded disposition (sources/inferred/rule-dispositions.yaml). Full list: row dod-il5 of docs/CONTROL-COVERAGE.md; rules by status:
| Status | Meaning | Rules |
|---|---|---|
checked |
Enclave-implemented, checked by sgea check (Terraform plan and CDK template) |
72 |
implement |
Enclave-owned, not yet emitted (open gap) | 0 |
tenant |
Tenant app (service allowed for tenants; the enclave creates none) | 1 |
not-in-enclave |
Service neither deployed nor allowed (SCP-denied; vacuously compliant) | 65 |
customer-prerequisite |
Customer prerequisite (landing zone, identity, VPC) | 18 |
process |
Process (manual evidence, e.g. Audit Manager) | 2 |
runtime-only |
Runtime-only (observable on the live account; AWS Config evaluates it) | 5 |
Also: 17 documented exception(s) (NON_COMPLIANT by design) and 1 known open finding(s) apply — see Customer responsibilities.
Both engines emit the same resources: see README — What the enclave deploys. Rules of this baseline the enclave implements and sgea check verifies, by service:
| Service | Checked rules |
|---|---|
| backup | backup-plan-min-frequency-and-min-retention-check, backup-recovery-point-encrypted, backup-recovery-point-manual-deletion-disabled, backup-recovery-point-minimum-retention-check |
| cloudtrail | cloud-trail-cloud-watch-logs-enabled, cloud-trail-encryption-enabled, cloud-trail-log-file-validation-enabled, cloudtrail-enabled, cloudtrail-s3-bucket-public-access-prohibited, cloudtrail-s3-dataevents-enabled, cloudtrail-security-trail-enabled, multi-region-cloudtrail-enabled |
| cloudwatch | cloudwatch-alarm-action-check, cloudwatch-log-group-encrypted |
| cmk | cmk-backing-key-rotation-enabled |
| cw | cw-loggroup-retention-period-check |
| dynamodb | dynamodb-autoscaling-enabled, dynamodb-in-backup-plan, dynamodb-pitr-enabled, dynamodb-resources-protected-by-backup-plan, dynamodb-table-encrypted-kms |
| ec2 | ebs-snapshot-public-restorable-check, ec2-ebs-encryption-by-default, vpc-default-security-group-closed, vpc-flow-logs-enabled |
| ecr | ecr-private-image-scanning-enabled |
| guardduty | guardduty-enabled-centralized |
| iam | iam-customer-policy-blocked-kms-actions, iam-inline-policy-blocked-kms-actions, iam-no-inline-policy-check, iam-password-policy, iam-policy-no-statements-with-admin-access, iam-policy-no-statements-with-full-access |
| inspector | inspector-ec2-scan-enabled, inspector-ecr-scan-enabled, inspector-lambda-standard-scan-enabled |
| kms | kms-cmk-not-scheduled-for-deletion |
| lambda | lambda-concurrency-check, lambda-dlq-check, lambda-function-public-access-prohibited, lambda-inside-vpc |
| rds | aurora-resources-protected-by-backup-plan, db-instance-backup-enabled, rds-automatic-minor-version-upgrade-enabled, rds-cluster-multi-az-enabled, rds-enhanced-monitoring-enabled, rds-in-backup-plan, rds-instance-deletion-protection-enabled, rds-instance-public-access-check, rds-logging-enabled, rds-multi-az-support, rds-resources-protected-by-backup-plan, rds-snapshot-encrypted, rds-storage-encrypted |
| s3 | s3-account-level-public-access-blocks-periodic, s3-bucket-cross-region-replication-enabled, s3-bucket-default-lock-enabled, s3-bucket-level-public-access-prohibited, s3-bucket-logging-enabled, s3-bucket-public-read-prohibited, s3-bucket-public-write-prohibited, s3-bucket-replication-enabled, s3-bucket-server-side-encryption-enabled, s3-bucket-ssl-requests-only, s3-bucket-versioning-enabled, s3-default-encryption-kms, s3-resources-protected-by-backup-plan, s3-version-lifecycle-policy-check |
| secretsmanager | secretsmanager-rotation-enabled-check, secretsmanager-using-cmk |
| securityhub | securityhub-enabled |
| sns | sns-encrypted-kms |
SGEA's own Bedrock / AgentCore controls (sources/inferred/service-controls.yaml, all checked by sgea check; conditional ones apply only when the profile setting is on — e.g. DoD SCCA only with dod-il4 / dod-il5):
| Service | SGEA controls | Conditional |
|---|---|---|
| bedrock | 12 | 7 |
| bedrock-agentcore | 27 | 3 |
| dod-scca | 5 | 5 |
| Rule | Disposition | Reason |
|---|---|---|
access-keys-rotated |
customer-prerequisite | IAM user access keys; the enclave creates no IAM users (roles only). Landing-zone identity baseline (IAM Identity Center). |
account-part-of-organizations |
customer-prerequisite | The enclave account must be an Organizations member (required for the SCP/RCP layer). Landing zone. |
iam-group-has-users-check |
customer-prerequisite | IAM groups/users are not created by the enclave; identity via IAM Identity Center. |
iam-root-access-key-check |
customer-prerequisite | Root user hygiene is an account baseline (Control Tower / LZA). |
iam-user-group-membership-check |
customer-prerequisite | No IAM users in the enclave; identity via IAM Identity Center. |
iam-user-mfa-enabled |
customer-prerequisite | No IAM users in the enclave; identity via IAM Identity Center (MFA enforced there). |
iam-user-no-policies-check |
customer-prerequisite | No IAM users in the enclave. |
iam-user-unused-credentials-check |
customer-prerequisite | No IAM users in the enclave. |
internet-gateway-authorized-vpc-only |
customer-prerequisite | The enclave VPC is customer-supplied and must have no IGW (examples/sandbox-network has none). |
mfa-enabled-for-iam-console-access |
customer-prerequisite | No IAM users in the enclave; console access via IAM Identity Center with MFA. |
no-unrestricted-route-to-igw |
customer-prerequisite | Customer VPC routing; the enclave requires private subnets without IGW routes. |
response-plan-tested |
process | Manual control: incident-response plan exercise. |
restricted-common-ports |
customer-prerequisite | Security groups are customer inputs; the sandbox fixture allows only 443/5432 inside the VPC CIDR. |
restricted-ssh |
customer-prerequisite | Security groups are customer inputs (endpoint / agent / Aurora SGs); the sandbox fixture opens no SSH. |
root-account-hardware-mfa-enabled |
customer-prerequisite | Root user MFA is an account baseline (Control Tower / LZA); cannot be set by IaC. |
root-account-mfa-enabled |
customer-prerequisite | Root user MFA is an account baseline; cannot be set by IaC. |
subnet-auto-assign-public-ip-disabled |
customer-prerequisite | Customer VPC subnets; the enclave requires private subnets (sandbox fixture complies). |
vpc-sg-open-only-to-authorized-ports |
customer-prerequisite | Security groups are customer inputs; no 0.0.0.0/0 ingress in the sandbox fixture. |
vpc-vpn-2-tunnels-up |
customer-prerequisite | Site-to-site VPN (e.g. DoD BCAP path) is customer network; the enclave creates none. |
vuln-management-plan-exists |
process | Manual control: vulnerability-management plan. |
| Rule | Disposition | Reason |
|---|---|---|
dynamodb-throughput-limit-check |
runtime-only | Account throughput vs. limit at runtime; the ledger is on-demand. |
elasticache-redis-cluster-automatic-backup-check |
tenant | ElastiCache is allowed for tenants; the enclave creates no cache. |
guardduty-non-archived-findings |
runtime-only | Operational: GuardDuty findings must be triaged within the window; the enclave enables GuardDuty (security-services). |
rds-snapshots-public-prohibited |
runtime-only | Snapshots exist only at runtime; Aurora is private, and the snapshot-sharing block is set account-wide (see ebs-snapshot-public-restorable-check for EBS). |
s3-bucket-policy-grantee-check |
runtime-only | Pack leaves the allowed grantees unset (customer-specific); enclave bucket policies grant only AWS services / the account, with conditions (checked by s3-bucket-ssl-requests-only and PAB mappings). |
secretsmanager-scheduled-rotation-success-check |
runtime-only | Rotation outcome is only observable live; the Aurora admin secret is RDS-managed with rotation on. |
| Rule | Resource | Reason |
|---|---|---|
s3-bucket-default-lock-enabled |
sgea-<env>-config-* |
AWS Config delivery bucket: S3 rejects writes to Object Lock buckets without a checksum header and the AWS Config writer sends none (verified: InsufficientDeliveryPolicyException). Otherwise identical hardening. |
s3-bucket-default-lock-enabled |
sgea-<env>-access-logs-* |
S3 server-access-log target: log delivery does not support Object Lock targets reliably; access logs are not the system of record. |
s3-bucket-replication-enabled |
sgea-<env>-config-* |
AWS Config retains configuration history itself; the delivery bucket is not replicated. |
s3-bucket-replication-enabled |
sgea-<env>-access-logs-* |
Access-log sink (and its replica-region twin) is not replicated: it records access to the replicated log store. |
s3-bucket-replication-enabled |
sgea-<env>-logs-replica-* |
Cross-region replica of the log store: it is the replication destination. |
s3-bucket-logging-enabled |
sgea-<env>-access-logs-* |
S3 server-access-log target cannot log to itself. |
s3-bucket-policy-grantee-check |
sgea-<env>-config-* |
Config delivery statement grants Principal * restricted by aws:PrincipalArn = the AWS Config service-linked role and the account (AWS's documented pattern for SLR delivery); the rule only matches literal principals. |
aurora-resources-protected-by-backup-plan |
* |
Time-dependent: AWS Backup counts a resource as protected once its first recovery point exists (daily plan, 05:00 UTC). The enclave Aurora cluster is in the backup selection from deploy. |
rds-resources-protected-by-backup-plan |
* |
Time-dependent (first recovery point); see aurora-resources-protected-by-backup-plan. |
dynamodb-resources-protected-by-backup-plan |
* |
Time-dependent (first recovery point); the token ledger is in the backup selection from deploy. |
s3-resources-protected-by-backup-plan |
* |
Time-dependent (first recovery point); the log / config stores are in the backup selection from deploy. |
s3-default-encryption-kms |
sgea-<env>-access-logs-* |
S3 server-access logging supports only SSE-S3 (AES256) destination buckets, not SSE-KMS (AWS S3 User Guide); the access-log sink uses SSE-S3 with versioning, TLS-only policy and Block Public Access. |
lambda-concurrency-check |
* (cdk-deploy-helper) |
CDK deploy helpers (AwsCustomResource provider, PropagationWait) run for seconds per deployment; reserving the pack's 500-1000 for each would exhaust account concurrency. Their log groups are CMK-encrypted with pack retention. |
lambda-inside-vpc |
* (cdk-deploy-helper) |
CDK deploy helpers call AWS control-plane APIs during deployment only; they handle no enclave data. |
lambda-dlq-check |
* (cdk-deploy-helper) |
CDK deploy helpers are invoked synchronously by CloudFormation; failures surface as stack events, not dead letters. |
cloudtrail-s3-dataevents-enabled |
* |
The enclave trail records S3 data events for every bucket except its own log store (resources.ARN NotStartsWith the log store): logging the trail's destination would record the trail's own writes in a feedback loop. Object-level access to the log store is recorded by its S3 server access logs (access-log sink), and the store is Object Lock / versioned, CMK-encrypted, replicated. |
dynamodb-in-backup-plan |
* |
Time-dependent: AWS Config can evaluate the new token-ledger table before the backup plan that selects it exists ('No backup plans are available for evaluation'); the periodic re-evaluation (24 h), or start-config-rules-evaluation after deploy (MANUAL-STEPS), turns it COMPLIANT. |
| Finding | Rule | Owner | Status | What to do / fix |
|---|---|---|---|---|
| SGEA-KF-02 | lambda-concurrency-check |
tenant | open | Choose one with your ISSO: (a) set reserved concurrency >= 500 on tenant functions and size the Lambda concurrency quota for them, or (b) deploy the conformance packs with a ConcurrencyLimitLow / High range that fits your workloads (the control — every function has a concurrency limit — is unchanged), or (c) record the tenant deviation as accepted. |
No sandbox evidence: no profile composing this baseline has been deployed. Verification is sgea verify and sgea check on the exported IaC only.
MANUAL-STEPS.mdandOPERATIONS.mdin eachsgea export(build/<profile-id>/): deployment steps outside the IaC, known-finding actions and day-2 operation for that profile.- Deployment prerequisites
- Incident response
- Key and secret management
- Change and upgrade
- Tenant onboarding
- Decommissioning
- Access review