Thiết kế kiến trúc bảo mật trên AWS

1.1 Áp dụng AWS security best practices cho IAM user và root user, ví dụ: MFA

Root user: Root user có full access vào toàn bộ AWS account. Chỉ nên dùng cho các tác vụ ban đầu hoặc tác vụ đặc biệt, sau đó cần bảo vệ bằng MFA và hạn chế sử dụng.

IAM Users: IAM user đại diện cho từng người dùng hoặc application cần truy cập AWS resources. Với công việc hằng ngày, hãy dùng IAM user thay vì root user.

1.2 Các security best practices quan trọng

Least privilege: Chỉ cấp đúng quyền cần thiết. Tránh dùng quyền quá rộng như AdministratorAccess nếu không thật sự cần.

MFA: Bật MFA cho root user và các IAM user quan trọng. MFA giúp giảm rủi ro nếu password hoặc access credential bị lộ.

Strong password: Thiết lập password policy với độ dài tối thiểu, độ phức tạp và rotation định kỳ.

Credential rotation: Rotate access key thường xuyên. Không hardcode access key trong source code. Với EC2, hãy dùng IAM role thay vì long-term credential.

Monitoring: Dùng AWS CloudTrail để ghi lại API calls và theo dõi hoạt động bất thường trong AWS account.

1.3 Thiết kế mô hình IAM user, group, role và policy

IAM giúp bạn quản lý access theo nhiều cách khác nhau:

IAM Users: IAM user là identity riêng cho từng người hoặc application. Có thể gắn policy trực tiếp, nhưng cách này khó quản lý khi số lượng user tăng.

IAM Groups: IAM group gom nhiều user có cùng vai trò. Bạn gắn policy vào group, và các user trong group sẽ nhận quyền tương ứng.

IAM Roles: IAM role dùng cho temporary access. Role phù hợp cho:

  • AWS services như EC2 hoặc Lambda: Service assume role để truy cập AWS resources mà không cần hardcode credential.
  • Federated users: Người dùng từ Active Directory hoặc identity provider có thể truy cập AWS mà không cần tạo IAM user riêng.
  • Cross-account access: User hoặc service ở account này có thể truy cập resource ở account khác thông qua IAM role.

IAM Policies: Policy là JSON document định nghĩa permission, gồm:

  • Actions: Hành động được phép, ví dụ s3:GetObject hoặc ec2:RunInstances.
  • Resources: Resource mà action được áp dụng, ví dụ một S3 bucket hoặc EC2 instances.
  • Effect: Quyền là Allow hoặc Deny.

1.4 Các loại policy

AWS Managed Policies: Policy do AWS tạo và quản lý. Phù hợp để bắt đầu nhanh với các use case phổ biến.

Customer Managed Policies: Policy do bạn tự tạo trong AWS account. Phù hợp khi cần control chi tiết hơn.

Inline Policies: Policy gắn trực tiếp vào user, group hoặc role. Nên hạn chế dùng nếu cần tái sử dụng và quản lý lâu dài.

1.5 Ví dụ

Ví dụ một development team chạy application trên EC2:

  • Users: Mỗi developer có một IAM user.
  • Group: Các developer được thêm vào IAM group “Developers”.
  • Policy (Customer Managed): Policy “DevAccess” cấp quyền deploy lên S3, start/stop EC2 và xem CloudWatch logs.
  • Group Attachment: Gắn policy “DevAccess” vào group “Developers”.
  • Role: Tạo IAM role “EC2AppRole” để EC2 đọc config từ S3 bucket.
  • Instance Profile: Gắn “EC2AppRole” vào EC2 thông qua instance profile.

1.6 Thiết kế role-based access với AWS STS, assume role và cross-account access

Phần này tập trung vào IAM role và temporary credential.

IAM Roles: IAM role là identity có thể được assume. Role không có long-term access key, mà dùng temporary credential từ AWS STS.

