Giữ bí mật khỏi mã và nhật ký

Sử dụng AWS Security dành cho Developer

Rahul Singh

Technical Product Manager

Không phải thứ nhạy cảm nào cũng là bí mật

Ba loại chuỗi

  • Bí mật: người lạ có thể mạo danh bạn
  • Dữ liệu nhạy cảm: làm lộ thông tin cá nhân
  • Cấu hình: không có gì để trục lợi

Ba hàng xếp chồng so sánh bí mật, dữ liệu nhạy cảm và cấu hình. Mỗi hàng hiển thị hai giá trị ví dụ và điều người lạ có thể làm với chúng, từ mạo danh bạn cho đến không có gì để trục lợi.

Sử dụng AWS Security dành cho Developer

Không phải thứ nhạy cảm nào cũng là bí mật

Ba loại chuỗi

  • Bí mật: người lạ có thể mạo danh bạn
  • Dữ liệu nhạy cảm: làm lộ thông tin cá nhân
  • Cấu hình: không có gì để trục lợi

Hai cách gọi dữ liệu cá nhân

  • PII: thông tin nhận dạng cá nhân
  • PHI: thông tin sức khỏe được bảo vệ

Ba hàng xếp chồng so sánh bí mật, dữ liệu nhạy cảm và cấu hình. Mỗi hàng hiển thị hai giá trị ví dụ và điều người lạ có thể làm với chúng, từ mạo danh bạn cho đến không có gì để trục lợi.

Sử dụng AWS Security dành cho Developer

Bốn cách bí mật bị lộ

Một bí mật trong hệ thống đang chạy tỏa ra bốn lối thoát được đánh số: 1 tới mã nguồn và lịch sử của nó, 2 tới biến môi trường, 3 tới nhật ký ứng dụng, 4 tới đầu ra lỗi và vết truy. Cả bốn hội tụ vào một hộp ghi có thể đọc bởi ai đó.

  1. Mã nguồn và lịch sử của nó
  2. Biến môi trường
Sử dụng AWS Security dành cho Developer

Bốn cách bí mật bị lộ

Một bí mật trong hệ thống đang chạy tỏa ra bốn lối thoát được đánh số: 1 tới mã nguồn và lịch sử của nó, 2 tới biến môi trường, 3 tới nhật ký ứng dụng, 4 tới đầu ra lỗi và vết truy. Cả bốn hội tụ vào một hộp ghi có thể đọc bởi ai đó.

  1. Mã nguồn và lịch sử của nó
  2. Biến môi trường
  3. Nhật ký ứng dụng
  4. Đầu ra lỗi và vết truy
Sử dụng AWS Security dành cho Developer

Mã hóa khi lưu trữ không đồng nghĩa ẩn đi

Lựa chọn có vẻ an toàn

  • Mã hóa khi lưu trữ, luôn luôn
  • Khóa AWS KMS, mặc định do AWS quản lý

Một hàm Lambda giữ biến môi trường tách thành hai nhánh. Trên đĩa, nó được mã hóa khi lưu trữ bằng khóa AWS KMS, hiển thị màu xanh. Qua API, lệnh gọi GetFunctionConfiguration trả về giá trị ở dạng rõ, hiển thị màu đỏ. Cả hai gặp nhau tại ghi chú nói chỉ một nhánh được bảo vệ.

Sử dụng AWS Security dành cho Developer

Mã hóa khi lưu trữ không đồng nghĩa ẩn đi

Lựa chọn có vẻ an toàn

  • Mã hóa khi lưu trữ, luôn luôn
  • Khóa AWS KMS, mặc định do AWS quản lý

GetFunctionConfiguration trả về gì

  • Giá trị ở dạng văn bản thuần

Câu trả lời về lưu trữ cho câu hỏi về truy cập

Một hàm Lambda giữ biến môi trường tách thành hai nhánh. Trên đĩa, nó được mã hóa khi lưu trữ bằng khóa AWS KMS, hiển thị màu xanh. Qua API, lệnh gọi GetFunctionConfiguration trả về giá trị ở dạng rõ, hiển thị màu đỏ. Cả hai gặp nhau tại ghi chú nói chỉ một nhánh được bảo vệ.

