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

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ó.

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. Tiếp nối phần 1 và phần 2, sau đây là các biện pháp bảo mật AWS tiếp theo tốt nhất để áp dụng trên Production.

AWS Database Migration Service (DMS)

AWS Database Migration Service (AWS DMS) là một dịch vụ đám mây hỗ trợ dịch chuyển cơ sở dữ liệu quan hệ, kho dữ liệu, cơ sở dữ liệu NoSQL và các loại dữ liệu được lưu trữ khác. Bạn có thể vận dụng AWS DMS để di chuyển dữ liệu của mình lên AWS Cloud hoặc kết hợp giữa điện toán đám mây và on-premises.

20.- Không công khai các bản sao chép AWS Database Migration Service 🟥🟥🟥

Để bảo vệ dữ liệu riêng tư và giảm thiểu rủi ro bảo mật, bạn cần đảm bảo rằng Amazon Database Migration Service (DMS) của bạn không bị truy cập từ bên ngoài thông qua Internet. Bản sao DMS phải có địa chỉ IP riêng và tính năng Publicly Accessible phải bị tắt. Khi đó, cả cơ sở dữ liệu nguồn và đích nằm trong cùng một mạng được kết nối với VPC của bản sao thông qua VPN. Dùng kết nối ngang hàng VPC hoặc AWS Direct Connect để kết nối chuyên dụng.

  1. Đăng nhập vào AWS Management Console: https://console.aws.amazon.com/dms/.
  2. Trên thanh điều hướng bên trái, chọn Replication instances.
  3. Chọn bản sao DMS mà bạn muốn để mở bảng điều khiển với các cấu hình chi tiết.
  4. Chọn tab Overview từ phần dưới cùng của bảng điều khiển và kiểm tra tính năng Publicly accessible. Nếu giá trị là Yes, bản sao Amazon DMS đã chọn có thể truy cập được từ ngoài Virtual Private Cloud (VPC), do đó tồn tại rủi ro bảo mật. Để khắc phục, thực hiện như sau:
    1. Click vào nút Create replication instance trên cùng bảng điều khiển để bắt đầu quá trình khởi chạy.
    2. Ở trang Create replication instance, cần làm như sau:
      1. Bỏ chọn Publicly accessible checkbox để vô hiệu hóa quyền truy cập công khai vào bản sao mới. Nếu cài đặt này bị tắt, Amazon DMS sẽ không gán địa chỉ IP công cộng cho phiên bản tạo mới. Từ đó, sẽ không thể kết nối với cơ sở dữ liệu nguồn/đích bên ngoài VPC.
      2. Đặt cái tên duy nhất cho bản sao mới trong Name box, sau đó định cấu hình cài đặt cho phần còn lại của phiên bản bằng thông tin cấu hình sao chép được ở bước số 5.
      3. Click Create replication instance để khởi chạy Amazon DMS instance mới.
    3. Cập nhật kế hoạch dịch chuyển cơ sở dữ liệu của bạn bằng cách xây dựng tác vụ di chuyển mới, gồm bản sao AWS DMS vừa được tạo mới.
    4. Để ngừng phát sinh chi phí cho bản sao cũ:
      1. Chọn phiên bản DMS cũ, sau đó nhấp vào nút Delete ở menu trên cùng của bảng điều khiển.
      2. Trong hộp Delete replication instance, hãy xem lại chi tiết phiên bản rồi nhấn Delete để xóa DMS đã chọn.
  5. Lặp lại bước số 3 và 4 cho từng bản sao AWS DMS có trong vùng đã chọn.
  6. Thay đổi vùng từ thanh điều hướng của bảng điều khiển và lặp lại quy trình cho tất cả các vùng khác.

Tìm hiểu thêm về các biện pháp bảo mật tốt nhất của AWS Database Migration Service.

Amazon Elastic Block Store (EBS)