AWS Security Token Service (STS): STS cung cấp temporary credential gồm access key ID, secret access key và session token. Credential này có thời hạn ngắn, giúp tăng security.

  • Assume role: IAM user hoặc AWS service assume role để nhận permission tạm thời.
  • Federation: Người dùng từ Active Directory, SAML hoặc web identity có thể nhận temporary AWS credential thông qua STS.
  • Cross-account access: Account này có thể truy cập resource ở account khác thông qua role và trust policy.

Switch role: Trong AWS Management Console, switch role giúp user chuyển nhanh giữa các role hoặc AWS accounts khác nhau.

Cross-account access: Thường được thiết kế bằng cách tạo role trong resource account, sau đó cho principal ở account khác assume role đó thông qua trust policy.

  • Tạo role trong resource account, nơi chứa resource cần truy cập.
  • Thêm trust policy để cho user, role hoặc service ở account khác assume role.

1.7 Ví dụ về cross-account access

Account A có IAM user. Account B có S3 bucket. Để user ở Account A truy cập S3 bucket ở Account B:

  • Trong Account B, tạo IAM role có quyền truy cập S3 bucket.
  • Trong Account B, thêm trust policy cho phép user ở Account A assume role.
  • User ở Account A assume role và nhận temporary credential để truy cập S3 bucket.

1.8 Thiết kế multi-account security với AWS Control Tower và SCPs

Multi-account strategy giúp tách biệt environment, workload và permission rõ ràng hơn.

AWS Control Tower: Control Tower giúp thiết lập và quản trị multi-account environment dựa trên AWS Organizations. Nó tự động tạo account, áp dụng guardrails và baseline security.

Service Control Policies (SCPs): SCP là guardrail ở cấp AWS Organizations. SCP không cấp permission, mà giới hạn permission tối đa mà IAM policy trong member account có thể cấp.

1.9 Điểm cần nhớ về SCP

  • Inheritance: SCP được kế thừa từ organization root, OU đến account.
  • Default deny: Cần có quyền Allow phù hợp để action được thực hiện.
  • Impact on IAM: SCP chỉ giới hạn permission, không trực tiếp cấp permission.
  • Use cases: Chặn disable CloudTrail, giới hạn Region, giới hạn service hoặc bắt buộc encryption.

1.10 Ví dụ về SCP

Một SCP có thể deny ec2:RunInstances. Khi đó, dù IAM policy cho phép launch EC2, action này vẫn bị chặn bởi SCP.

1.11 Xác định khi nào dùng resource policy

Resource policy là JSON policy gắn trực tiếp vào resource để định nghĩa ai được truy cập và được làm gì.

Một số AWS services thường dùng resource policy:

Amazon S3: Bucket policy kiểm soát access vào bucket và object, ví dụ public read hoặc cross-account upload.

AWS IAM: Trust policy trên IAM role quyết định ai có thể assume role đó.

AWS KMS: Key policy quyết định ai có thể dùng KMS key để encrypt hoặc decrypt data.

Amazon SQS và Amazon SNS: Queue policy và topic policy kiểm soát ai có thể send hoặc receive message.

1.12 Điểm cần nhớ về resource policy

  • Resource policy kiểm soát access ở cấp resource.
  • Resource policy được viết bằng JSON.
  • Có thể kết hợp resource policy với identity-based policy để control chi tiết hơn.

1.13 Xác định khi nào liên kết directory service với IAM role

Federation cho phép user từ external IdP truy cập AWS mà không cần tạo IAM user riêng cho từng người.

Federation với IAM role thường hoạt động như sau:

  • Trust relationship: Thiết lập trust giữa AWS account và IdP như Microsoft Active Directory, Okta hoặc Ping Identity.
  • IAM role: Tạo IAM role để định nghĩa permission cho federated users.
  • Authentication: User đăng nhập bằng credential hiện có từ IdP.
  • Assume role: IdP cho phép user assume IAM role và nhận temporary credential.
  • Access AWS resources: User truy cập AWS resources theo permission của role đã assume.

1.14 Khi nào dùng federation

  • Bạn đã có directory service và không muốn quản lý IAM user riêng lẻ.
  • Bạn muốn áp dụng authentication policy nhất quán cho toàn tổ chức.
  • Bạn cần cấp AWS access cho nhân viên, partner hoặc external users.

