Background
Application Security Design goals
CIA (Confidentiality, Integrity, Availability)
- Confidentiality:
- AWS is using the PARC Model
- Principal, Action, Resource, Condition
- AWS is using the PARC Model
- Integrity
- Availability: how long to encrypt/decrept the data, and how long the customer can stand if any of the system is not available and needs failover
- For example, how long it take to encrypt the data and write to S3
Key Implement to meet CIA requirements
- “Don’t store secret as plaintext on disk” and “Decrypt only happens in your instance”
- means encrypt and decrypt only happens inside your code inside your instance. (not aws service side)
- User AWS KMS client SDK; S3 encryption client ; DynamoDB encryption client
- Envolop Encryption : use random key to encrypt each piece of data, encrypted data and corresponding key stored together, the key will be encrypted using master key before being stored.
- “keep cipher text of secret in multiple locations”
- make use of S3 --> 11 9s durability or DynamoDB (if you consider latency)
- “Make sure secrets not being changed since last used”
- "if instance can launch, secret should be accessible; <1 min to provision plaintext secret to instance "
-
KMS exist in every Region (except China 😦 ) ;
-
Make careful decisions between retriving each time or caching in memory
-
Key policy is the king ! Key policy not equals with IAM policy.
Case Study : Okta
Okta is a unit of measure for cloud cover. From 0 to 8 describe how much visability it is.
- Simple Best Priatice to
- Data from Database needs to be encrypted at rest or in memory
- Encrypt Key only in Memory
- Service has access to plain text data