Amazon Elastic Block Store (Amazon EBS) cung cấp dung lượng lưu trữ dạng block để sử dụng với các EC2. Ổ đĩa EBS hoạt động giống như các thô, chưa được định dạng. Bạn có thể gắn các ổ đĩa này dưới dạng thiết bị trên các máy chủ ảo của mình. Ổ đĩa EBS được đính kèm với một máy chủ ảo được hiển thị dưới dạng ổ đĩa lưu trữ tồn tại độc lập với vòng đời của máy chủ. Bạn có thể tạo một hệ thống tệp trên các ổ đĩa này hoặc sử dụng chúng theo bất kỳ cách nào bạn sẽ sử dụng một thiết bị block (chẳng hạn như ổ đĩa cứng).

Bạn có thể tự động thay đổi cấu hình của ổ đĩa được đính kèm với một máy chủ.

21.- Không công khai Amazon EBS snapshots hoặc bị khôi phục bởi bất kỳ ai 🟥🟥🟥

EBS snapshots được sử dụng để sao lưu dữ liệu trên ổ đĩa EBS của bạn lên Amazon S3 tại một thời điểm cụ thể. Bạn có thể sử dụng snapshots để khôi phục trạng thái trước của ổ đĩa EBS. Việc chia sẻ snapshots một cách công khai rộng rãi hiếm khi được chấp nhận. Thông thường, quyết định chia sẻ snapshots công khai được đưa ra do nhầm lẫn hoặc do không lường hết được tác động tiêu cực. Việc kiểm tra này giúp đảm bảo rằng tất cả những hành động chia sẻ như vậy đã được lên kế hoạch đầy đủ và có chủ ý.

Lấy danh sách tất cả EBS volume snapshots:

aws ec2 describe-snapshots

–region REGION

–owner-ids ACCOUNT_ID

–filters Name=status,Values=completed

–output table

–query ‘Snapshots[*].SnapshotId’

Đối với mỗi snapshot, kiểm tra createVolumePermission:

aws ec2 describe-snapshot-attribute

–region REGION

–snapshot-id SNAPSHOT_ID

–attribute createVolumePermission

–query ‘CreateVolumePermissions[]’

Kết quả nhận được từ lệnh trên là thông tin các quyền tạo ổ đĩa EBS từ snapshot đã chọn:

{

    “Group”: “all”

}

Nếu kết quả lệnh là“Group”: “all”, thì tất cả người dùng và tài khoản AWS đều có thể truy cập được snapshot. Khi đó, hãy chạy lệnh này để khắc phục:

aws ec2 modify-snapshot-attribute

–region REGION

–snapshot-id SNAPSHOT_ID

–attribute createVolumePermission

–operation-type remove

–group-names all

Amazon OpenSearch Service

Amazon OpenSearch Server Là một dịch vụ được quản lý giúp dễ dàng triển khai, vận hành và thay đổi kích cỡ các cụm OpenSearch trên AWS. Amazon OpenSearch Service bắt nguồn từ Amazon Elaticsearch Service và hỗ trợ OpenSearch cũng như kế thừa OSS Elaticsearch (lên đến 7.10, phiên bản nguồn mở cuối cùng của phần mềm). Khi bạn tạo một cụm, bạn có quyền lựa chọn công cụ tìm kiếm để sử dụng.

22.- Đảm bảo các domain Elaticsearch đã được mã hóa 🟥🟥🟥

Để tạo lớp bảo mật bổ sung cho dữ liệu nhạy cảm của mình trong OpenSearch, bạn nên mã hoá OpenSearch của mình. Các domain Elaticsearch mã hóa dữ liệu khi lưu trữ. Tính năng này sử dụng AWS KMS để lưu trữ và quản lý các khóa mã hóa của bạn. Để thực hiện mã hóa, cần sử dụng thuật toán Advanced Encryption Standard với 256-bit keys (AES-256).

Liệt kê tất cả các domain Amazon OpenSearch hiện có:

aws es list-domain-names –region REGION

Bây giờ hãy xác định xem data-at-rest encryption có đang được bật không:

aws es describe-elasticsearch-domain

–region REGION

–domain-name DOMAIN_NAME

–query ‘DomainStatus.EncryptionAtRestOptions’

