Bài viết này tập trung vào các nguyên tắc và dịch vụ quan trọng khi thiết kế kiến trúc bảo mật trên AWS. Nội dung bao gồm cách quản lý quyền truy cập bằng IAM, bảo vệ tài khoản root user, sử dụng MFA, thiết kế phân quyền với user, group, role và policy, cũng như cách kiểm soát truy cập liên tài khoản bằng AWS STS.
Bên cạnh đó, bài viết cũng trình bày cách xây dựng kiến trúc mạng an toàn với VPC, public subnet, private subnet, security group, NACL, NAT Gateway, VPN và Direct Connect. Cuối cùng, bài viết đi vào các biện pháp bảo vệ dữ liệu như mã hóa khi lưu trữ, mã hóa khi truyền, quản lý khóa bằng AWS KMS, sao lưu dữ liệu, quản lý vòng đời dữ liệu và xoay vòng khóa mã hóa.
Nói ngắn gọn, đây là phần nền tảng giúp bạn hiểu cách xây dựng một môi trường AWS an toàn hơn, gọn gàng hơn và ít “đau tim” hơn khi vận hành thực tế.
Mục lục
- Thiết kế quyền truy cập bảo mật vào tài nguyên AWS
- Thiết kế workload và ứng dụng bảo mật
- Xác định các biện pháp kiểm soát bảo mật dữ liệu phù hợp
1.1. Thiết kế quyền truy cập bảo mật vào tài nguyên AWS
Áp dụng các thực hành bảo mật tốt nhất của AWS cho IAM user và root user, ví dụ: xác thực đa yếu tố (MFA)
Root user: Root user của tài khoản AWS có toàn quyền truy cập, không bị giới hạn đối với tất cả dịch vụ và tài nguyên trong tài khoản. Tài khoản này chỉ nên được dùng cho các tác vụ thiết lập ban đầu, chẳng hạn như tạo IAM user đầu tiên. Sau đó, tài khoản này nên được khóa lại và bảo vệ thật cẩn thận.
IAM Users: IAM user đại diện cho từng người dùng hoặc ứng dụng cần truy cập tài nguyên AWS. Các IAM user nên được dùng cho các hoạt động hằng ngày thay vì sử dụng root user.
Các thực hành bảo mật quan trọng
Nguyên tắc đặc quyền tối thiểu: Chỉ cấp những quyền cần thiết để thực hiện một tác vụ cụ thể. Tránh cấp các quyền quá rộng như AdministratorAccess nếu không thật sự cần thiết.
Xác thực đa yếu tố (MFA): Bật MFA cho tất cả người dùng, đặc biệt là root user. MFA thêm một lớp bảo mật bằng cách yêu cầu thêm hình thức xác thực thứ hai, ví dụ như mã từ ứng dụng xác thực hoặc khóa bảo mật, bên cạnh mật khẩu của người dùng. Điều này giúp giảm đáng kể rủi ro truy cập trái phép, ngay cả khi thông tin đăng nhập bị lộ.
Mật khẩu mạnh: Áp dụng chính sách mật khẩu mạnh, bao gồm độ dài tối thiểu, yêu cầu về độ phức tạp và xoay vòng định kỳ.
Xoay vòng thông tin đăng nhập thường xuyên: Thường xuyên xoay vòng access key cho IAM user và tránh nhúng trực tiếp thông tin đăng nhập vào mã nguồn. Với các ứng dụng chạy trên phiên bản EC2, nên sử dụng IAM role thay vì dùng access key cố định.
Giám sát hoạt động: Sử dụng AWS CloudTrail để ghi log các lệnh gọi API và giám sát những hoạt động đáng ngờ. Nói vui một chút, CloudTrail giống như “camera hành trình” của tài khoản AWS, giúp bạn biết ai đã làm gì, khi nào và ở đâu.
Thiết kế mô hình phân quyền linh hoạt, bao gồm IAM user, group, role và policy
IAM cung cấp một số cơ chế giúp quản lý quyền một cách hiệu quả:
IAM Users: Như đã đề cập, IAM user đại diện cho từng danh tính riêng lẻ. Bạn có thể gắn policy trực tiếp vào user, nhưng cách này sẽ trở nên khó quản lý khi hệ thống mở rộng.
IAM Groups: Group là tập hợp các IAM user. Group giúp đơn giản hóa việc quản lý quyền bằng cách cho phép bạn gắn policy vào group thay vì gắn vào từng user riêng lẻ. Bất kỳ user nào trong group cũng sẽ thừa hưởng quyền của group. Đây là thực hành tốt nhất khi cần quản lý quyền cho nhiều người dùng có chức năng công việc tương tự nhau.
IAM Roles: Role được thiết kế cho các thực thể cần quyền truy cập tạm thời vào tài nguyên AWS. Các thực thể này có thể là:
- Dịch vụ AWS, ví dụ như phiên bản EC2 hoặc hàm Lambda: Đây là cách được khuyến nghị để các ứng dụng chạy trên dịch vụ AWS truy cập các tài nguyên AWS khác. Thay vì nhúng thông tin đăng nhập vào ứng dụng, ứng dụng sẽ assume một role. Role này sẽ cấp cho ứng dụng thông tin đăng nhập tạm thời.
- Người dùng liên kết danh tính, ví dụ như người dùng từ thư mục doanh nghiệp: Cách này cho phép người dùng từ hệ thống danh tính hiện có của bạn, chẳng hạn như Active Directory, truy cập tài nguyên AWS mà không cần tạo IAM user riêng.
- IAM user trong tài khoản AWS khác, tức truy cập liên tài khoản: Cách này cho phép người dùng trong một tài khoản AWS truy cập tài nguyên trong một tài khoản AWS khác.
IAM Policies: Policy định nghĩa quyền ở định dạng JSON. Policy chỉ định:
- Actions: Những hành động nào được phép thực hiện, ví dụ như
s3:GetObjecthoặcec2:RunInstances. - Resources: Hành động đó áp dụng cho tài nguyên nào, ví dụ như một S3 bucket cụ thể hoặc tất cả phiên bản EC2.
- Effect: Hành động đó là
AllowhayDeny.
Các loại policy
AWS Managed Policies: Đây là các policy được định nghĩa sẵn, do AWS tạo và duy trì. Chúng bao phủ nhiều trường hợp sử dụng phổ biến và là một điểm bắt đầu tốt.
Customer Managed Policies: Đây là các policy do bạn tự tạo và quản lý trong tài khoản AWS của mình. Chúng cung cấp khả năng kiểm soát chi tiết hơn và được khuyến nghị cho các yêu cầu cụ thể.
Inline Policies: Đây là các policy được nhúng trực tiếp trong IAM user, group hoặc role. Chúng gắn liền với thực thể đó và sẽ bị xóa khi thực thể bị xóa. Nhìn chung, nên ưu tiên customer managed policy hơn inline policy để có khả năng tái sử dụng tốt hơn.
Tình huống ví dụ
Hãy hình dung một nhóm phát triển đang làm việc trên một ứng dụng được lưu trữ trên các phiên bản EC2.
- Users: Mỗi lập trình viên có một IAM user.
- Group: Tất cả lập trình viên được thêm vào IAM group tên là “Developers”.
- Policy (Customer Managed): Một customer managed policy tên là “DevAccess” được tạo để cấp quyền triển khai mã lên các S3 bucket cụ thể, khởi động hoặc dừng phiên bản EC2 trong một môi trường cụ thể, và truy cập log CloudWatch.
- Group Attachment: Policy “DevAccess” được gắn vào group “Developers”.
- Role: Một IAM role tên là “EC2AppRole” được tạo để cho phép phiên bản EC2 đọc dữ liệu từ một S3 bucket chứa cấu hình ứng dụng.
- Instance Profile: “EC2AppRole” được liên kết với một instance profile. Sau đó, instance profile này được gán cho các phiên bản EC2.
Thiết kế chiến lược kiểm soát truy cập dựa trên role, ví dụ: AWS Security Token Service (AWS STS), chuyển role, truy cập liên tài khoản
Phần này tập trung vào việc sử dụng AWS Identity and Access Management (IAM) role để quản lý quyền truy cập.
IAM Roles: IAM role là một danh tính mà bạn có thể assume. Nó định nghĩa một tập quyền cho phép truy cập vào tài nguyên AWS. Không giống IAM user, role không có thông tin đăng nhập dài hạn, chẳng hạn như access key. Thay vào đó, role sử dụng thông tin đăng nhập tạm thời được lấy thông qua AWS Security Token Service (STS).
AWS Security Token Service (STS): STS là dịch vụ cung cấp thông tin đăng nhập bảo mật tạm thời, bao gồm access key ID, secret access key và session token. Các thông tin đăng nhập này có thời hạn giới hạn, giúp tăng cường bảo mật. STS được sử dụng trong nhiều kịch bản:
- Assume role: Khi IAM user hoặc dịch vụ AWS, chẳng hạn như EC2, cần truy cập tài nguyên với quyền khác với quyền được gán trực tiếp, thực thể đó có thể assume một IAM role. STS sẽ cung cấp thông tin đăng nhập tạm thời cho role đó.
- Federation: STS cho phép bạn cấp quyền truy cập tài nguyên AWS cho người dùng từ nhà cung cấp danh tính bên ngoài, chẳng hạn như Active Directory, nhà cung cấp SAML hoặc nhà cung cấp web identity. Nhà cung cấp danh tính bên ngoài sẽ xác thực người dùng, sau đó STS cung cấp thông tin đăng nhập AWS tạm thời.
- Truy cập liên tài khoản: STS cho phép bạn cấp quyền truy cập tài nguyên trong một tài khoản AWS cho người dùng hoặc dịch vụ trong một tài khoản AWS khác.
Chuyển role: Đây là một tính năng trong AWS Management Console, cho phép IAM user dễ dàng chuyển đổi giữa các role khác nhau trong cùng một tài khoản hoặc giữa nhiều tài khoản khác nhau. Tính năng này giúp đơn giản hóa việc quản lý quyền truy cập vào nhiều tài nguyên với các quyền khác nhau.
Truy cập liên tài khoản: Việc này liên quan đến việc cấp quyền cho các thực thể như user, role hoặc service trong một tài khoản AWS để truy cập tài nguyên trong một tài khoản AWS khác. Điều này thường được thực hiện bằng cách:
- Tạo một role trong tài khoản tài nguyên, tức tài khoản chứa tài nguyên cần được truy cập. Role này định nghĩa các quyền sẽ được cấp.
- Cấp cho principal, ví dụ user, role hoặc service trong tài khoản truy cập, quyền assume role trong tài khoản tài nguyên. Việc này được thực hiện bằng cách thêm trust policy vào role trong tài khoản tài nguyên.
Ví dụ về truy cập liên tài khoản
Tài khoản A, tức tài khoản truy cập, có một IAM user. Tài khoản B, tức tài khoản tài nguyên, có một S3 bucket. Để cho phép user trong Tài khoản A truy cập S3 bucket trong Tài khoản B:
- Trong Tài khoản B, tạo một IAM role có quyền truy cập S3 bucket.
- Trong Tài khoản B, thêm trust policy vào role, cho phép IAM user trong Tài khoản A assume role.
- IAM user trong Tài khoản A sau đó có thể assume role trong Tài khoản B và nhận thông tin đăng nhập tạm thời để truy cập S3 bucket.
Thiết kế chiến lược bảo mật cho nhiều tài khoản AWS, ví dụ: AWS Control Tower, service control policies (SCPs)
Phần này xử lý việc quản lý bảo mật và quản trị trên nhiều tài khoản AWS, thường được gọi là chiến lược nhiều tài khoản.
AWS Control Tower: Control Tower là dịch vụ giúp thiết lập và quản trị một môi trường AWS nhiều tài khoản an toàn. Dịch vụ này tự động hóa việc tạo tài khoản AWS mới, sử dụng AWS Organizations, và triển khai các baseline bảo mật theo thực hành tốt nhất, còn gọi là guardrail. Control Tower sử dụng AWS Organizations, Service Control Policies (SCPs), AWS Config và các dịch vụ khác để thực thi policy nhất quán trên tất cả tài khoản.
Service Control Policies (SCPs): SCP là một tính năng của AWS Organizations, cho phép bạn quản lý tập trung quyền cho tất cả tài khoản trong tổ chức. SCP định nghĩa quyền tối đa có thể được cấp cho IAM user và role trong các tài khoản thành viên. Chúng hoạt động như guardrail, ngăn chặn một hành động ngay cả khi IAM policy trong tài khoản thành viên lẽ ra cho phép hành động đó.
Những điểm quan trọng cần biết về SCP
- Kế thừa: SCP được kế thừa xuống theo hệ phân cấp tổ chức, bao gồm root, organizational unit (OU) và tài khoản.
- Mặc định từ chối: SCP sử dụng cách tiếp cận mặc định từ chối. Bạn cần cấp quyền rõ ràng bằng các câu lệnh
Allow. - Tác động đến IAM: SCP không trực tiếp cấp quyền. Chúng chỉ giới hạn các quyền có thể được cấp bởi IAM policy trong từng tài khoản riêng lẻ.
- Trường hợp sử dụng: Các trường hợp sử dụng phổ biến của SCP bao gồm ngăn người dùng vô hiệu hóa AWS Config hoặc CloudTrail, giới hạn việc sử dụng các dịch vụ hoặc Region AWS cụ thể, và thực thi mã hóa cho một số tài nguyên nhất định.
Ví dụ về SCP
Một SCP ở root của tổ chức có thể từ chối hành động ec2:RunInstances trong tất cả tài khoản. Ngay cả khi một IAM user trong tài khoản thành viên có IAM policy cho phép họ khởi chạy phiên bản EC2, SCP vẫn sẽ ghi đè và ngăn hành động đó.
Xác định việc sử dụng resource policy phù hợp cho các dịch vụ AWS
Resource policy là tài liệu JSON định nghĩa ai có quyền truy cập vào một tài nguyên cụ thể và họ được phép thực hiện những hành động nào. Chúng được gắn trực tiếp vào tài nguyên mà chúng quản trị.
Dưới đây là cách resource policy được sử dụng trên các dịch vụ AWS khác nhau:
Amazon S3 (Simple Storage Service): Resource policy gắn với S3 bucket để kiểm soát quyền truy cập vào bucket và các object của nó. Ví dụ, bạn có thể cấp quyền đọc công khai cho object trong bucket để lưu trữ website tĩnh, hoặc cho phép các tài khoản AWS cụ thể tải object lên.
AWS IAM (Identity and Access Management): Mặc dù IAM chủ yếu sử dụng policy dựa trên danh tính, tức policy gắn vào IAM user, group hoặc role, một số tài nguyên IAM như role cũng có thể có resource policy. Điều này cho phép kiểm soát chi tiết ai có thể assume một role cụ thể.
AWS KMS (Key Management Service): Resource policy trên KMS key xác định ai có thể sử dụng key cho các thao tác mã hóa và giải mã. Điều này rất quan trọng để bảo vệ dữ liệu nhạy cảm.
Amazon SQS (Simple Queue Service) và Amazon SNS (Simple Notification Service): Resource policy trên queue và topic kiểm soát ai có thể gửi tin nhắn đến hoặc nhận tin nhắn từ chúng. Điều này rất quan trọng để bảo mật quy trình nhắn tin và thông báo.
Các điểm chính cần ghi nhớ về resource policy
- Resource policy cung cấp khả năng kiểm soát truy cập chi tiết ở cấp tài nguyên.
- Resource policy được viết ở định dạng JSON và tuân theo cú pháp cụ thể.
- Resource policy có thể được sử dụng kết hợp với policy dựa trên danh tính cho các kịch bản kiểm soát truy cập phức tạp hơn.
Xác định khi nào nên liên kết directory service với IAM role
Federation cho phép người dùng đã được xác thực trong một nhà cung cấp danh tính bên ngoài (IdP) truy cập tài nguyên AWS mà không cần tạo IAM user riêng cho từng người. Điều này giúp đơn giản hóa việc quản lý người dùng và cải thiện bảo mật.
Dưới đây là cách federation hoạt động với IAM role:
- Thiết lập quan hệ tin cậy: Bạn tạo quan hệ tin cậy giữa tài khoản AWS của mình và IdP bên ngoài, ví dụ như Microsoft Active Directory, Okta hoặc Ping Identity.
- Định nghĩa IAM role: Bạn tạo một IAM role để định nghĩa các quyền mà người dùng liên kết danh tính sẽ có trong AWS.
- Xác thực: Khi một người dùng từ IdP bên ngoài cần truy cập AWS, họ xác thực bằng thông tin đăng nhập hiện có.
- Assume role: IdP cung cấp thông tin đăng nhập tạm thời cho người dùng, cho phép họ assume IAM role đã được định nghĩa trước.
- Truy cập tài nguyên AWS: Người dùng lúc này có thể truy cập tài nguyên AWS dựa trên các quyền được cấp cho role đã assume.
Khi nào nên sử dụng federation
- Bạn đã có directory service hiện có và muốn tránh việc quản lý thông tin đăng nhập AWS riêng cho từng người dùng.
- Bạn muốn thực thi chính sách xác thực nhất quán trên toàn tổ chức.
- Bạn cần cung cấp quyền truy cập tài nguyên AWS cho người dùng hoặc đối tác bên ngoài.
Lợi ích của federation
- Đơn giản hóa quản lý người dùng: Không cần tạo và quản lý IAM user riêng.
- Cải thiện bảo mật: Tận dụng các cơ chế xác thực hiện có và tránh lưu thông tin đăng nhập ở nhiều nơi.
- Kiểm soát truy cập tập trung: Quản lý quyền truy cập của người dùng thông qua directory service hiện có.
1.2. Thiết kế workload và ứng dụng bảo mật
Thiết kế kiến trúc VPC với các thành phần bảo mật
Virtual Private Cloud (VPC) là một phần được cô lập logic của đám mây AWS, nơi bạn có thể khởi chạy tài nguyên AWS trong một mạng ảo do chính bạn định nghĩa. VPC cho bạn quyền kiểm soát môi trường mạng ảo của mình, bao gồm dải địa chỉ IP, subnet và route table.
Dưới đây là các thành phần bảo mật chính trong VPC:
Security Groups: Security group hoạt động như tường lửa ảo cho các phiên bản EC2 của bạn. Bạn định nghĩa các rule inbound và outbound để kiểm soát lưu lượng ở cấp phiên bản. Security group là stateful, nghĩa là nếu bạn cho phép lưu lượng inbound, lưu lượng outbound tương ứng sẽ tự động được cho phép.
Route Tables: Route table xác định lưu lượng mạng từ subnet của bạn sẽ được định tuyến đến đâu. Bạn có thể tạo route table tùy chỉnh để kiểm soát luồng lưu lượng trong VPC và đến các mạng bên ngoài, chẳng hạn như internet hoặc trung tâm dữ liệu on-premises.
Network ACLs (NACLs): Đây là một lớp bảo mật bổ sung, hoạt động ở cấp subnet. NACL là stateless, nghĩa là bạn cần định nghĩa rule cho cả lưu lượng inbound và outbound. NACL cung cấp mức kiểm soát rộng hơn so với security group.
NAT Gateways: NAT Gateway cho phép các phiên bản trong private subnet kết nối ra internet hoặc các dịch vụ AWS khác, nhưng ngăn internet khởi tạo kết nối đến các phiên bản đó. Điều này rất quan trọng để giữ an toàn cho các hệ thống backend, trong khi vẫn cho phép chúng truy cập bản cập nhật hoặc tài nguyên bên ngoài.
Xác định chiến lược phân đoạn mạng
Phân đoạn mạng là việc chia mạng của bạn thành các phân đoạn nhỏ hơn và được cô lập với nhau. Điều này giúp cải thiện bảo mật bằng cách giới hạn tác động của một sự cố bảo mật. Nếu một phân đoạn bị xâm phạm, các phân đoạn khác vẫn được bảo vệ tốt hơn.
Dưới đây là cách bạn có thể sử dụng public subnet và private subnet để phân đoạn mạng:
Public Subnets: Các subnet này có route ra internet thông qua Internet Gateway. Tài nguyên trong public subnet có thể được truy cập trực tiếp từ internet. Thông thường, bạn sẽ đặt các tài nguyên như web server hoặc load balancer trong public subnet.
Private Subnets: Các subnet này không có route trực tiếp ra internet. Tài nguyên trong private subnet không thể được truy cập trực tiếp từ internet, nhờ đó cung cấp thêm một lớp bảo mật. Thông thường, bạn sẽ đặt các tài nguyên như cơ sở dữ liệu, application server và các hệ thống backend khác trong private subnet.
Bằng cách kết hợp các thành phần này, bạn có thể tạo một kiến trúc VPC an toàn và được phân đoạn tốt. Ví dụ, bạn có thể đặt web server trong public subnet với security group cho phép lưu lượng HTTP/HTTPS, đồng thời đặt database server trong private subnet với security group chỉ cho phép lưu lượng cơ sở dữ liệu từ web server. Nói ngắn gọn, ai cần gặp ai thì mới được gặp, còn lại thì đứng ngoài cho an toàn.
Tích hợp các dịch vụ AWS để bảo mật ứng dụng
AWS cung cấp một bộ dịch vụ có thể được tích hợp để tạo thế trận bảo mật toàn diện cho ứng dụng của bạn. Một số dịch vụ chính bao gồm:
AWS Shield: Dịch vụ này cung cấp khả năng bảo vệ chống lại các cuộc tấn công từ chối dịch vụ phân tán (DDoS). AWS Shield có hai cấp: Standard và Advanced. Standard cung cấp khả năng bảo vệ luôn bật chống lại các cuộc tấn công phổ biến ở cấp hạ tầng. Trong khi đó, Advanced cung cấp khả năng phát hiện và giảm thiểu tinh vi hơn, cũng như quyền truy cập 24/7 vào đội phản ứng DDoS của AWS.
AWS WAF (Web Application Firewall): WAF giúp bảo vệ ứng dụng web của bạn khỏi các lỗ hổng web phổ biến, chẳng hạn như SQL injection và cross-site scripting. Bạn có thể sử dụng các rule được cấu hình sẵn hoặc tự tạo rule tùy chỉnh để lọc lưu lượng độc hại. AWS WAF có thể được triển khai trên Amazon CloudFront, Application Load Balancer và Amazon API Gateway.
IAM Identity Center, trước đây là AWS SSO: Dịch vụ này cho phép bạn quản lý quyền truy cập của người dùng vào nhiều tài khoản AWS và ứng dụng từ một vị trí trung tâm. Nó hỗ trợ nhiều nhà cung cấp danh tính, bao gồm Active Directory, Okta và Azure AD. IAM Identity Center giúp đơn giản hóa việc quản lý người dùng và cải thiện bảo mật bằng cách thực thi chính sách truy cập nhất quán trên toàn bộ môi trường AWS của bạn.
AWS Secrets Manager: Dịch vụ này giúp bạn lưu trữ và quản lý bí mật một cách an toàn, chẳng hạn như thông tin đăng nhập cơ sở dữ liệu, API key và OAuth token. Secrets Manager mã hóa bí mật khi lưu trữ và khi truyền, đồng thời cung cấp khả năng xoay vòng tự động để cải thiện bảo mật và giảm rủi ro thông tin đăng nhập bị lộ. Nói vui thì đây là “két sắt” cho các bí mật của ứng dụng, thay vì để chúng nằm lộ thiên trong mã nguồn.
Bảo mật kết nối mạng bên ngoài đến và đi từ AWS Cloud
Kết nối an toàn giữa mạng on-premises hoặc các mạng bên ngoài khác với môi trường AWS là điều rất quan trọng để bảo vệ ứng dụng và dữ liệu. AWS cung cấp một số dịch vụ để thực hiện việc này:
VPN (Virtual Private Network): AWS VPN cho phép bạn thiết lập kết nối bảo mật giữa mạng on-premises và Amazon Virtual Private Cloud (VPC). AWS VPN có hai tùy chọn: AWS Site-to-Site VPN và AWS Client VPN. Site-to-Site VPN kết nối mạng on-premises của bạn với VPC, trong khi Client VPN cho phép từng người dùng kết nối an toàn đến tài nguyên AWS của bạn.
AWS Direct Connect: Dịch vụ này cho phép bạn tạo kết nối mạng chuyên dụng giữa mạng on-premises và AWS. Direct Connect cung cấp băng thông cao hơn và độ trễ thấp hơn so với kết nối VPN, phù hợp với các ứng dụng yêu cầu hiệu năng cao và kết nối mạng ổn định.
Bằng cách hiểu và sử dụng hiệu quả các dịch vụ này, bạn có thể thiết kế và triển khai workload cũng như ứng dụng bảo mật trên AWS Cloud.
Các điểm chính cần ghi nhớ
- Bảo mật là trách nhiệm chung giữa AWS và khách hàng. AWS chịu trách nhiệm về bảo mật của đám mây, trong khi khách hàng chịu trách nhiệm về bảo mật trong đám mây.
- Cách tiếp cận bảo mật nhiều lớp là rất quan trọng để bảo vệ ứng dụng của bạn. Điều này liên quan đến việc triển khai nhiều biện pháp kiểm soát bảo mật ở các cấp khác nhau, chẳng hạn như bảo mật mạng, bảo mật ứng dụng và bảo mật dữ liệu.
- Tự động hóa là yếu tố then chốt để cải thiện bảo mật và giảm chi phí vận hành. AWS cung cấp nhiều công cụ và dịch vụ có thể giúp bạn tự động hóa các tác vụ bảo mật, chẳng hạn như quét lỗ hổng, giám sát bảo mật và phản ứng sự cố.
1.3. Xác định các biện pháp kiểm soát bảo mật dữ liệu phù hợp
Ánh xạ công nghệ AWS để đáp ứng yêu cầu tuân thủ
Nhiều tổ chức phải tuân thủ các quy định ngành và khung tuân thủ cụ thể, ví dụ như HIPAA, PCI DSS hoặc GDPR. AWS cung cấp nhiều dịch vụ và tính năng có thể giúp bạn đáp ứng các yêu cầu này.
AWS Artifact: Cung cấp quyền truy cập theo yêu cầu vào các báo cáo tuân thủ của AWS, ví dụ như báo cáo SOC, xác nhận PCI DSS, và các thỏa thuận liên quan. Điều này giúp bạn hiểu cách hạ tầng và dịch vụ của AWS tuân thủ các tiêu chuẩn khác nhau.
AWS Audit Manager: Giúp bạn liên tục kiểm toán việc sử dụng AWS để đơn giản hóa quá trình đánh giá rủi ro và kiểm toán tuân thủ. Dịch vụ này tự động hóa việc thu thập bằng chứng và cung cấp các framework dựng sẵn cho nhiều tiêu chuẩn tuân thủ khác nhau.
AWS Config: Cung cấp cái nhìn chi tiết về cấu hình tài nguyên AWS của bạn. Bạn có thể sử dụng dịch vụ này để theo dõi thay đổi trong môi trường và bảo đảm tài nguyên tuân thủ policy nội bộ cũng như các yêu cầu tuân thủ của bạn.
Bằng cách hiểu các dịch vụ này và cách chúng ánh xạ với các yêu cầu tuân thủ cụ thể, bạn có thể thiết kế kiến trúc đáp ứng nghĩa vụ của tổ chức.
Mã hóa dữ liệu khi lưu trữ
Bảo vệ dữ liệu khi được lưu trữ là điều rất quan trọng. AWS cung cấp một số cách để mã hóa dữ liệu khi lưu trữ:
AWS Key Management Service (AWS KMS): Đây là một dịch vụ được quản lý, giúp bạn dễ dàng tạo và quản lý khóa mã hóa. Bạn có thể sử dụng KMS để mã hóa dữ liệu trong nhiều dịch vụ AWS, chẳng hạn như Amazon S3, Amazon EBS và Amazon RDS. KMS cung cấp nhiều loại khóa khác nhau, bao gồm khóa do AWS quản lý, khóa do khách hàng quản lý và khóa được nhập vào.
Server-Side Encryption (SSE): Nhiều dịch vụ lưu trữ AWS cung cấp các tùy chọn mã hóa phía máy chủ được tích hợp sẵn. Ví dụ, Amazon S3 cung cấp SSE-S3, tức mã hóa bằng khóa do S3 quản lý; SSE-KMS, tức mã hóa bằng khóa do KMS quản lý; và SSE-C, tức mã hóa bằng khóa do khách hàng cung cấp.
Client-Side Encryption: Bạn có thể mã hóa dữ liệu trước khi gửi lên AWS bằng thư viện và khóa mã hóa của riêng mình. Cách này cho bạn quyền kiểm soát tối đa đối với khóa mã hóa, nhưng cũng đòi hỏi nhiều công sức quản lý hơn.
Mã hóa dữ liệu khi truyền
Bảo mật dữ liệu khi di chuyển giữa các hệ thống cũng quan trọng không kém. AWS cung cấp một số cơ chế để mã hóa dữ liệu khi truyền:
TLS/SSL: Đây là giao thức tiêu chuẩn để mã hóa giao tiếp qua internet. Các dịch vụ AWS như Elastic Load Balancing, Amazon CloudFront và Amazon API Gateway đều hỗ trợ TLS/SSL.
AWS Certificate Manager (ACM): Đây là dịch vụ cho phép bạn dễ dàng cấp phát, quản lý và triển khai chứng chỉ SSL/TLS để sử dụng với các dịch vụ AWS. ACM tích hợp với nhiều dịch vụ AWS, giúp việc bảo mật ứng dụng web và API trở nên đơn giản hơn.
VPN và Direct Connect: Như đã thảo luận trước đó, các dịch vụ này cung cấp kết nối an toàn giữa mạng on-premises và AWS, đồng thời hỗ trợ bảo vệ dữ liệu khi dữ liệu di chuyển qua các kết nối này.
Các điểm cần cân nhắc chính
- Quản lý khóa: Quản lý khóa mã hóa một cách an toàn là điều thiết yếu. AWS KMS giúp đơn giản hóa việc quản lý khóa và cung cấp nhiều tùy chọn để kiểm soát quyền truy cập vào khóa.
- Hiệu năng: Mã hóa có thể ảnh hưởng đến hiệu năng. Bạn cần cân nhắc sự đánh đổi giữa bảo mật và hiệu năng khi chọn phương pháp mã hóa.
- Chi phí: Các tùy chọn mã hóa khác nhau có thể đi kèm với chi phí khác nhau. Bạn cần tính đến các chi phí này khi thiết kế kiến trúc bảo mật.
Triển khai chính sách truy cập cho khóa mã hóa
Mã hóa là một biện pháp bảo mật nền tảng để bảo vệ dữ liệu nhạy cảm. AWS cung cấp một số dịch vụ cho mã hóa, bao gồm:
AWS Key Management Service (KMS): KMS cho phép bạn tạo và quản lý khóa mã hóa có thể được sử dụng để mã hóa dữ liệu khi lưu trữ và khi truyền. Dịch vụ này tích hợp với nhiều dịch vụ AWS, chẳng hạn như Amazon S3, Amazon EBS và Amazon RDS.
AWS CloudHSM: CloudHSM cung cấp các hardware security module (HSM) chuyên dụng cho khách hàng yêu cầu mức bảo mật và tuân thủ cao nhất.
Triển khai chính sách truy cập cho khóa mã hóa là rất quan trọng vì:
- Việc này kiểm soát ai có thể sử dụng khóa: Bằng cách định nghĩa policy truy cập chi tiết, bạn có thể bảo đảm chỉ người dùng và dịch vụ được ủy quyền mới có thể sử dụng khóa mã hóa để mã hóa hoặc giải mã dữ liệu.
- Việc này ngăn truy cập trái phép vào dữ liệu đã mã hóa: Ngay cả khi ai đó có quyền truy cập vào dữ liệu đã mã hóa, họ vẫn không thể giải mã nếu không có khóa mã hóa và quyền phù hợp. Nói cách khác, có cái hộp chưa đủ, còn phải có đúng chìa khóa.
Triển khai sao lưu và sao chép dữ liệu
Sao lưu và sao chép dữ liệu là điều thiết yếu để bảo đảm tính liên tục kinh doanh và khả năng khôi phục sau thảm họa. AWS cung cấp một số dịch vụ cho các mục đích này:
Amazon S3: S3 cung cấp lưu trữ đối tượng có độ bền cao và khả năng mở rộng cao, có thể được sử dụng để lưu trữ bản sao lưu. S3 cũng cung cấp các tính năng như versioning và sao chép liên vùng để tăng cường bảo vệ dữ liệu.
Amazon EBS: EBS cung cấp các volume lưu trữ khối có thể gắn vào phiên bản EC2. EBS snapshot có thể được sử dụng để tạo bản sao lưu cho volume của bạn.
AWS Backup: AWS Backup là dịch vụ sao lưu tập trung, giúp đơn giản hóa quá trình sao lưu và khôi phục tài nguyên AWS của bạn, bao gồm phiên bản EC2, EBS volume, cơ sở dữ liệu RDS và bảng DynamoDB.
Triển khai policy cho truy cập dữ liệu, vòng đời dữ liệu và bảo vệ dữ liệu
Quản lý dữ liệu trong suốt vòng đời của nó là điều rất quan trọng để duy trì bảo mật và tuân thủ. Điều này bao gồm triển khai policy cho:
Truy cập dữ liệu: Định nghĩa ai có thể truy cập dữ liệu nào và trong điều kiện nào. Điều này có thể được thực hiện bằng IAM policy và các cơ chế kiểm soát truy cập khác.
Vòng đời dữ liệu: Định nghĩa dữ liệu nên được giữ trong bao lâu và khi nào dữ liệu nên bị xóa hoặc lưu trữ dài hạn. Điều này có thể được thực hiện bằng S3 lifecycle policy và các công cụ quản lý dữ liệu khác.
Bảo vệ dữ liệu: Triển khai các biện pháp kiểm soát bảo mật phù hợp để bảo vệ dữ liệu khỏi truy cập, sửa đổi hoặc xóa trái phép. Điều này bao gồm mã hóa, kiểm soát truy cập và các biện pháp ngăn mất dữ liệu (DLP).
Xoay vòng khóa mã hóa và gia hạn chứng chỉ
Thường xuyên xoay vòng khóa mã hóa và gia hạn chứng chỉ là một thực hành bảo mật tốt nhất, giúp:
- Giảm tác động của khóa hoặc chứng chỉ bị lộ: Nếu một khóa hoặc chứng chỉ bị lộ, việc xoay vòng sẽ giới hạn khoảng thời gian nó có thể bị sử dụng cho mục đích độc hại.
- Đáp ứng yêu cầu tuân thủ: Nhiều tiêu chuẩn tuân thủ yêu cầu xoay vòng khóa và gia hạn chứng chỉ định kỳ.
AWS cung cấp các công cụ và dịch vụ để tự động hóa các quy trình này, chẳng hạn như:
AWS KMS: KMS hỗ trợ xoay vòng khóa tự động cho customer master key (CMK).
AWS Certificate Manager (ACM): ACM có thể tự động gia hạn chứng chỉ SSL/TLS được sử dụng với các dịch vụ AWS.