26 Phương pháp bảo mật AWS tốt nhất – Phần 1

Một trong những trụ cột chính chống đỡ một khung kiến trúc tốt là vấn đề bảo mật. Vì vậy, các doanh nghiệp nên tham khảo và áp dụng các phương pháp bảo mật AWS tuyệt vời nhất dưới đây để phòng ngừa xảy ra các tình huống bảo mật không đáng có.

Nếu bạn có một vấn đề cần giải quyết và bạn đang chuyển lên AWS để xây dựng và lưu trữ giải pháp của mình. Bạn đã tạo xong tài khoản, pha một tách cà phê và bạn đang chuẩn bị ngồi xuống bàn làm việc của mình để bắt đầu thiết kế cấu trúc, viết code, xây dựng và triển khai. Nhưng bạn có thực sự làm được thế không?

Có nhiều thứ bạn phải thiết lập nếu muốn giải pháp của mình vận hành một cách an toàn, tin cậy, hiệu quả và tiết kiệm chi phí. Và thời điểm tốt nhất để thiết lập các tiêu chuẩn đó là ngay bây giờ – từ thời điểm đầu tiên bạn bắt đầu thiết kế và kỹ thuật.

Thiết lập AWS ban đầu

Đừng bao giờ sử dụng tài khoản root của bạn cho mục đích sử dụng hàng ngày. Thay vào đó, hãy chuyển sang mục Quản lý danh tính và truy cập (Identity and Access Management – IAM) và tạo tài khoản quản trị viên. Bảo vệ và khóa thông tin đăng nhập gốc của bạn ở một nơi an toàn (đừng quên kiểm tra xem mật khẩu của bạn có đủ mạnh không?). Và nếu khóa tài khoản root của bạn đã được tạo, thì bây giờ là thời điểm tốt nhất để xóa chúng.

Bạn nên và cũng cần phải kích hoạt Xác thực đa yếu tố (Multi Factor Authentication – MFA) cho tài khoản root của mình. Bạn phải chấm dứt việc sử dụng root chỉ có MFA và không có khóa truy cập. Và bạn không nên sử dụng tài khoản này trừ khi thực sự cần thiết.

Bây giờ, với tài khoản quản trị viên mới tạo của bạn, kích hoạt MFA là điều bắt buộc. Đó yêu cầu yêu cầu tiên quyết đối với mọi tài khoản của bạn nếu bạn muốn bắt đầu thiết lập tư duy bảo mật, đặc biệt đối với người dùng thành thạo. Bạn sẽ chỉ sử dụng tài khoản này cho mục đích quản trị.

Để sử dụng hàng ngày, bạn cần truy cập bảng điều khiển IAM và tạo tài khoản người dùng, nhóm và các vai trò để cấp quyền truy cập lượng tài nguyên phù hợp.

Bây giờ bạn có:

  • Tài khoản root (không có khóa) được khóa an toàn trong két sắt.
  • Tài khoản quản trị để sử dụng quản trị.
  • Một số tài khoản người dùng, nhóm và vai trò để sử dụng hàng ngày.
  • Tất cả chúng phải được kích hoạt MFA và có mật khẩu mạnh.

Bạn gần như đã sẵn sàng để bắt đầu công việc của mình, nhưng trước tiên, hãy lưu ý về mô hình chia sẻ trách nhiệm của AWS.

Mô hình trách nhiệm chung của AWS

Bảo mật và tuân thủ là trách nhiệm chung giữa AWS và khách hàng. AWS vận hành, quản lý và kiểm soát các thành phần từ hệ điều hành máy chủ và lớp ảo hóa cho đến bảo mật vật lý của các cơ sở nơi dịch vụ được vận hành. Khách hàng chịu trách nhiệm và quản lý hệ điều hành của khách (bao gồm các bản cập nhật và bản vá bảo mật), phần mềm ứng dụng liên quan khác, cũng như cấu hình của tường lửa nhóm bảo mật do AWS cung cấp.

Do đó, việc quản lý và áp dụng bảo mật AWS cẩn trọng là trách nhiệm của khách hàng.

