Tuesday, January 21, 2014

Best Practices for accessing AWS accounts - Quick Reference

Introduction

Now and then I run into the question what best practices should apply to providing access to your AWS accounts. To a large extent, this information is readily available in resources across the internet (such as this and this) but I thought it would be useful to provide a quick reference to that.

Providing access to AWS services

Practice
Rationale
Priority
Always use IAM users, do not use AWS Account user (or access keys)
This AWS Account User is considered the root user, providing access to all services and data. Normal operations should not be carried out using this account, instead an IAM account with the appropriate privileges is recommended.
High
Use different AWS accounts for production and non-production purposes.
This provides strong separation, and requires re-login when moving from one account to another. This reduces risk for un intended changes, and allows tailoring access rights for devops engineers.
High
Use RBAC practices using IAM groups, using least privilege model.
Using roles (groups) provides a more transparent and manageable access right model.
Medium
Enforce strong password policy
Important to prevent passwords from being guessed or cracked.
High
Enable multi-factor authentication
Enable multi-factor authentication for both (human) IAM users as well as the account owner to increase level of security, providing an additional layer of security.
High
Implement key rotation
It is advisable to ensure that access keys for IAM users are changed once in a while (say one per three months). For more info, see this blog.
Medium
Let users manage their own password
Ensure that users can manage their own passwords, and (strongly) encourage a password rotation schedule.
Medium
Use policy conditions for extra security
By means of policy, additional security can enforced. For instance, by defining that only particular users can delete a particular AWS resource. This is useful for fundamental services which failure would have great impact on service.
Medium
Enable Audit trails
Enabling AWS’ CloudTrail option enables security analysis, resource change tracking, and compliance auditing.
Medium

Providing access to the AWS hosted environments

Practice
Rationale
Priority
Always use Virtual Private Clouds
This is the default in newly created AWS Accounts, but should be used in all cases as it adds a lot of additional options from a security perspective. For certain applications, a dedicated VPC can be considered.
High
Use temporary credentials
When providing your server instances access to AWS services, always deploy temporary credentials in combination with IAM roles.
High
Consider use of VPNs
Consider using a VPN connection between your corporate network and the VPC, as it provides a strongly secured connection. However, ensure that only qualified staff have access to that particular network zone.
Medium
Use remote access bastions
In case there is no VPN connectivity between the VPC and the corporate network, use (SSH or RDP) Bastions to get access to your server instances. Only run these bastions when access is required.
High