AWS for startups

The big little things everyone has to get right

Richard Crowley <rcrowley@rcrowley.org>

How would I know?

The big picture

Things I will not tell you are AWS best practices

Have lots of AWS accounts

By the way: I work on Substrate <https://substrate.tools/>, the whole point of which is to make having lots of AWS accounts so easy that everyone does it

Isolate environments

Isolate backup data

Story time: Ma.gnolia’s influence on Slack

Isolate services

Use Shared VPCs

Use three availability zones

Configure your one free CloudTrail

Story time: redacted

Configure GuardDuty

Particularly pay attention to findings like: InitialAccess:IAMUser/AnomalousBehavior, Persistence:IAMUser/AnomalousBehavior, Policy:IAMUser/RootCredentialUsage, and UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Avoid IAM users for humans

Story time: Bob

Use IAM roles and an IdP instead

Simplify IAM policies

Grant broad permissions within an account and few, if any, permissions between accounts

{
  "Version": "2012-10-17",
  "Statement": {
    "Action": "*",
    "Effect": "Allow",
    "Resource": "*"
  }
}
{
  "Version": "2012-10-17",
  "Statement": {
    "Action": "sts:AssumeRole",
    "Effect": "Allow",
    "Principal": {
      "AWS: [
        "arn:aws:iam::123456789012:role/Example"
      ]
    }
  }
}

Skip AWS Code* and use GitHub Actions

Even if you ignore this advice, don’t go running a Jenkins server

Use any high-level AWS service that saves you time

Story time: redacted

Savings Plans

The big picture

tl;dr

Thank you!

Questions?

<https://rcrowley.org/talks/aws-for-startups/>

<rcrowley@rcrowley.org>