Biến bảo mật Python
Là một nhà phát triển, bạn có thể đã sử dụng các biến môi trường trong dòng lệnh hoặc tập lệnh shell, nhưng bạn đã sử dụng chúng như một cách để định cấu hình các ứng dụng Python của mình chưa? Show
Hướng dẫn này sẽ chỉ cho bạn tất cả mã cần thiết để nhận, cài đặt và tải các biến môi trường trong Python, bao gồm cách sử dụng chúng để cung cấp cấu hình ứng dụng và bí mật Không quen thuộc với các biến môi trường? Tại sao nên sử dụng biến môi trường để định cấu hình ứng dụng Python?Trước khi tìm hiểu cách sử dụng biến môi trường trong Python, điều quan trọng là phải hiểu tại sao chúng được cho là cách tốt nhất để định cấu hình ứng dụng. Những lợi ích chính là
Các biến môi trường có lợi ích bổ sung là trừu tượng hóa từ ứng dụng của bạn cách cấu hình và bí mật được cung cấp Cuối cùng, các biến môi trường cho phép ứng dụng của bạn chạy ở mọi nơi, cho dù đó là phát triển cục bộ trên macOS, bộ chứa trong Kubernetes Pod hay các nền tảng như Heroku hoặc Vercel Dưới đây là một số ví dụ về việc sử dụng các biến môi trường để định cấu hình tập lệnh hoặc ứng dụng Python
Các biến môi trường trong Python được điền như thế nào?Khi một quy trình Python được tạo, các biến môi trường có sẵn sẽ điền vào đối tượng 6 hoạt động giống như một từ điển Python. Điều này có nghĩa rằng
Bây giờ bạn đã biết cách điền các biến môi trường trong Python, hãy xem cách truy cập chúng Cách lấy biến môi trường PythonCác biến môi trường trong Python được truy cập bằng đối tượng 6Đối tượng 6 có vẻ giống như một từ điển nhưng khác ở chỗ các giá trị chỉ có thể là chuỗi, ngoài ra nó không thể tuần tự hóa thành JSONBạn có một vài lựa chọn khi tham chiếu đến đối tượng 6 0Cá nhân tôi thích phiên bản 3 hơn vì nó ngắn gọn hơn, nhưng sẽ sử dụng 6 cho bài viết nàyViệc truy cập một biến môi trường cụ thể trong Python có thể được thực hiện theo một trong ba cách, tùy thuộc vào điều gì sẽ xảy ra nếu biến môi trường không tồn tại Hãy cùng khám phá với một số ví dụ Có thể bạn quan tâmlựa chọn 1. Bắt buộc không có giá trị mặc địnhNếu ứng dụng của bạn gặp sự cố khi không đặt biến môi trường, thì hãy truy cập trực tiếp vào ứng dụng đó 2Ví dụ: một ứng dụng sẽ không khởi động được nếu biến môi trường bắt buộc không được đặt và giá trị mặc định không được cung cấp, e. g. mật khẩu cơ sở dữ liệu Nếu thay vì ngoại lệ 31 mặc định được đưa ra (không cho biết lý do tại sao ứng dụng của bạn không khởi động được), bạn có thể nắm bắt ngoại lệ và in ra một thông báo hữu ích
Lựa chọn 2. Bắt buộc với giá trị mặc địnhBạn có thể trả về giá trị mặc định nếu biến môi trường không tồn tại bằng cách sử dụng phương thức 32 và cung cấp giá trị mặc định làm tham số thứ hai 3Nếu biến không tồn tại và bạn sử dụng 32 mà không có giá trị mặc định, thì _____134 sẽ được trả về 9Tùy chọn 3. Logic có điều kiện nếu giá trị tồn tạiBạn có thể cần kiểm tra xem biến môi trường có tồn tại hay không, nhưng không nhất thiết phải quan tâm đến giá trị của nó. Ví dụ: ứng dụng của bạn có thể được đặt ở "Chế độ gỡ lỗi" nếu biến môi trường 35 được đặtBạn chỉ có thể kiểm tra sự tồn tại của một biến môi trường 1Hoặc kiểm tra xem nó khớp với một giá trị cụ thể 2Cách đặt biến môi trường PythonĐặt biến môi trường trong Python cũng giống như đặt khóa trên từ điển 3Điều làm cho 6 khác với một từ điển tiêu chuẩn, đó là chỉ cho phép các giá trị chuỗi 5Trong hầu hết các trường hợp, ứng dụng của bạn sẽ chỉ cần nhận các biến môi trường, nhưng cũng có những trường hợp sử dụng để thiết lập chúng. Ví dụ: xây dựng biến môi trường 37 khi khởi động ứng dụng bằng cách sử dụng biến môi trường 38, 39, 4, 5 và 92 2Một ví dụ khác là đặt biến thành giá trị mặc định dựa trên giá trị của biến khác 20Cách xóa biến môi trường PythonNếu bạn cần xóa biến môi trường Python, hãy sử dụng hàm 93Để mở rộng ví dụ về 37 của chúng tôi ở trên, bạn có thể muốn xóa các trường có tiền tố 95 khác để đảm bảo cách duy nhất ứng dụng có thể kết nối với cơ sở dữ liệu là thông qua 37Một ví dụ khác là xóa một biến môi trường khi nó không còn cần thiết nữa 21Cách liệt kê các biến môi trường PythonĐể xem tất cả các biến môi trường Đầu ra của lệnh này rất khó đọc vì nó được in dưới dạng một từ điển khổng lồ Cách tốt hơn là tạo một hàm tiện lợi để chuyển đổi 6 thành một từ điển thực tế để chúng tôi có thể tuần tự hóa nó thành JSON để in đẹp 22Tại sao nên tránh các giá trị mặc định cho các biến môi trườngBạn có thể ngạc nhiên khi biết rằng tốt nhất là tránh cung cấp các giá trị mặc định càng nhiều càng tốt. Tại sao? Các giá trị mặc định có thể khiến việc gỡ lỗi một ứng dụng bị định cấu hình sai trở nên khó khăn hơn, vì các giá trị cấu hình cuối cùng có thể sẽ là sự kết hợp của các giá trị mặc định được mã hóa cứng và các biến môi trường Dựa hoàn toàn vào các biến môi trường (hoặc càng nhiều càng tốt) có nghĩa là bạn có một nguồn thông tin duy nhất về cách ứng dụng của bạn được định cấu hình, giúp khắc phục sự cố dễ dàng hơn Sử dụng một. tệp env cho các biến môi trường PythonKhi một ứng dụng phát triển về kích thước và độ phức tạp, thì số lượng biến môi trường cũng tăng theo. Nhiều dự án gặp khó khăn ngày càng tăng khi sử dụng các biến môi trường cho cấu hình ứng dụng và bí mật vì không có chiến lược rõ ràng và nhất quán về cách quản lý chúng, đặc biệt là khi triển khai trên nhiều môi trường Một giải pháp đơn giản (nhưng không dễ mở rộng) là sử dụng tệp 98 để chứa tất cả các biến cho một môi trường cụ thểSau đó, bạn sẽ sử dụng thư viện Python chẳng hạn như python-dotenv để phân tích cú pháp tệp 98 và điền vào đối tượng 6Để làm theo, hãy tạo và kích hoạt một môi trường ảo mới, sau đó cài đặt thư viện python-dotenv 23Bây giờ hãy lưu phần bên dưới vào một tệp có tên. env (lưu ý cách đặt biến trong trình bao có cùng cú pháp như thế nào) 24Sau đó lưu phần sau vào 11 25Sau đó chạy 11 để kiểm tra các biến môi trường đang được phổ biến 26Mặc dù ban đầu các tệp 98 đơn giản và dễ làm việc, nhưng chúng cũng gây ra một loạt vấn đề mới, chẳng hạn như
Đây chỉ là một số lý do tại sao chúng tôi khuyên bạn nên di chuyển khỏi. env và sử dụng một cái gì đó như Doppler để thay thế Doppler cung cấp bảng điều khiển được kiểm soát truy cập để quản lý các biến môi trường cho mọi môi trường với CLI dễ sử dụng để truy cập cấu hình và bí mật hoạt động cho mọi ngôn ngữ, khung và nền tảng Tập trung cấu hình ứng dụng bằng cấu trúc dữ liệu PythonViệc tạo cấu trúc dữ liệu cấu hình cụ thể sẽ trừu tượng hóa cách thiết lập các giá trị cấu hình, trường nào có giá trị mặc định (nếu có) và cung cấp một giao diện duy nhất để truy cập các giá trị cấu hình thay vì 6 nằm rải rác khắp cơ sở mã của bạnDưới đây là một giải pháp hợp lý đầy đủ tính năng hỗ trợ
Để dùng thử, hãy lưu mã này vào 20 27Đối tượng 21 được phơi bày trong 20 sau đó được sử dụng bởi 23 bên dưới 28Đảm bảo rằng bạn vẫn lưu tệp 98 từ trước đó, sau đó chạy 29Bạn có thể xem mã này trên GitHub và nếu bạn đang theo đuổi giải pháp cấu hình an toàn kiểu đầy đủ tính năng hơn, thì hãy xem thư viện Pydantic tuyệt vời Tóm lượccông việc tuyệt vời. Bây giờ bạn đã biết cách sử dụng các biến môi trường trong Python để cấu hình ứng dụng và bí mật Mặc dù chúng tôi hơi thiên vị, nhưng chúng tôi khuyến khích bạn thử sử dụng Doppler làm nguồn dữ liệu chính xác cho các biến môi trường ứng dụng của bạn và bạn có thể bắt đầu miễn phí với gói Cộng đồng của chúng tôi (các dự án và bí mật không giới hạn) Chúng tôi cũng có một hướng dẫn để xây dựng một trình tạo ảnh GIF Mandalorion ngẫu nhiên bằng Python để áp dụng các kỹ thuật được trình bày trong bài viết này vào thực tế Hy vọng bạn thích bài đăng này và nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, chúng tôi muốn trò chuyện với bạn trong diễn đàn Cộng đồng của chúng tôi Xin chân thành cảm ơn Stevoisiak, Olivier Pilotte, Jacob Kasner và Alex Hall vì những ý kiến đóng góp và đánh giá của họ Nếu bạn chưa quen với Python, hãy xem phần mồi biến môi trường Python của Cory Althoff bao gồm các khái niệm cấp độ chi tiết hơn Có an toàn để lưu trữ mật khẩu trong một biến Python không?Không có vấn đề gì với việc lưu trữ mật khẩu văn bản thuần túy trong một biến bộ nhớ . Việc một ứng dụng giải mã một mật khẩu an toàn và lưu trữ nó trong bộ nhớ là điều khá phổ biến và sẽ là bình thường.
Có an toàn khi đặt mật khẩu trong các biến môi trường không?Đó không chỉ là cách làm không tốt; . Sau đó, bạn chỉ cần trình bày công khai thông tin đăng nhập của mình cho bất kỳ ai bắt gặp nó. Các biến môi trường thu thập tất cả thông tin bí mật của chúng tôi trong một tệp duy nhất. it's also very dangerous, especially if you upload your code to a public repository like GitHub. Then you just publicly present your credentials to anyone who comes across it! Environment variables collect all of our confidential information in a single file.
Làm cách nào để bảo vệ thông tin đăng nhập của bạn bằng các biến môi trường với Python?Cấu hình biến môi trường
. Để đặt mật khẩu hoặc khóa bí mật trên máy Mac, trước tiên, chúng tôi sẽ cd vào thư mục chính của bạn, sau đó mở trình chỉnh sửa tệp bằng nano. lệnh bash_profile . Khi bạn mở tệp, hãy nhập thông tin đăng nhập của bạn và nhấp vào ^X + Y để lưu tệp.
Làm cách nào để lưu trữ các biến môi trường trong Python?Sử dụng. env Tệp để lưu trữ các biến môi trường
. env ở thư mục gốc của thư mục dự án và đặt thông tin xác thực vào tệp. |