Nếu Enabled flag ra là false, thì mã hóa dữ liệu lưu trữ cho domain Amazon ElasticSearch đã chọn đang bị tắt. Sửa lại bằng:

aws es create-elasticsearch-domain

–region REGION

–domain-name DOMAIN_NAME

–elasticsearch-version 5.5

–elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2

–ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=200

–access-policies file://source-domain-access-policy.json

–vpc-options SubnetIds=SUBNET_ID,SecurityGroupIds=SECURITY_GROUP_ID

–encryption-at-rest-options Enabled=true,KmsKeyId=KMS_KEY_ID

Khi cụm mới được tạo, hãy tải dữ liệu hiện có (được xuất từ cụm ban đầu) lên cụm mới.

Sau khi tất cả dữ liệu được tải lên, bạn có thể xóa miền OpenSearch không được mã hóa để ngừng phát sinh chi phí tài nguyên không cần thiết:

aws es delete-elasticsearch-domain

–region REGION

–domain-name DOMAIN_NAME

Amazon SageMaker

Amazon SageMaker là dịch vụ được quản lý hoàn toàn hỗ trợ machine learning. Với Amazon SageMaker, các nhà khoa học và nhà phát triển dữ liệu có thể nhanh chóng xây dựng và đào tạo các mô hình machine learning. Sau đó triển khai chúng vào môi trường lưu trữ trong thực tiễn.

23.- Kiểm tra SageMaker notebook không kết nối trực tiếp với internet 🟨🟨

Nếu bạn cấu hình SageMaker của mình mà không có VPC, thì theo mặc định, quyền truy cập internet trực tiếp sẽ được bật trên các instance. Bạn nên định cấu hình instance của mình qua VPC và thay đổi cài đặt mặc định thành Disable — kết nối internet thông qua VPC.

Để đào tạo hoặc triển khai từ notebook, bạn cần truy cập internet. Để bật truy cập internet, hãy đảm bảo rằng VPC của bạn có cổng NAT và bạn được  phép kết nối ra ngoài. Để tìm hiểu thêm về cách kết nối phiên bản notebook với tài nguyên trong VPC. Hãy tham khảo “Liên kết notebook instance với tài nguyên VPC” trong Amazon SageMaker Developer Guide.

Bạn cũng nên đảm bảo rằng chỉ những người dùng được ủy quyền mới có quyền truy cập vào cấu hình SageMaker của mình. Hạn chế người dùng có quyền IAM sửa đổi cài đặt SageMaker.

  1. Đăng nhập vào AWS Management Console bằng https://console.aws.amazon.com/sagemaker/.
  2. Ở trên thanh điều hướng, bên dưới Notebook, chọn Notebook instances.
  3. Chọn phiên bản notebook SageMaker mà bạn muốn kiểm tra và nhấp vào tên phiên bản (link).
  4. Trong phần cấu hình của phiên bản đã chọn, trong Network section, hãy kiểm tra mọi VPC subnet IDs và nhóm ID bảo mật. Nếu các cấu hình mạng không hiển thị, mà xuất hiện trạng thái: “No custom VPC settings applied”. Notebook không ở bên trong mạng VPC. Hãy làm theo các bước được mô tả trong quy tắc tuân thủ này để triển khai instance trong VPC. Mặt khác, nếu notebook đang chạy bên trong VPC, hãy kiểm tra giá trị đầu ra của Direct internet access configuration attribute value. Nếu giá trị thuộc tính được đặt thành Đã bật – Enabled, Amazon SageMaker notebook đã chọn sẽ có thể được truy cập công khai.
  5. Nếu notebook đã bật kết nối internet trực tiếp, tạo lại notebook bằng lệnh CLI sau:

aws sagemaker create-notebook-instance

–region REGION

–notebook-instance-name NOTEBOOK_INSTANCE_NAME

–instance-type INSTANCE_TYPE

–role-arn ROLE_ARN

–kms-key-id KMS_KEY_ID

–subnet-id SUBNET_ID

–security-group-ids SECURITY_GROUP_ID