Sử dụng AWS Security dành cho Developer

Chọn nơi lưu, vì sao

Hai dịch vụ, mỗi dịch vụ một việc

  • Secrets Manager: xây cho bí mật
  • Parameter Store: xây cho cấu hình, và tham số SecureString được mã hóa bằng khóa KMS

Một sơ đồ phổ. Bên trái là Secrets Manager, bên phải là Systems Manager Parameter Store, và bốn thanh ngang chạy giữa chúng. Mỗi thanh có một điểm đánh dấu: 1 ở ngoài cùng trái, 2 lệch trái, 3 ở giữa, 4 ngoài cùng phải, với chi phí ở hai đầu thanh thứ tư và ghi chú "xoay vòng là yếu tố quyết định".

Sử dụng AWS Security dành cho Developer

Chọn nơi lưu, vì sao

Hai dịch vụ, mỗi dịch vụ một việc

  • Secrets Manager: xây cho bí mật
  • Parameter Store: xây cho cấu hình, và tham số SecureString được mã hóa bằng khóa KMS

Bốn yếu tố quyết định

  1. Xoay vòng được quản lý
  2. Chia sẻ chéo tài khoản
  3. Phiên bản hóa
  4. Chi phí

Một sơ đồ phổ. Bên trái là Secrets Manager, bên phải là Systems Manager Parameter Store, và bốn thanh ngang chạy giữa chúng. Mỗi thanh có một điểm đánh dấu: 1 ở ngoài cùng trái, 2 lệch trái, 3 ở giữa, 4 ngoài cùng phải, với chi phí ở hai đầu thanh thứ tư và ghi chú "xoay vòng là yếu tố quyết định".

Sử dụng AWS Security dành cho Developer

Đọc mới, lưu đệm ngắn

Tiến trình của bạn gọi GetSecretValue tới kho bí mật tại điểm 1, dùng vai trò giới hạn phạm vi tại điểm 2 chỉ cho một ARN bí mật cộng với kms:Decrypt, và giữ giá trị trả về trong bộ nhớ đệm tại điểm 3 trước khi gọi cơ sở dữ liệu hoặc API đối tác.

  1. Gọi GetSecretValue khi khởi động
  2. Vai trò giới hạn cho một ARN bí mật cộng kms:Decrypt
Sử dụng AWS Security dành cho Developer

Đọc mới, lưu đệm ngắn

Tiến trình của bạn gọi GetSecretValue tới kho bí mật tại điểm 1, dùng vai trò giới hạn phạm vi tại điểm 2 chỉ cho một ARN bí mật cộng với kms:Decrypt, và giữ giá trị trả về trong bộ nhớ đệm tại điểm 3 trước khi gọi cơ sở dữ liệu hoặc API đối tác.

  1. Gọi GetSecretValue khi khởi động
  2. Vai trò giới hạn cho một ARN bí mật cộng kms:Decrypt
  3. Lưu đệm giá trị trong bộ nhớ

Lưu đệm mãi, xoay vòng sẽ làm bạn hỏng

Sử dụng AWS Security dành cho Developer

Xoay vòng làm giá trị đổi dưới chân bạn

Vì sao bốn bước, không phải một lần đổi

  • Giá trị mới được kiểm chứng trước khi ai đó dùng
  • Đổi một lần sẽ làm hỏng mọi client cùng lúc

Ba cột dọc xuống trang: các bước xoay vòng, nhãn, và bộ đệm của bạn. Secrets Manager chạy createSecret, setSecret và testSecret, rồi một đường gạch đánh dấu lúc finishSecret di chuyển nhãn. Trên đường đó, nhãn "AWSCURRENT = giá trị cũ" và bộ đệm là đúng; dưới đường đó, nhãn "AWSCURRENT = giá trị mới" và cùng bộ đệm bị gạch đỏ. Hai cách khắc phục kết thúc sơ đồ: thời gian đệm ngắn và làm mới khi xác thực thất bại.