Checklist các phương pháp tốt nhất để bảo mật đám mây AWS

Trong phần này, chúng ta sẽ tìm hiểu các dịch vụ AWS phổ biến nhất và 26 phương pháp bảo mật tốt nhất có thể áp dụng.

Một trong những phương pháp hay nhất để Bảo mật AWS với mã nguồn mở – Cloud Custodian là một công cụ Quản lý cử chỉ bảo mật đám mây (Cloud Security Posture Management  – CSPM). Các công cụ CSPM đánh giá cấu hình đám mây của bạn và xác định các lỗi cấu hình phổ biến. Họ cũng theo dõi nhật ký đám mây để phát hiện các mối đe dọa, từ đó tiến hành các thay đổi cấu hình.

Bây giờ chúng ta hãy đi qua từng dịch vụ.

Các biện pháp bảo mật tốt nhất theo từng dịch vụ của AWS
Rủi ro cao  Rủi ro trung bình  Rủi ro thấp 
AWS IAM (1) Không cho phép có đầy đủ các  quyền quản trị “*” trên chính sách IAM

(4) Khóa truy cập người dùng root IAM không tồn tại

(6) MFA phần cứng phải được bật cho người dùng root

(3) Luân phiên khóa  truy cập của người dùng IAM sau mỗi 90 ngày hoặc ngắn hơn

(5) MFA phải được bật cho tất cả người dùng IAM có mật khẩu điều khiển

(7) Chính sách mật khẩu cho người dùng IAM phải có cấu hình mạnh

(8) Nên xóa thông tin xác thực của tài khoản người dùng IAM không dùng đến

(2) Người dùng IAM không được phổ biến chính sách IAM
Amazon S3 (10) S3 buckets phải được bật mã hóa từ phía máy chủ (9) Cài đặt S3 Block Public Access phải được bật.

(11) Cài đặt S3 Block Public Access phải được bật ở cấp bucket.

AWS CloudTrail (12) CloudTrail phải được bật và định cấu hình với ít nhất một đường dẫn đa vùng (13) CloudTrail nên bật tính năng mã hóa khi nghỉ ngơi

(14) Đảm bảo bật tính năng xác thực tệp nhật ký CloudTrail

AWS Config (15) AWS Config nên được kích hoạt
Amazon EC2 (16) Ổ đĩa EBS đính kèm phải được mã hóa khi lưu trữ

(19) Nên bật mã hóa mặc định EBS

(17) VPC Flow Logs phải được bật trong tất cả các VPC

(18) Nhóm bảo mật mặc định của VPC không được cho phép lưu lượng truy cập vào và ra

AWS DMS (20) Các phiên bản sao chép AWS Database Migration Service không được công khai
Amazon EBS (21) Ảnh chụp nhanh Amazon EBS không được công khai, có thể được khôi phục bởi bất kỳ ai
Amazon OpenSearch Service (22) Các miền Elaticsearch nên bật mã hóa khi nghỉ ngơi
Amazon SageMaker (23) SageMaker notebook instances không được truy cập internet trực tiếp
AWS Lambda (24) Các hàm lambda nên sử dụng công cụ hỗ trợ thời gian chạy
AWS KMS (25) Khóa AWS KMS không được vô tình xóa dễ dàng
Amazon GuardDuty (26) GuardDuty nên được kích hoạt

Quản lý quyền truy cập và danh tính AWS (AWS Identity and Access Management – IAM)

Quản lý quyền truy cập và danh tính AWS (IAM) giúp thực thi kiểm soát quyền truy cập tối thiểu đối với các tài nguyên AWS. Bạn có thể sử dụng IAM để hạn chế người được công nhận (đăng nhập) và được ủy quyền (có quyền) sử dụng tài nguyên.

1.- Không cung cấp đầy đủ các quyền quản trị “*” trên chính sách IAM 

Chính sách IAM xác định một tập hợp các quyền được cấp cho người dùng, nhóm hoặc vai trò. Theo lời khuyên bảo mật tiêu chuẩn, bạn nên cấp đặc quyền tối thiểu, có nghĩa là chỉ cho phép các quyền cần thiết phải có để thực hiện một tác vụ.