–direct-internet-access Disabled

AWS Lambda

Với AWS Lambda, cho phép bạn chạy mã mà không cần cung cấp hoặc quản lý máy chủ. Bạn chỉ trả tiền cho thời gian mà bạn dự định sử dụng — không tính chi phí khi mã của bạn không chạy. Bạn có thể chạy mã cho hầu hết mọi loại ứng dụng hoặc dịch vụ phụ trợ — và tất cả đều không cần quản trị.

Chỉ cần tải mã của bạn lên và Lambda sẽ xử lý các quy trình cần thiết để chạy và mở rộng một cách nhanh chóng khi có các vấn đề phát sinh. Bạn có thể thiết lập mã của mình để tự động kích hoạt từ các dịch vụ AWS khác hoặc gọi trực tiếp từ bất kỳ trang web hoặc ứng dụng di động nào.

Sau tất cả, các sự cố có thể xảy ra nếu không bảo mật hoặc kiểm tra mã của các hàm lambda của mình, vì bạn có thể vô tình tạo điều kiện cho những kẻ tấn công.

24.- Sử dụng hỗ trợ thời gian chạy cho các hàm Lambda 🟨🟨

Bạn nên kiểm tra xem cài đặt chức năng Lambda để kiểm tra xem thời gian chạy có khớp với thời gian chạy dự kiến cho từng ngôn ngữ hay không. Tính năng này hỗ trợ kiểm tra thời gian chạy cho các ngôn ngữ sau: nodejs16.x, nodejs14.x, nodejs12.x, python3.9, python3.8, python3.7, ruby2.7, java11, java8, java8.al2, go1.x, dotnetcore3.1 và dotnet6.

Quy tắc AWS Config bỏ qua các chức năng hỗ trợ ảnh dạng package.

Thời gian chạy Lambda được xây dựng dựa trên sự kết hợp của hệ điều hành, ngôn ngữ lập trình và thư viện phần mềm. Mà nó luôn được cập nhật bảo trì và bảo mật thường xuyên. Khi một công cụ không còn được hỗ trợ cập nhật bảo mật, Lambda sẽ ngừng sử dụng thời gian chạy đó. Mặc dù bạn không thể tạo các hàm mới với thời gian chạy đó, hàm vẫn sẵn dùng để xử lý các sự kiện yêu cầu. Đảm bảo rằng các hàm Lambda của bạn là mới nhất và không sử dụng các môi trường thời gian chạy đã lỗi thời.

Liệt kê các Amazon Lambda có sẵn trong khu vực AWS đã chọn:

aws lambda list-functions

  –region REGION

  –output table

  –query ‘Functions[*].FunctionName’

Bây giờ hãy kiểm tra thông tin thời gian chạy đã có cho từng chức năng:

aws lambda get-function-configuration

  –region REGION

  –function-name FUNCTION_NAME

  –query ‘Runtime’

So sánh giá trị được trả về với danh sách thời gian chạy Amazon Lambda đã cập nhật được AWS hỗ trợ, cũng như thời gian kết thúc gói hỗ trợ được liệt kê trong tài liệu AWS.

Nếu thời gian chạy không được hỗ trợ, hãy sửa nó như dưới đây để sử dụng phiên bản thời gian chạy mới nhất. Ví dụ:

aws lambda update-function-configuration

  –region REGION

  –function-name FUNCTION_NAME

  –runtime “nodejs16.x”

AWS Key Management Service (AWS KMS)

AWS Key Management Service (AWS KMS) là một dịch vụ mã hóa và quản lý khóa cho đám mây. Các chức năng và khóa AWS KMS được sử dụng để bảo vệ dữ liệu trong các ứng dụng sử dụng AWS của riêng mình.

25.- Không vô tình xóa khóa AWS KMS 🟨🟨