1.15 Lợi ích của federation

  • Simplified user management: Không cần tạo và quản lý nhiều IAM user.
  • Better security: Dùng authentication system hiện có và tránh credential bị phân tán.
  • Centralized access control: Quản lý user access tập trung qua directory service.

2.1 Thiết kế VPC architecture với security components

Virtual Private Cloud (VPC) là mạng ảo riêng trong AWS, nơi bạn kiểm soát IP range, subnet, route table và cách traffic di chuyển.

Các security components chính trong VPC gồm:

Security Groups: Firewall ảo ở cấp EC2 instance. Security Group là stateful, nên response traffic được tự động cho phép.

Route Tables: Xác định traffic từ subnet sẽ đi đâu, ví dụ ra internet, sang subnet khác hoặc về on-premises.

Network ACLs (NACLs): Security layer ở cấp subnet. NACL là stateless, nên cần rule cho cả inbound và outbound traffic.

NAT Gateways: Cho phép resource trong private subnet truy cập internet hoặc AWS services, nhưng không cho internet chủ động truy cập ngược vào resource đó.

2.2 Xác định network segmentation strategy

Network segmentation là chia network thành các phần nhỏ hơn để giảm rủi ro khi có security incident.

Public subnet và private subnet thường được dùng như sau:

Public Subnets: Có route ra internet thông qua Internet Gateway. Thường dùng cho Load Balancer hoặc web server cần public access.

Private Subnets: Không có direct route từ internet. Thường dùng cho database, application server và backend system.

Ví dụ đơn giản: Load Balancer ở public subnet, application server và database ở private subnet. Security Group chỉ mở đúng traffic cần thiết giữa các layer.

2.3 Tích hợp AWS services để bảo mật application

AWS có nhiều services giúp tăng application security:

AWS Shield: Bảo vệ trước DDoS attack. Shield Standard được bật mặc định, Shield Advanced cung cấp protection và support chuyên sâu hơn.

AWS WAF: Web Application Firewall giúp chặn các web attack phổ biến như SQL injection và cross-site scripting. Có thể dùng với CloudFront, Application Load Balancer và API Gateway.

IAM Identity Center, trước đây là AWS SSO: Quản lý user access tập trung cho nhiều AWS accounts và applications. Hỗ trợ Active Directory, Okta, Azure AD và các IdP khác.

AWS Secrets Manager: Lưu trữ và rotate secrets như database credential, API key và OAuth token. Không nên để secrets trực tiếp trong source code.

2.4 Bảo mật external network connection đến và đi từ AWS Cloud

Khi kết nối on-premises network hoặc external network với AWS, bạn cần đảm bảo connection an toàn và ổn định.

VPN: AWS VPN tạo encrypted connection giữa on-premises và VPC. Site-to-Site VPN dùng cho network-to-network, còn Client VPN dùng cho từng user.

AWS Direct Connect: Tạo dedicated connection giữa on-premises và AWS. Phù hợp khi cần bandwidth cao, latency thấp và connection ổn định hơn VPN.

Kết hợp đúng VPN, Direct Connect và VPC design sẽ giúp workload trên AWS an toàn và dễ kiểm soát hơn.

2.5 Các điểm chính cần ghi nhớ

  • Security là shared responsibility giữa AWS và customer.
  • Defense in depth giúp bảo vệ ở nhiều layer: network, application và data.
  • Automation giúp giảm lỗi thủ công và cải thiện security operations.

3.1 Mapping AWS technology với compliance requirements

Nhiều tổ chức cần đáp ứng compliance framework như HIPAA, PCI DSS hoặc GDPR. AWS cung cấp nhiều services hỗ trợ việc này.

AWS Artifact: Cung cấp compliance reports như SOC reports, PCI DSS attestation và các tài liệu liên quan.

AWS Audit Manager: Tự động thu thập evidence và hỗ trợ audit theo các compliance frameworks.

