Thông báo về việc mặc định sử dụng key mã hóa được quản lý bởi Amazon Simple Queue Service (SSE-SQS) để mã hóa phía máy chủ

Bài viết này được viết bởi Sofiya Muzychko (Sr Product Manager), Nipun Chagari (Principal Solutions Architect), và Hardik Vasa (Senior Solutions Architect).

Dịch vụ queue đơn giản của Amazon (SQS) hiện đã cung cấp mã hóa phía máy chủ (SSE) sử dụng key mã hóa được quản lý bởi SQS (SSE-SQS) theo mặc định. Tính năng này tiếp tục đơn giản hóa quá trình bảo mật khi mã hóa thân thể tin nhắn trong các queue SQS.

SQS là một dịch vụ queue tin nhắn được quản lý hoàn toàn, cho phép bạn phân tách và mở rộng các ứng dụng nhỏ, các hệ thống phân tán và các ứng dụng serverless. Khách hàng ngày càng phân tách các ứng dụng đơnolithic thành các dịch vụ nhỏ hơn và di chuyển các khối công việc nhạy cảm đến SQS, chẳng hạn như các ứng dụng tài chính và y tế, các quy định tuân thủ đòi hỏi mã hóa dữ liệu.

SQS đã hỗ trợ mã hóa phía máy chủ với key mã hóa được cung cấp bởi khách hàng sử dụng dịch vụ quản lý key AWS (SSE-KMS) hoặc sử dụng key mã hóa được quản lý bởi SQS (SSE-SQS). Cả hai tùy chọn mã hóa đều giảm bớt tải công việc và độ phức tạp liên quan đến bảo vệ dữ liệu. Ngoài ra, với loại mã hóa SSE-SQS, bạn không cần tạo, quản lý hoặc trả tiền cho key mã hóa được quản lý bởi SQS.

Sử dụng mã hóa mặc định

Với tính năng này, tất cả các queue mới được tạo bằng cách sử dụng điểm cuối HTTPS (TLS) và chữ ký Phiên bản 4 sẽ được mã hóa mặc định bằng mã hóa của SQS (SSE-SQS), tăng cường bảo vệ dữ liệu của bạn khỏi truy cập trái phép. Bất kỳ queue mới được tạo bằng điểm cuối non-TLS sẽ không bật mã hóa SSE-SQS theo mặc định. Vì vậy, chúng tôi khuyến khích bạn tạo queue SQS bằng các điểm cuối HTTPS là một thực hành bảo mật tốt nhất.

Mã hóa mặc định SSE-SQS có sẵn cho cả queue tiêu chuẩn và FIFO. Bạn không cần thay đổi mã hoặc ứng dụng nào để mã hóa các queue mới. Điều này không ảnh hưởng đến các queue hiện có. Tuy nhiên, bạn có thể thay đổi tùy chọn mã hóa cho các queue hiện có bất kỳ lúc nào bằng cách sử dụng giao diện người dùng của SQS, AWS Command Line Interface hoặc API.

Hình ảnh trước đó hiển thị trình hướng dẫn tạo queue SQS với các tùy chọn cấu hình cho mã hóa. Như bạn có thể thấy, mã hóa phía máy chủ được kích hoạt theo mặc định với tùy chọn loại key mã hóa SSE-SQS được chọn.

Tạo một queue SQS mới với mã hóa SSE-SQS bằng cách sử dụng AWS CloudFormation

Mã hóa SSE-SQS mặc định cũng được hỗ trợ trong AWS CloudFormation. Để biết thêm thông tin, hãy xem trang tài liệu này.

Đây là mẫu CloudFormation để tạo một queue chuẩn SQS với mã hóa Server Side Encryption (SSE-SQS) của SQS được bật một cách rõ ràng.

YAML

AWSTemplateFormatVersion: “2010-09-09”

Description: SSE-SQS Cloudformation template

Resources:

  SQSEncryptionQueue:

    Type: AWS::SQS::Queue

    Properties: 

      MaximumMessageSize: 262144

      MessageRetentionPeriod: 86400

      QueueName: SSESQSQueue

      SqsManagedSseEnabled: true

      KmsDataKeyReusePeriodSeconds: 900

      VisibilityTimeout: 30