Khóa KMS sau khi đã xóa không thể được khôi phục. Dữ liệu được mã hóa dưới khóa KMS cũng vĩnh viễn không thể khôi phục được nếu khóa KMS bị xóa. Nếu dữ liệu quan trọng đó đã được mã hóa theo khóa KMS được lên lịch xóa, hãy xem xét việc giải mã dữ liệu hoặc mã hóa lại dữ liệu theo khóa KMS trừ khi bạn cố ý xóa bằng mật mã.

Khi một khóa KMS được lên lịch để xóa, sẽ có một khoảng thời gian chờ bắt buộc được lên lịch để tạo cơ hội đảo ngược quá trình xóa nếu nó được lên lịch do lỗi. Thời gian chờ mặc định là 30 ngày nhưng có thể giảm xuống còn bảy ngày khi khóa KMS được lên lịch xóa. Trong thời gian chờ đợi, lịch trình xóa có thể bị hủy bỏ và khóa KMS sẽ không bị xóa.

Liệt kê tất cả các khóa Chính của khách hàng có trong khu vực AWS đã chọn:

aws kms list-keys –region REGION

Chạy lệnh description-key cho từng CMK để xác định khóa nào được lên lịch xóa:

aws kms describe-key –key-id KEY_ID

Kết quả hiển thị key metadata đã chọn. Nếu giá trị KeyState được đặt thành PendingDeletion, khóa sẽ được lên lịch để xóa. Nhưng nếu đây không phải là điều bạn thực sự muốn (trường hợp phổ biến nhất), hủy lịch xóa bằng:

aws kms cancel-key-deletion –key-id KEY_ID

Amazon GuardDuty

Amazon GuardDuty là dịch vụ giám sát bảo mật liên tục. Amazon GuardDuty giúp phát hiện ra các nguy cơ, rủi ro độc hại trong môi trường AWS của bạn.

26.- Kích hoạt GuardDuty 🟨🟨

Bạn nên bật GuardDuty ở tất cả các Khu vực AWS được hỗ trợ. Làm như vậy cho phép GuardDuty phát hiện các hoạt động trái phép hoặc bất thường, ngay cả ở những Khu vực mà bạn không sử dụng nhiều. Điều này cũng cho phép GuardDuty giám sát các sự kiện CloudTrail cho các dịch vụ AWS trên toàn cầu, chẳng hạn như IAM.

Liệt kê ID của tất cả các Amazon GuardDuty hiện có. Detector là một đối tượng đại diện cho dịch vụ AWS GuardDuty. Để GuardDuty có thể hoạt động, một detector phải được tạo :

aws guardduty list-detectors

–region REGION

–query ‘DetectorIds’

Nếu kết quả trả về là trống, thì không có GuardDuty detector nào đang được sử dụng. Trong trường hợp này, dịch vụ Amazon GuardDuty không được kích hoạt trong tài khoản AWS của bạn. Nếu đúng như vậy, hãy tạo một detector bằng lệnh sau:

aws guardduty create-detector

–region REGION

–enable

Sau khi bật detector, detector sẽ bắt đầu lấy và phân tích các luồng dữ liệu độc lập từ AWS CloudTrail, nhật ký luồng VPC và nhật ký DNS để phân tích.

Các tiêu chuẩn tuân thủ AWS

Thiết lập và duy trì cơ sở hạ tầng AWS của bạn để giữ an toàn cho cơ sở hạ tầng là một nỗ lực không ngừng nghỉ và tiêu tốn rất nhiều thời gian.

Tốt hơn hết là bạn nên tuân theo các tiêu chuẩn có liên quan đến ngành của mình. Vì chúng cung cấp tất cả các yêu cầu cần thiết để bảo mật hiệu quả môi trường đám mây của bạn.

Do tính chất liên tục của việc bảo vệ môi trường của bạn và tuân thủ tiêu chuẩn bảo mật, bạn cũng có thể muốn chạy các gói ưu đãi định kỳ. Chẳng hạn như CIS Amazon Web Services Foundations Benchmark, sẽ kiểm tra hệ thống của bạn và báo cáo mọi điểm không tuân thủ mà hệ thống tìm thấy.

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 tận 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ối ưu nhất trong AWS phần 1 và phần 2 tại đây