use MFA (Multi Factor Authentication)
give users the minimal amount of permissions they need to perform their job
1 IAM User per 1 Physical Person
1 IAM Role per Application
never share IAM credentials
never write IAM credential in code or commit to git
only use the ROOT account for initial setup
never put personal credentials on EC2 ⇒ use IAM roles in stead
on premise server best practice is to call STS to obtain temporary security credentials
cross account access
AssumeRole
API)