Lưu ý rằng nếu thuộc tính SqsManagedSseEnabled: true không được chỉ định, SSE-SQS sẽ được kích hoạt theo mặc định.

Cấu hình mã hóa SSE-SQS cho queue hiện có thông qua Bảng điều khiển Quản lý AWS

Để cấu hình mã hóa SSE-SQS cho một queue hiện có bằng cách sử dụng bảng điều khiển SQS:

  1. Truy cập vào bảng điều khiển SQS tại https://console.aws.amazon.com/sqs/.
  2. Trong khung điều hướng, chọn Queues.
  3. Chọn một queue và sau đó chọn Chỉnh sửa.
  4. Trong hộp thoại Mã hóa(Encryption), cho phép mã hóa phía máy chủ bằng cách chọn Kích hoạt(Enabled).
  5. Chọn Amazon SQS key (SSE-SQS).
  6. Chọn Lưu lại(Save).

Để cấu hình mã hóa SSE-SQS cho một queue đã tồn tại bằng cách sử dụng AWS CLI

Để kích hoạt SSE-SQS cho một queue đã tồn tại mà không có mã hóa, sử dụng lệnh AWS CLI sau đây

Bash

aws sqs send-message –queue-url <queueURL> –message-body test-message

Thay thế <queueURL> bằng URL của queue SQS của bạn.

Để tắt SSE-SQS cho một queue đã tồn tại bằng cách sử dụng AWS CLI, chạy:

Bash

aws sqs set-queue-attributes –queue-url <queueURL> –attributes SqsManagedSseEnabled=false

Kiểm tra queue với mã hóa SSE-SQS được kích hoạt

Để kiểm tra gửi tin nhắn đến queue SQS với SSE-SQS được kích hoạt, chạy:

Bash

aws sqs send-message –queue-url <queueURL> –message-body test-message

Thay thế <queueURL> bằng URL của queue SQS của bạn. Bạn sẽ thấy phản hồi sau đây, có nghĩa là tin nhắn đã được gửi thành công đến queue:

JSON

{

    “MD5OfMessageBody”: “beaa0032306f083e847cbf86a09ba9b2”,

    “MessageId”: “6e53de76-7865-4c45-a640-f058c24a619b”

}

Mặc định SSE-SQS và các tin nhắn được mã hóa

Mã hóa một tin nhắn khiến nội dung của nó không thể truy cập được cho những người dùng không được ủy quyền hoặc không xác thực. Các yêu cầu ẩn danh là các yêu cầu được thực hiện đến một queue mở trên mạng công cộng mà không có bất kỳ hình thức xác thực nào. Lưu ý, nếu bạn đang sử dụng các yêu cầu SendMessage và ReceiveMessage ẩn danh đến các queue vừa được tạo mới, các yêu cầu này sẽ bị từ chối khi SSE-SQS được kích hoạt theo mặc định.

Sử dụng các yêu cầu ẩn danh đến queue SQS không tuân thủ các quy tắc bảo mật tốt nhất của SQS. Chúng tôi khuyến khích nghiêm mật cập nhật chính sách của bạn để thực hiện các yêu cầu được ký tên đến queue SQS bằng AWS SDK hoặc AWS CLI và tiếp tục sử dụng SSE-SQS được kích hoạt theo mặc định.

Xem phản hồi dịch vụ SQS đối với các tin nhắn ẩn danh khi SSE-SQS được kích hoạt. Đối với một queue đã tồn tại, bạn có thể thay đổi chính sách queue để cấp quyền SendMessage cho tất cả người dùng (người dùng ẩn danh) cho một queue có tên là EncryptionQueue:

JSON

{

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

  “Id”: “Queue1_Policy_UUID”,

  “Statement”: [

    {

      “Sid”: “Queue1_SendMessage”,

      “Effect”: “Allow”,

      “Principal”: “*”,

      “Action”: “sqs:SendMessage”,

      “Resource”: “<queueARN>”

    }

  ]

}

Sau đó, bạn có thể thực hiện một yêu cầu ẩn danh đến queue:

Bash

curl <queueURL> -d ‘Action=SendMessage&MessageBody=Hello’

