Làm cách nào để lưu trữ bí mật được mã hóa trong mã cho dự án serverless.com?


12

Với serverless.com, cách dễ nhất để tiết lộ bí mật cho chức năng AWS Lambda là lưu trữ nó trong serverless.ymltệp (ví dụ được mã hóa bằng KMS).

Nhưng cam kết bí mật được mã hóa cho Git không phải là điều tốt nhất trên thế giới. Yêu cầu thay đổi mã khi bí mật phải thay đổi, vì một điều.

Nhưng về mặt bảo mật, những lựa chọn thay thế tốt hơn là gì? ví dụ: bí mật có thể được lưu trữ trong S3 (được mã hóa), với Lambda được cấp quyền truy cập vào vị trí đó và khóa KMS, nhưng điều đó có thực sự tốt hơn theo bất kỳ cách có ý nghĩa nào không?


ý kiến ​​thể dục ngữ nghĩa này quan tâm đến tôi không.
Assaf Lavie

Câu trả lời:


7

Có một vài yếu tố cần xem xét ở đây:

  1. Điều có giá trị là có khả năng duy trì cấu hình với nhịp phát hành riêng biệt từ mã đang được cấu hình. Làm như vậy khuyến khích luân chuyển thông tin một cách tự động, làm điều đó thường xuyên làm cho nó không đau.

  2. Hoàn toàn hợp lý theo quan điểm "Cơ sở hạ tầng dưới dạng mã" để lưu trữ tất cả cấu hình trong Git, mặc dù có thể trong một kho lưu trữ khác vì phạm vi cấu hình có thể trải rộng trên một dịch vụ.

  3. Giả sử cả hai câu trên đều phù hợp với tình huống của bạn, tôi sẽ có xu hướng mã hóa dữ liệu bằng KMS và lưu trữ nó trong S3 hoặc DynamoDB. Tôi thậm chí sẽ đi xa để nói rằng trong những tình huống rất đơn giản, có thể phù hợp để mã hóa và lưu trữ dữ liệu trong chính KMS.

Có một số thư viện mã nguồn mở sẽ hỗ trợ thao tác này:


1

Tôi thường coi bí mật là dữ liệu cấu hình trong phạm vi. Như vậy, nó không sống cùng với mã vì chúng được xử lý bởi các lịch trình và quy trình phát hành khác nhau. Một git repo riêng, KMS, máy phát điện, s3 hoặc bên trong hệ thống quản lý cấu hình của bạn (cơ sở dữ liệu đầu bếp / mã hóa trong thế giới đầu bếp) là những nơi tốt. Về cơ bản, bạn không muốn phải xây dựng và triển khai một bản phát hành mới của phần mềm để được cập nhật bí mật.

Nếu nhu cầu quản lý bí mật của bạn phức tạp hơn, một cái gì đó như Hasicorp Vault ( https://github.com/hashicorp/vault ) sẽ là một lựa chọn tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.