Sử dụng AWS Security dành cho Developer

Xoay vòng làm giá trị đổi dưới chân bạn

Vì sao bốn bước, không phải một lần đổi

  • Giá trị mới được kiểm chứng trước khi ai đó dùng
  • Đổi một lần sẽ làm hỏng mọi client cùng lúc

Bốn bước, một lần bàn giao

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Ba cột dọc xuống trang: các bước xoay vòng, nhãn, và bộ đệm của bạn. Secrets Manager chạy createSecret, setSecret và testSecret, rồi một đường gạch đánh dấu lúc finishSecret di chuyển nhãn. Trên đường đó, nhãn "AWSCURRENT = giá trị cũ" và bộ đệm là đúng; dưới đường đó, nhãn "AWSCURRENT = giá trị mới" và cùng bộ đệm bị gạch đỏ. Hai cách khắc phục kết thúc sơ đồ: thời gian đệm ngắn và làm mới khi xác thực thất bại.

Sử dụng AWS Security dành cho Developer

Xoay vòng làm giá trị đổi dưới chân bạn

Vì sao bốn bước, không phải một lần đổi

  • Giá trị mới được kiểm chứng trước khi ai đó dùng
  • Đổi một lần sẽ làm hỏng mọi client cùng lúc

Bốn bước, một lần bàn giao

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Không gì báo cho bộ đệm của bạn

  • Thời gian sống vài phút, rồi đọc lại
  • Làm mới khi xác thực thất bại

Ba cột dọc xuống trang: các bước xoay vòng, nhãn, và bộ đệm của bạn. Secrets Manager chạy createSecret, setSecret và testSecret, rồi một đường gạch đánh dấu lúc finishSecret di chuyển nhãn. Trên đường đó, nhãn "AWSCURRENT = giá trị cũ" và bộ đệm là đúng; dưới đường đó, nhãn "AWSCURRENT = giá trị mới" và cùng bộ đệm bị gạch đỏ. Hai cách khắc phục kết thúc sơ đồ: thời gian đệm ngắn và làm mới khi xác thực thất bại.

Sử dụng AWS Security dành cho Developer

Mask, redact, vẫn gỡ lỗi được

Một dòng log thô chứa ID yêu cầu, số thẻ đầy đủ và token, được khoanh đỏ. Bên dưới là ba trường sau xử lý: ID yêu cầu giữ nguyên, thẻ được che chỉ còn bốn số cuối, và token được thay bằng dấu "đã ẩn", kèm ghi chú "đủ để gỡ lỗi".

Làm sạch trước khi ghi

  • Mask: giữ hình dạng, ẩn giá trị
Sử dụng AWS Security dành cho Developer

Mask, redact, vẫn gỡ lỗi được

Một dòng log thô chứa ID yêu cầu, số thẻ đầy đủ và token, được khoanh đỏ. Bên dưới là ba trường sau xử lý: ID yêu cầu giữ nguyên, thẻ được che chỉ còn bốn số cuối, và token được thay bằng dấu "đã ẩn", kèm ghi chú "đủ để gỡ lỗi".

Làm sạch trước khi ghi

  • Mask: giữ hình dạng, ẩn giá trị
  • Redact: xóa giá trị, giữ dấu thay thế
Sử dụng AWS Security dành cho Developer

Mask, redact, vẫn gỡ lỗi được

Một dòng log thô chứa ID yêu cầu, số thẻ đầy đủ và token, được khoanh đỏ. Bên dưới là ba trường sau xử lý: ID yêu cầu giữ nguyên, thẻ được che chỉ còn bốn số cuối, và token được thay bằng dấu "đã ẩn", kèm ghi chú "đủ để gỡ lỗi".

Làm sạch trước khi ghi

  • Mask: giữ hình dạng, ẩn giá trị
  • Redact: xóa giá trị, giữ dấu thay thế

Người trực on-call cần cấu hình, người lạ cần phần còn lại bị ẩn

Sử dụng AWS Security dành cho Developer

Cùng luyện tập nào!

Sử dụng AWS Security dành cho Developer

Preparing Video For Download...