Làm thế nào để lưu trữ thông tin đăng nhập được yêu cầu bởi một ứng dụng?


13

Mọi người đều nói rằng lưu trữ thông tin đăng nhập trong kiểm soát phiên bản (git) là một điều xấu. Vì vậy, phải có những cách khác để lưu trữ thông tin tốt hơn nhiều.

Một ứng dụng phải nhận được thông tin đăng nhập từ một nơi nào đó để sử dụng các dịch vụ mà nó phụ thuộc vào. Những thông tin đăng nhập thường được lưu trữ trong các tập tin cấu hình. Nhập thủ công từng máy chủ để tạo tệp đó là không cần thiết, vì các máy chủ đến và đi mà không cần sự can thiệp của con người.

Làm cách nào để quản lý thông tin đăng nhập của ứng dụng?


4
Ngoài ra, điều này có lẽ quá rộng đối với một câu trả lời không phải là kích thước của một cuốn sách.
coderanger

1
@coderanger Xem bản trình bày của bạn, phân loại của bạn về các loại bí mật khác nhau là tuyệt vời. Và tôi có thể thấy bạn nghĩ cuốn sách đó như thế nào ... nhưng câu hỏi ở trên không yêu cầu phân loại, chỉ có một giải pháp cho một vấn đề cụ thể.
Evgeny

2
Nếu bạn có một tình huống cụ thể, thì vui lòng chỉnh sửa câu hỏi để bao gồm thêm chi tiết như loại bí mật đang được sử dụng (mật khẩu cơ sở dữ liệu, khóa TLS, v.v.).
coderanger

1
Cái này quá rộng. Có ít nhất 14 công cụ có sẵn để thực hiện việc này, không bao gồm tập lệnh hoặc mẫu tùy chỉnh: gist.github.com/maxvt/bb49a6c7243163b8120625fc8ae3f3cd Chi tiết bổ sung được yêu cầu (như yêu cầu CLI là bắt buộc các ứng dụng nguyên khối, v.v.)
Alexandre

1
@Alexandre Hah, tôi đã mở nó ra và nghĩ rằng "yay một danh sách tổng hợp tốt" và sau đó thấy mình được trích dẫn ở phía dưới :)
coderanger

Câu trả lời:


5

Quản lý đúng cách các bí mật của ứng dụng luôn là một thách thức. Những thách thức mới đến với việc áp dụng đám mây. Có một bài thuyết trình tuyệt vời của OWASP về thực tế và những thách thức của việc lưu trữ bí mật trên đám mây.

Bạn có thể ngạc nhiên khi biết rằng lưu trữ bí mật vào mã nguồn là một trong những giải pháp (hoặc "kiến trúc") được trình bày. Đó là bởi vì, ngay bây giờ, không có kiến ​​trúc hay cách thức hoàn hảo nào để làm việc này. Cuối cùng, bí mật của bạn có thể được mã hóa ... nhưng điều gì đang bảo vệ khóa mã hóa? "Rùa hết đường xuống", họ nói.

Mỗi loại quản lý bí mật đều có điểm mạnh và điểm yếu và bài thuyết trình đã đề cập đến điều đó. Thay vào đó, tôi sẽ cố gắng tìm hiểu một số tính năng bạn có thể đang tìm kiếm trong một giải pháp quản lý (thông tin xác thực) bí mật:

  • Kiểm soát truy cập: bạn có thể cấp quyền truy cập ghi vào quản trị viên và đọc quyền truy cập vào các ứng dụng không? Bạn có thể giới hạn những ứng dụng nào có thể đọc được không (ứng dụng A chỉ có quyền truy cập vào những bí mật đó)?
  • Nhật ký kiểm toán: cần thiết cho nhiều báo cáo khen ngợi và một cách tốt để tìm hiểu xem có gì không ổn
  • Lưu trữ an toàn các bí mật: làm thế nào là giải pháp lưu trữ các bí mật? DB được mã hóa? Mã hóa FS? Ai / cái gì giữ khóa mã hóa, nếu có? Khóa này được sử dụng như thế nào - một lần khi khởi động và sau đó được loại bỏ an toàn?
  • Xoay hoặc gia hạn khóa / mật khẩu: nếu một bí mật bị xâm phạm, bạn có thể thu hồi nó và gửi một bí mật cập nhật cho các ứng dụng không? Các ứng dụng có thể tập hợp dịch vụ quản lý bí mật không?
  • Khả năng tương thích: Một số giải pháp này cung cấp tích hợp chặt chẽ với các ngôn ngữ hoặc khung nhất định. Một số cung cấp API REST. Bạn có quan tâm đến điều này?

Bằng cách xem xét các mục này, chúng quan trọng với bạn như thế nào và chúng được triển khai theo giải pháp như thế nào, bạn sẽ có thể chọn một trong những dịch vụ quản lý bí mật ngoài kia .


3

Đối với môi trường hoàn toàn dựa trên EC2, giải pháp đơn giản nhất là sử dụng các vai trò AWS IAM và các chính sách nhóm S3. Một số công thức của mẫu này cũng bao gồm KMS để mã hóa và DynamoDB thay vì S3 để lưu trữ nhưng tôi không tìm thấy lý do nào hấp dẫn để sử dụng cả. Hãy xem https://github.com/poise/citadel , nó đặc biệt nhắm đến người dùng Chef nhưng mẫu cơ bản hoạt động cho mọi thứ, bạn có thể phải tự trợ giúp để thực hiện tải xuống thực tế từ S3.


1
Trong tương lai, câu trả lời này là một phiên bản sớm hơn và cụ thể hơn của câu hỏi.
coderanger

2
AWS hiện cung cấp dịch vụ dành riêng cho lưu trữ khóa-giá trị, bao gồm mã hóa qua KMS: aws.amazon.com/ec2/systems-manager/parameter-store .
bnzmnzhnz
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.