Khi bạn cung cấp đầy đủ quyền quản trị thay vì tập hợp các quyền tối thiểu mà người dùng cần, bạn sẽ tạo ra cơ hội cho các hành động tiềm ẩn không mong muốn.

Đối với mỗi tài khoản AWS, hãy liệt kê các chính sách quản lý khách hàng hiện có:

aws iam list-policies –scope Local –query ‘Policies[*].Arn’

 

Lệnh phía trên sẽ trả về danh sách chính sách cùng với Tên tài nguyên Amazon (Amazon Resource Names – ARN) của chúng. Bây giờ, bằng cách sử dụng các ARN này, hãy truy xuất tài liệu chính sách ở định dạng JSON:

aws iam get-policy-version

–policy-arn POLICY_ARN

–version-id v1

–query ‘PolicyVersion.Document’

Đầu ra phải là tài liệu chính sách IAM thỏa yêu cầu:

{

 “Version”: “2012-10-17”,

 “Statement”: [

{

   “Sid”: “1234567890”,

   “Effect”: “Allow”,

   “Action”: “*”,

   “Resource”: “*”

}

]

}

Nhìn vào tài liệu đó ở các element sau:

“Effect”: “Allow”, “Action”: “*”, “Resource”: “*”

Nếu có các element này, thì chính sách quản lý khách hàng sẽ được cấp quyền quản trị đầy đủ. Đây là một rủi ro và cần phải tránh. Vì vậy bạn sẽ cần điều chỉnh các chính sách này để xác định chính xác những hành động bạn muốn cho phép đối với từng tài nguyên cụ thể.

Lặp lại quy trình trước đó cho các chính sách quản lý khách hàng IAM khác.

Nếu bạn muốn phát hiện ra việc sử dụng các quyền quản trị đầy đủ với mã nguồn mở, thì đây là quy tắc Cloud Custodian:

name: full-administrative-privileges

   description: IAM policies are the means by which privileges are granted to users, groups, or roles. It is recommended and considered a standard security advice to grant least privilege -that is, granting only the permissions required to perform a task. Determine what users need to do and then craft policies for them that let the users perform only those tasks, instead of allowing full administrative privileges.

   resource: iam-policy filters:

type: used

type: has-allow-all

2.- Không cung cấp chính sách IAM cho người dùng 

Theo mặc định ban đầu, tài khoản người dùng, nhóm và vai trò IAM không có quyền truy cập vào tài nguyên AWS.

Chính sách IAM cấp quyền cho người dùng, nhóm hoặc vai trò. Chúng tôi khuyên bạn nên áp dụng chính sách IAM cho các nhóm và vai trò nhưng không nên áp dụng cho tài khoản người dùng. Chỉ định các quyền ở cấp độ nhóm hoặc vai trò làm giảm sự phức tạp của việc quản lý quyền truy cập khi số lượng người dùng tăng lên. Việc giảm độ phức tạp của quản lý quyền truy cập có thể hạn chế việc người ủy quyền vô tình nhận hoặc giữ lại các đặc quyền quá mức.

3.- Luân phiên khóa truy cập của người dùng IAM cứ sau 90 ngày hoặc ngắn hơn 

AWS khuyên bạn nên luân phiên khóa truy cập sau mỗi 90 ngày. Việc luân phiên khóa truy cập sẽ giảm khả năng khóa truy cập được liên kết với tài khoản bị xâm nhập hoặc không còn được sử dụng. Nó cũng đảm bảo rằng dữ liệu không thể được truy cập bằng một khóa cũ có thể bị mất, bị bẻ khóa hoặc bị đánh cắp. Luôn cập nhật các ứng dụng của bạn sau khi bạn luân phiên khóa truy cập.

Đầu tiên, hãy liệt kê tất cả tài khoản người dùng IAM có trong tài khoản AWS của bạn bằng:

aws iam list-users –query ‘Users[*].UserName’

