- vừa được xem lúc

Bảo mật thông tin nhạy cảm trong Lambda bằng AWS Systems Manager Parameter Store

0 0 1

Người đăng: Phuc Dang Xuan

Theo Viblo Asia

Xin chào mọi người, hôm nay mình sẽ chia sẻ một cách đơn giản nhưng khá quan trọng để bảo mật các thông tin nhạy cảm (như API key, password, secret token...) trong Lambda function là sử dụng AWS Systems Manager (SSM) Parameter Store

Thay vì hard-code các giá trị nhạy cảm vào mã nguồn hoặc file .env, bạn có thể lưu trữ chúng một cách bảo mật trong Parameter Store và chỉ cho phép Lambda truy cập đúng thông tin cần thiết

1. Parameter Store là gì?

AWS Systems Manager Parameter Store là một dịch vụ giúp lưu trữ các cấu hình, biến môi trường hoặc secret theo cách an toàn. Nó hỗ trợ việc lưu dưới dạng plain text hoặc encrypted, quản lý version cho từng parameter, hay tích hợp tốt với Lambda, EC2, ECS...

2. Tạo một parameter trong SSM

Để bắt đầu, chúng ta sẽ tạo một parameter chứa thông tin nhạy cảm (ví dụ API key) trong AWS Systems Manager.

  1. Truy cập SSM Console
  2. Click Create parameter
  3. Nhập các thông tin như sau:
    • Name: tên định danh theo dạng /prefix/name (ví dụ: /myapp/api-key)
    • Tier: chọn Standard (hoặc Advanced nếu bạn cần nhiều hơn 100000 params)
    • Type:
      • String: nếu giá trị không cần mã hóa
      • StringList: nếu cần lưu danh sách các chuỗi, cách nhau bằng dấu phẩy (ví dụ: admin,user,test)
      • SecureString: nếu muốn mã hóa nội dung bằng KMS
  4. Data type: để mặc định là text
  5. Value: nhập giá trị bạn cần lưu
  6. Click Create parameter

3. Thiết lập Lambda permission

Sau khi đã tạo parameter trong SSM, bước tiếp theo là đảm bảo hàm Lambda có quyền đọc được giá trị đó. Điều này được thực hiện thông qua IAM Role mà Lambda đang sử dụng.

Bạn cần gán policy bên dưới để Lambda có thể gọi API GetParameter hoặc GetParameters:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters" ], "Resource": "arn:aws:ssm:ap-northeast-1:123456789012:parameter/myapp/*" } ]
}

Ngoài ra bạn còn có thể attach policy này bằng cách:

  • Vào IAM → Roles → chọn role tương ứng
  • Chọn Add permissions → Attach policies

4. Đọc parameter trong Lambda Python

Sau khi đã gán quyền truy cập SSM cho Lambda, bạn có thể sử dụng thư viện boto3 để truy xuất các parameter trực tiếp từ mã Python.

Cài thư viện boto3 nếu test local:

pip install boto3

Bạn có thể tham khảo đoạn code dưới đây:

import boto3 ssm = boto3.client('ssm') def lambda_handler(event, context): try: response = ssm.get_parameter( Name='/myapp/api-key', WithDecryption=True # nên đặt True nếu là SecureString ) api_key = response['Parameter']['Value'] print("API key retrieved successfully") return { "statusCode": 200, "body": "SSM parameter loaded" } except Exception as e: print("Error retrieving parameter: {e}") return { "statusCode": 500, "body": "Error retrieving parameter" } 

5. Tổng kết

SSM Parameter Store là một công cụ đơn giản nhưng khá mạnh mẽ để bảo vệ các thông tin nhạy cảm khi làm việc với AWS Lambda. Việc tách cấu hình ra khỏi source code không chỉ giúp tăng tính bảo mật, mà còn giúp hệ thống dễ bảo trì, mở rộng và tuân thủ các tiêu chuẩn bảo mật.

Nếu bạn đang làm việc với API key, secret token, hoặc bất kỳ thông tin nào cần bảo vệ, hãy thử áp dụng SSM ngay từ bước đầu để xây dựng cơ sở hạ tầng an toàn hơn.

Bài viết có thể còn nhiều hạn chế, rất mong nhận được góp ý từ mọi người để mình cải thiện trong những bài sau. Cảm ơn các bạn đã theo dõi và ủng hộ!

Bình luận

Bài viết tương tự

- vừa được xem lúc

PDF Export, cẩn thận với những input có thể truyền vào

Giới thiệu. Dạo gần đây mình tình cờ gặp rất nhiều lỗi XSS, tuy nhiên trang đó lại có sử dụng dữ liệu người dùng input vào để export ra PDF.

0 0 74

- vừa được xem lúc

Giới thiệu về AWS Batch

Khi sử dụng hệ thống cloud service, điều chúng ta thường phải quan tâm đến không chỉ là hiệu suất hoạt động (performance) mà còn phải chú ý đến cả chi phí bỏ ra để duy trì hoạt động của hệ thống. Chắn hẳn là hệ thống lớn hay nhỏ nào cũng đã từng phải dùng đến những instance chuyên để chạy batch thực

0 0 147

- vừa được xem lúc

Tìm hiểu về AWS KMS

1. AWS KMS là gì. Ở KMS bạn có thể lựa chọn tạo symetric key (khóa đối xứng) hoặc asymetric key (khóa bất đối xứng) để làm CMK (Customer Master Key). Sau khi tạo key thì có thể thiết đặt key policy để control quyền access và sử dụng key.

0 0 69

- vừa được xem lúc

AWS VPC cho người mới bắt đầu

Tuần này, tôi trình bày lại những gì tôi đã học được về Virtual Private Cloud (VPC) của Amazon. Nếu bạn muốn xem những gì tôi đã học được về AWS, hãy xem Tổng quan về DynamoDB và Tổng quan về S3. VPC là gì. Những điều cần lưu ý:.

0 0 90

- vừa được xem lúc

AWS Essentials (Phần 6): Guildline SNS Basic trên AWS

Tiếp tục với chuỗi bài viết về Basic AWS Setting, chúng ta tiếp tục tìm hiểu tiếp tới SNS (Simple Notification Service). Đây là một service của AWS cho phép người dùng setting thực hiện gửi email, text message hay push notification tự động tới mobile device dựa trên event người dùng setting phía AWS

0 0 152

- vừa được xem lúc

Sử dụng Amazon CloudFront Content Delivery Network với Private S3 Bucket — Signing URLs

Trong nhiều trường hợp, thì việc sử dụng CDN là bắt buộc. Mình đã trải nghiệm với một số CDN nhưng cuối cùng mình lựa chọn sử dụng AWS CloudFront.

0 0 124