Search for Well Architected Advice
< All Topics
Print

Enforce access control

Enforcing access control is critical to protecting your data at rest by ensuring that only authorized users and services can access sensitive information. Access control should be implemented using mechanisms such as isolation, versioning, and the principle of least privilege to limit access and prevent unauthorized exposure. It is essential to prevent public access to sensitive data and ensure access is restricted based on defined policies and roles.

  1. Apply the principle of least privilege: Grant only the minimum necessary permissions to users, roles, and services to perform their tasks. Use AWS Identity and Access Management (IAM) to define fine-grained access controls that allow access only to specific resources or actions. This limits the exposure of sensitive data by ensuring that users and services can access only the data they need.
  2. Isolate sensitive data: Use account, network, and resource isolation to limit access to sensitive data. For example, store highly sensitive data in isolated VPCs or AWS accounts, and apply resource policies that restrict access to these isolated environments. Consider using Amazon S3 bucket policies or VPC endpoints to restrict access to S3 buckets to only trusted networks.
  3. Enforce access restrictions to prevent public exposure: Ensure that public access is never granted to sensitive data. For services like Amazon S3, enable default bucket settings to block public access. Use AWS Config to enforce policies that prevent public access to S3 buckets, RDS instances, and other data stores. AWS Config can trigger alerts or remediation actions if public access is inadvertently granted.
  4. Leverage versioning and immutability controls: Enable versioning in services like Amazon S3 to track changes to your data and prevent accidental overwrites or deletions. Use S3 Object Lock to enforce write-once-read-many (WORM) controls, making certain versions of data immutable. This helps protect data from being altered or deleted after its creation, providing an extra layer of security for critical data.
  5. Use role-based access control (RBAC): Implement role-based access control (RBAC) to ensure that users are assigned roles with predefined permissions, reducing the risk of granting excessive privileges. Use IAM roles and policies to control who can access specific data, ensuring that access is based on the user’s role or function within the organization.
  6. Monitor and log access attempts: Use AWS CloudTrail and Amazon CloudWatch to log and monitor access attempts to your data. Set up alerts for unauthorized or unusual access patterns, such as attempts to access data from outside trusted networks or repeated failed login attempts. Monitoring access helps you detect and respond to potential security incidents in real time.
  7. Enforce multi-factor authentication (MFA): Require multi-factor authentication for accessing sensitive data or systems that manage access to sensitive data. MFA adds an additional layer of security, ensuring that even if credentials are compromised, unauthorized users are less likely to gain access to your data.
  8. Implement encryption-based access control: Use encryption as a form of access control by ensuring that only authorized users can access decryption keys. With AWS Key Management Service (KMS), you can enforce policies that restrict access to encryption keys, ensuring that only specific roles or users can decrypt sensitive data.

Supporting Questions:

  • How do you enforce the principle of least privilege and limit access to data at rest?
  • What processes are in place to ensure that public access is never granted to sensitive data?
  • How do you monitor and respond to unauthorized access attempts?

Roles and Responsibilities:

Cloud Security Engineer:

  • Responsibilities:
    • Configure IAM policies to enforce the principle of least privilege and control access to sensitive data.
    • Implement and manage isolation mechanisms such as VPCs and AWS accounts to isolate sensitive data from unauthorized access.
    • Use AWS Config to enforce access control policies and prevent public exposure of data.

Cloud Administrator:

  • Responsibilities:
    • Use versioning, immutability, and encryption to add additional layers of protection to sensitive data.
    • Monitor access attempts using AWS CloudTrail and CloudWatch, setting up alerts for unauthorized access patterns.
    • Ensure that multi-factor authentication (MFA) is enforced for sensitive data access.

Artefacts:

  • Access Control Policies: Documentation of IAM roles and policies used to control access to sensitive data, including specific permissions granted to each role.
  • Access Logs and Audit Reports: Logs generated by AWS CloudTrail and CloudWatch detailing access attempts, including successful and failed access attempts.
  • Config Compliance Reports: Reports generated by AWS Config that show compliance with access control policies, including validation that no public access has been granted to sensitive resources.

Relevant AWS Services:

AWS Access Control Services:

  • AWS Identity and Access Management (IAM): Manages access permissions and roles for AWS resources, enabling fine-grained control of who can access specific data.
  • AWS Config: Continuously monitors your environment to enforce access control policies, including preventing public access to resources like Amazon S3 and RDS instances.
  • Amazon S3 Bucket Policies: Controls access to S3 buckets, allowing you to restrict access based on IP addresses, IAM roles, and other criteria. Use bucket policies to prevent public access and enforce least-privilege access.

Monitoring and Logging Tools:

  • AWS CloudTrail: Logs API calls and access attempts to AWS resources, providing visibility into who accessed or attempted to access sensitive data.
  • Amazon CloudWatch: Monitors access patterns and sets up alarms for unusual or unauthorized access attempts, helping detect and respond to potential security incidents.

Data Security Tools:

  • AWS Key Management Service (KMS): Manages encryption keys and enforces policies to control who can access encrypted data, adding an additional layer of access control.
  • S3 Object Lock and Versioning: Adds immutability and versioning capabilities to Amazon S3, helping prevent accidental data modifications or deletions while enforcing secure access to previous versions of data.
Table of Contents