Đối với tất cả người dùng được lệnh này trả về, hãy xác định thời gian tồn tại của từng khóa truy cập đang hoạt động bằng cách thực hiện:

aws iam list-access-keys –user-name USER_NAME

Lệnh này sẽ hiển thị siêu dữ liệu cho từng khóa truy cập hiện có cho tài khoản người dùng IAM được chỉ định. Kết quả sẽ trông như thế này:

{

 “AccessKeyMetadata”: [

{

   “UserName”: “some-user”,

   “Status”: “Inactive”,

   “CreateDate”: “2022-05-18T13:43:23Z”,

   “AccessKeyId”: “AAAABBBBCCCCDDDDEEEE”

},

{

   “UserName”: “some-user”,

   “Status”: “Active”,

   “CreateDate”: “2022-03-21T09:12:32Z”,

   “AccessKeyId”: “AAAABBBBCCCCDDDDEEEE”

}

]

}

Kiểm tra giá trị tham số CreateDate cho từng khóa đang hoạt động để xác định thời gian khởi tạo. Nếu một khóa truy cập đang hoạt động đã được tạo trước 90 ngày qua, thì khóa đó đã hết hạn và phải được thay đổi để đảm bảo quyền truy cập vào tài nguyên AWS của bạn.

Lặp lại cho từng người dùng IAM hiện có trong tài khoản AWS của bạn.

4.- Đảm bảo rằng các khóa truy cập người dùng root IAM không tồn tại 

Như chúng tôi đã nêu trong quá trình thiết lập ban đầu của bạn, chúng tôi thực sự khuyên bạn nên xóa tất cả các khóa truy cập được liên kết với tài khoản root. Điều này giới hạn các vectơ có thể được sử dụng để xâm phạm tài khoản của bạn. Nó cũng khuyến khích việc tạo và sử dụng các tài khoản bắt đầu từ vai trò ít có đặc quyền nhất.

Quy tắc Cloud Custodian sau đây sẽ kiểm tra xem các khóa truy cập root đã được sử dụng trên tài khoản của bạn chưa:

name: root-access-keys

   description: The root user account is the most privileged user in an AWS account. AWS Access Keys provide programmatic access to a given AWS account. It is recommended that all access keys associated with the root user account be removed.

   resource: account

   filters:

type: iam-summary

       key: AccountAccessKeysPresent

       value: 0

       op: gt

5.- Kích hoạt MFA cho tất cả người dùng IAM có mật khẩu điều khiển

Xác thực đa yếu tố (MFA) bổ sung thêm một lớp bảo vệ bên trên tên người dùng và mật khẩu. Khi bật MFA, khi người dùng đăng nhập vào trang web AWS, họ sẽ được nhắc nhập tên người dùng và mật khẩu. Ngoài ra, họ được nhắc nhập mã xác thực từ thiết bị AWS MFA của họ.

Chúng tôi khuyên bạn nên bật MFA cho tất cả các tài khoản có quyền điều khiển. MFA được thiết kế để tăng cường bảo mật cho việc truy cập quyền điều khiển. Người được xác thực phải sở hữu một thiết bị phát ra khóa theo thời gian thực và phải có kiến thức về thông tin xác thực.

6.- Kích hoạt MFA phần cứng cho người dùng root 

MFA ảo có thể không cung cấp được mức độ bảo mật tương đương như các thiết bị MFA phần cứng. MFA phần cứng có thể hạn chế nguy cơ bị  tấn công và không thể bị đánh cắp trừ khi người dùng cố tình giành quyền truy cập vật lý vào thiết bị phần cứng. Chúng tôi khuyên bạn chỉ nên sử dụng thiết bị MFA ảo trong khi chờ phê duyệt mua phần cứng hoặc chờ phần cứng của bạn được vận chuyển đến, đặc biệt đối với người dùng root.

Để tìm hiểu thêm, hãy xem Bật thiết bị xác thực đa yếu tố (MFA) ảo (bảng điều khiển) trong Hướng dẫn sử dụng IAM.

Đây là quy tắc Cloud Custodian để phát hiện thiếu MFA phần cứng gốc:

