Skip to content

DCS on AWS: how it maps

Before we start building, here's how DCS concepts translate to AWS services. This page is your reference; come back to it as you work through the labs.

The labs use simplified AWS implementations to teach the concepts. The table below shows both the basic approach (what you'll build in the labs) and the STANAG-compliant approach (documented in the architecture references) so you can see the progression.

Level 1: Labeling

DCS Concept Basic (Lab 1) STANAG-Compliant (Architecture Ref)
Security labels S3 Object Tags, flat key-value pairs like dcs:classification=SECRET STANAG 4774 XML in DynamoDB, structured labels with PolicyIdentifier, typed Categories
Label binding None, labels are advisory, anyone with S3 tag permissions can change them STANAG 4778, KMS asymmetric key signs label + data hash; tampering is cryptographically detectable
Data integrity S3 Versioning, tracks changes but doesn't detect tampering SHA-256 hash, verified on every access; data modification after labeling is detected
Label storage S3 tags on the object itself (10 tags max, 256 chars each) DynamoDB, unlimited label complexity, queryable via GSIs, separate access control
Automated labeling Lambda triggered on upload, analyzes content, applies tags Lambda triggered via EventBridge, creates 4774 XML, signs via KMS, stores in DynamoDB
Audit trail CloudTrail, logs S3 operations CloudTrail, logs S3 + DynamoDB + KMS Sign/Verify operations

Level 2: Access Control

DCS Concept AWS Service How we use it
User attributes (clearance, nationality) Amazon Cognito Custom user attributes in user pools
Policy Decision Point Amazon Verified Permissions Cedar policy language evaluates user attributes against data labels
Data labels S3 Object Tags Same labels from Lab 1, read by Lambda and passed to Cedar as entity attributes
Classification mapping Lambda Maps between national classification systems (UK SECRET = NATO SECRET = US IL-6)
Multiple organizations Separate Cognito User Pools One pool per nation, simulating federated identity

Level 3: Encryption

DCS Concept AWS Service How we use it
Data Encryption Key (DEK) OpenTDF SDK Generates unique AES-256-GCM key per data object
Key Encryption Key (KEK) AWS KMS Hardware-backed key that wraps/unwraps DEKs
Key Access Server (KAS) OpenTDF on ECS Fargate Service that evaluates policies and releases DEKs
Identity Provider Cognito User Pools Issues OIDC tokens with user attributes
TDF file storage S3 Stores encrypted TDF files (just ciphertext)
Attribute management OpenTDF Platform Defines attribute namespaces and user entitlements
Database RDS PostgreSQL Stores OpenTDF platform state

Level 3 is already STANAG-compliant

OpenTDF implements the NATO ZTDF standard directly. The TDF manifest supports STANAG 4774 labels as assertions with JWS binding (STANAG 4778). Unlike Level 1, there's no "basic vs assured" gap here; the lab builds the real thing.

The key difference at each level

Three DCS Levels

And the key difference in terms of protection:

Protection Levels Comparison

This is the fundamental progression. Each level adds more protection, and Level 3 is the only one where protection doesn't depend on infrastructure access. Within Level 1, the "assured" variant adds cryptographic integrity guarantees that the basic variant lacks.

Cost estimate

All three labs combined will cost approximately:

Lab Monthly cost Notes
Lab 1 ~$5 S3, Lambda, CloudTrail (mostly free tier)
Lab 2 ~$10-15 Adds Cognito, Verified Permissions
Lab 3 ~$15-25 Adds ECS Fargate, RDS db.t3.micro, KMS

Remember to clean up

The wrap-up section includes instructions to delete all resources. Lab 3 in particular runs ECS tasks and an RDS database that will accumulate costs if left running.

Ready to start building?

Head to Lab 1: Data Labeling to build your first DCS architecture on AWS.