AWS Config: Theo dõi resource configuration, phát hiện thay đổi và kiểm tra resource có tuân thủ policy hay không.

Các services này giúp bạn chứng minh và duy trì compliance trong AWS environment.

3.2 Encryption at rest

Encryption at rest giúp bảo vệ data khi data được lưu trữ trên AWS.

AWS Key Management Service (AWS KMS): Dịch vụ quản lý encryption keys, tích hợp với Amazon S3, Amazon EBS, Amazon RDS và nhiều AWS services khác.

Server-Side Encryption (SSE): Nhiều AWS storage services hỗ trợ SSE, ví dụ Amazon S3 có SSE-S3, SSE-KMS và SSE-C.

Client-Side Encryption: Bạn encrypt data trước khi upload lên AWS. Cách này cho nhiều control hơn, nhưng cũng cần tự quản lý key cẩn thận hơn.

3.3 Encryption in transit

Encryption in transit bảo vệ data khi data di chuyển giữa các system.

TLS/SSL: Giao thức tiêu chuẩn để encrypt traffic qua internet. Elastic Load Balancing, CloudFront và API Gateway đều hỗ trợ TLS/SSL.

AWS Certificate Manager (ACM): Giúp tạo, quản lý và triển khai SSL/TLS certificate cho AWS services.

VPN và Direct Connect: Hỗ trợ secure connection giữa on-premises network và AWS.

3.4 Các điểm cần cân nhắc chính

  • Key management: Quản lý encryption key an toàn bằng AWS KMS và key policy phù hợp.
  • Performance: Encryption có thể ảnh hưởng performance, nên cần chọn phương án phù hợp workload.
  • Cost: Một số encryption options có chi phí riêng, cần tính trong architecture design.

3.5 Triển khai access policy cho encryption keys

Encryption key cần được bảo vệ bằng access policy rõ ràng.

AWS Key Management Service (KMS): Dùng để tạo và quản lý encryption keys cho data at rest và data in transit, đồng thời tích hợp với nhiều AWS services.

AWS CloudHSM: Cung cấp dedicated hardware security module cho workload cần security và compliance rất cao.

Access policy cho encryption key quan trọng vì:

  • Control who can use the key: Chỉ user hoặc service được phép mới có thể encrypt hoặc decrypt data.
  • Prevent unauthorized access: Có encrypted data thôi chưa đủ, còn cần đúng key và đúng permission để decrypt.

3.6 Triển khai backup và data replication

Backup và data replication giúp đảm bảo business continuity và disaster recovery.

Amazon S3: Dùng để lưu backup với durability cao. Hỗ trợ versioning và cross-region replication.

Amazon EBS: EBS snapshot dùng để backup EBS volume gắn với EC2 instance.

AWS Backup: Dịch vụ backup tập trung cho nhiều AWS resources như EC2, EBS, RDS và DynamoDB.

3.7 Triển khai policy cho data access, data lifecycle và data protection

Data cần được quản lý trong suốt lifecycle, từ lúc tạo ra, sử dụng, lưu trữ đến khi archive hoặc delete.

Data access: Định nghĩa ai được truy cập data nào, bằng IAM policy, resource policy hoặc access control khác.

Data lifecycle: Xác định data giữ bao lâu, khi nào archive, khi nào delete. S3 lifecycle policy là ví dụ phổ biến.

Data protection: Kết hợp encryption, access control, backup và DLP để bảo vệ data khỏi truy cập hoặc thay đổi trái phép.

3.8 Key rotation và certificate renewal

Rotate encryption key và renew certificate định kỳ là security best practice quan trọng.

  • Giảm rủi ro khi key hoặc certificate bị lộ: Rotation giúp giới hạn thời gian credential có thể bị lợi dụng.
  • Đáp ứng compliance: Nhiều compliance standards yêu cầu key rotation và certificate renewal định kỳ.

AWS có các services giúp tự động hóa quy trình này:

AWS KMS: Hỗ trợ automatic key rotation cho customer managed keys.

AWS Certificate Manager (ACM): Có thể tự động renew SSL/TLS certificates dùng với AWS services.