name: root-hardware-mfa

   description: The root user account is the most privileged user in an AWS account. MFA adds an extra layer of protection on top of a username and password. With MFA enabled, when a user signs in to an AWS website, they will be prompted for their username and password as well as for an authentication code from their AWS MFA device. It is recommended that the root user account be protected with a hardware MFA.

   resource: account filters:

or:

type: iam-summary

       key: AccountMFAEnabled

       value: 1

       op: ne

and:

type: iam-summary

         key: AccountMFAEnabled

         value: 1

         op: eq

type: has-virtual-mfa

         value: true

7.- Đảm bảo các chính sách mật khẩu cho người dùng IAM có cấu hình mạnh 

Chúng tôi khuyên bạn nên thực thi việc khởi tạo mật khẩu tài khoản người dùng mạnh. Bạn có thể đặt chính sách mật khẩu trên tài khoản AWS của mình để chỉ định các yêu cầu về độ phức tạp và thời gian luân phiên thay đổi bắt buộc đối với mật khẩu.

Khi bạn tạo hoặc thay đổi chính sách mật khẩu, hầu hết các cài đặt của chính sách mật khẩu sẽ được thực thi vào lần tiếp theo người dùng thay đổi mật khẩu của họ. Một số cài đặt được thực thi ngay lập tức.

Điều gì tạo nên một mật khẩu mạnh là một vấn đề chủ quan, nhưng các cài đặt sau sẽ cho bạn một số hình dung:

RequireUppercaseCharacters: true

RequireLowercaseCharacters: true

RequireSymbols: true

RequireNumbers: true

MinimumPasswordLength: 8

8.- Xóa thông tin xác thực tài khoản người dùng IAM không còn sử dụng 

Người dùng IAM có thể truy cập tài nguyên AWS bằng các loại thông tin xác thực khác nhau, chẳng hạn như mật khẩu hoặc khóa truy cập. Chúng tôi khuyên bạn nên xóa hoặc hủy kích hoạt tất cả thông tin đăng nhập không được sử dụng trong từ 90 ngày trở lên để giảm thiểu rủi ro có người sử dụng thông tin đăng nhập được liên kết với tài khoản bị xâm phạm hoặc bị bỏ.

Bạn có thể sử dụng bảng điều khiển IAM để lấy một số thông tin mà bạn cần để giám sát các thông tin về ngày tháng xác thực của tài khoản. Ví dụ: khi bạn xem thông tin người dùng trong tài khoản của mình, sẽ có một cột dành cho Tuổi khóa truy cập, Tuổi mật khẩu và Hoạt động cuối cùng. Nếu giá trị trong bất kỳ cột nào trong số này lớn hơn 90 ngày, hãy đặt thông tin đăng nhập cho những người dùng đó ở trạng thái không hoạt động.

Bạn cũng có thể sử dụng báo cáo thông tin xác thực để giám sát tài khoản người dùng và xác định những tài khoản không có hoạt động nào trong 90 ngày trở lên. Bạn có thể tải xuống báo cáo thông tin xác thực ở định dạng .csv từ bảng điều khiển IAM.

Để biết thêm thông tin, hãy xem chi tiết hơn các biện pháp bảo mật AWS tốt nhất dành cho IAM.

Kết luận

Sử dụng toàn bộ đám mây sẽ mở ra một thế giới khả năng mới, nhưng nó cũng mở ra cánh cửa rộng lớn cho các vectơ tấn công. Mỗi dịch vụ AWS mới mà bạn sử dụng đều có những nguy cơ tiềm ẩn riêng mà bạn cần nhận thức được và chuẩn bị kỹ càng.

May mắn thay, các công cụ bảo mật gốc trên đám mây đến từ Renova Cloud, Đối tác tư vấn của AWS chuyên về Bảo mật, có thể hướng dẫn bạn thực hiện các phương pháp hay nhất và giúp bạn tuân thủ các yêu cầu bảo mật của mình.

Tìm hiểu thêm về các biện pháp bảo mật tốt nhất trong AWS phần 1 và phần 2.