Bạn sẽ nhận được một thông báo lỗi tương tự như sau:

XML

<?xml version=”1.0″?>

<ErrorResponse

xmlns=”http://queue.amazonaws.com/doc/2012-11-05/”&gt;

<Error>

<Type>Sender</Type>

<Code>AccessDenied</Code>

<Message>Access to the resource The specified queue does not exist or you do not have access to it. is denied.</Message>

<Detail/>

</Error>

<RequestId> RequestID </RequestId>

</ErrorResponse>

Tuy nhiên, nếu vì bất kỳ lý do gì mà bạn muốn tiếp tục sử dụng các yêu cầu ẩn danh đến các queue vừa được tạo mới trong tương lai, bạn phải tạo hoặc cập nhật queue với việc vô hiệu hóa mã hóa SSE-SQS.

SqsManagedSseEnabled=false

Bạn cũng có thể vô hiệu hóa SSE-SQS bằng cách sử dụng bảng điều khiển Amazon SQS.

Mã hóa queue SQS bằng key mã hóa của riêng bạn

Bạn luôn có thể thay đổi mặc định của việc mã hóa queue SSE-SQS và sử dụng các key của riêng bạn. Để mã hóa queue SQS bằng key mã hóa của riêng bạn bằng cách sử dụng  AWS Key Management Service (SSE-KMS), bạn có thể ghi đè mã hóa mặc định với SSE-SQS trong quá trình tạo queue hoặc sau đó.

Bạn có thể cập nhật loại key mã hóa mặc định SSE-SQS của queue SQS bằng Cửa sổ làm việc Amazon SQS, Giao diện dòng lệnh AWS hoặc API.

Lợi ích của việc sử dụng mã hóa SSE-SQS của SQS

Có nhiều lợi ích đáng kể khi mã hóa dữ liệu của bạn bằng mã hóa SSE-SQS của SQS:

  • SSE-SQS cho phép bạn truyền dữ liệu một cách an toàn hơn và cải thiện tư cách bảo mật của bạn, thường được yêu cầu để tuân thủ các quy định và quy định với không có chi phí bổ sung, vì bạn không cần tạo và quản lý các key mã hóa.
  • Mã hóa tại nơi lưu trữ sử dụng SSE-SQS mặc định được cung cấp miễn phí.
  • Việc mã hóa và giải mã dữ liệu của bạn được xử lý một cách minh bạch và tiếp tục cung cấp cùng hiệu suất mà bạn mong đợi.
  • Dữ liệu được mã hóa bằng tiêu chuẩn Mã hóa Nâng cao 256 bit (thuật toán AES-256 GCM), chỉ các vai trò và dịch vụ được ủy quyền mới có thể truy cập dữ liệu.

Ngoài ra, khách hàng có thể kích hoạt Cảnh báo CloudWatch để báo động về các hoạt động như thất bại trong xác thực, thay đổi chính sách Quản lý danh tính và Truy cập AWS (IAM) hoặc phá hoại các nhật ký CloudTrail để giúp phát hiện và giải quyết các sự cố bảo mật trong ứng dụng của khách hàng (để biết thêm thông tin, xem Hướng dẫn sử dụng Amazon CloudWatch).

Kết luận

Hiện tại, SQS cung cấp mã hóa phía máy chủ (SSE) bằng cách sử dụng mã hóa được sở hữu bởi SQS (SSE-SQS) theo mặc định. Cải tiến này giúp cho việc tạo queue SQS trở nên dễ dàng hơn, đồng thời giảm thiểu gánh nặng và phức tạp trong việc bảo vệ dữ liệu.

Mã hóa tại nơi lưu trữ bằng SSE-SQS mặc định được cung cấp miễn phí và được hỗ trợ cho cả queue SQS tiêu chuẩn và queue FIFO sử dụng các điểm cuối HTTPS. Mã hóa SSE-SQS mặc định đã có sẵn.

Để tìm hiểu thêm về Dịch vụ queue đơn giản Amazon (SQS), xem Bắt đầu với Amazon SQSHướng dẫn phát triển Amazon Simple Queue Service.

Để biết thêm tài nguyên học tập về serverless, truy cập Serverless Land.

Leave a comment