Gói này giúp bạn quản lý. env cho các môi trường triển khai khác nhau. Mỗi. env được mã hóa an toàn và được giữ trong phần kiểm soát phiên bản ứng dụng của bạn. Khi bạn triển khai ứng dụng của mình, môi trường cụ thể thích hợp. tệp env được giải mã và di chuyển vào vị trí
Điều này một phần được lấy cảm hứng từ gói chứng chỉ xuất sắc của Marcel. Nếu bạn muốn quản lý thông tin đăng nhập của mình trong tệp json, với Laravel xử lý mã hóa/giải mã và chỉ có một môi trường triển khai, gói đó có thể phù hợp hơn với nhu cầu của bạn
Gói của chúng tôi khác nhau theo những cách sau
- Chúng tôi muốn làm việc với. env trực tiếp và giải mã. env kết thúc ở nơi mà Laravel đã mong đợi. Ứng dụng này sử dụng. biến env giống như bình thường
- Chúng ta cần quản lý. env cho nhiều môi trường [như qa, uat, production]. Gói này cho phép bạn quản lý bất kỳ số lượng môi trường cụ thể nào. tập tin env
- Chúng tôi muốn tận dụng các dịch vụ như AWS Key Management Service để xử lý mã hóa/giải mã, với tùy chọn thêm các trình điều khiển mã hóa khác [như ansible] hoặc các dịch vụ quản lý bí mật [như AWS Secrets Manager] trong tương lai
Ghi chú
Laravel v9. 32. 0 đã giới thiệu các lệnh
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]9 và'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]0 mới, xung đột với các lệnh trong gói này. Chúng tôi đã chuyển các lệnh của mình trong v2 sang'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]1 và'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]2
Cài đặt và thiết lập
điều kiện tiên quyết
Nếu bạn định kích hoạt tính năng nén, bạn phải cài đặt và kích hoạt Tiện ích nén Zlib
Cài đặt gói
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]3
Thêm hook của nhà soạn nhạc
trong nhà soạn nhạc của bạn. json thêm
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]4 dưới dạng hook sau khi cài đặt. Bạn có thể đã có phần
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]0, hãy thêm lệnh mới để nó trông như thế này
"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
Tạo cấu hình [tùy chọn]
Cấu hình mặc định dựa trên các biến môi trường [e. g. trình điều khiển, lưu trữ env, tệp đích, aws, gcp]. Nếu bạn cần tùy chỉnh nó, bạn có thể xuất bản cấu hình bằng cách chạy
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]1
Nhà cung cấp dịch vụ thiết lập [các phiên bản cũ hơn của Laravel]
Nếu bạn đang sử dụng phiên bản Laravel cũ hơn 5. 5, bạn sẽ cần thêm thủ công nhà cung cấp dịch vụ vào tệp
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]2 của mình
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]
Thiết lập cấu hình
Khóa cấu hìnhBiến môi trườngMặc địnhMô tả'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]3ENV_DRIVER_______04Trình điều khiển mặc định.
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]5EDITOR
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]6Trình soạn thảo văn bản ưa thích.
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]7ENV_STORAGE_PATH
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]8Thư mục mà chúng ta nên giữ mã hóa. env files
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]9ENV_DESTINATION_FILE
"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
20Đây là nơi chúng tôi sẽ đặt tệp được giải mã. tệp env"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
21ENV_COMPRESSION"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
22Có nên nén dữ liệu trước khi mã hóa không?"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
23AWS_KMS_KEY"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
24ID hoặc bí danh khóa AWS"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
25AWS_KMS_REGION"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
24Một khu vực AWS có khóa. "scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
27GOOGLE_KMS_PROJECT, GOOGLE_CLOUD_PROJECT"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
24, "scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
24A Mã định danh dự án Google Cloud'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]20GOOGLE_KMS_LOCATION
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]21A Vị trí Google Cloud KMS
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]22GOOGLE_KMS_KEY_RING
"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
24A Vòng chìa khóa Google Cloud KMS'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]24GOOGLE_KMS_KEY_______ 124A Khóa Google Cloud KMS
nghị quyết môi trường
Để gói này giải mã đúng. env khi bạn triển khai, bạn cần cho nó biết cách tìm ra môi trường
Theo mặc định, nó sẽ tìm biến môi trường
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]26. Tuy nhiên, bạn có thể cung cấp trình phân giải tùy chỉnh của riêng mình với chức năng gọi lại. Đặt cái này vào phương pháp ________ 228 của ________ 227 của bạn
"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
2Bằng cách này, bạn có thể giải quyết môi trường dựa trên tên máy chủ, thẻ phiên bản EC2, v.v. Điều này sau đó sẽ giải mã chính xác. env dựa trên tên môi trường mà bạn trả về
Độ phân giải tên khóa
Thông thường, chúng tôi mong đợi tên khóa của bạn được chỉ định trong. tập tin env. Tuy nhiên, bạn có thể muốn chỉ định các khóa khác nhau tùy thuộc vào môi trường. Giả sử, nếu bạn có thiết lập thông tin xác thực AWS IAM bị hạn chế khác nhau cho các môi trường của mình, thì điều này sẽ cho phép bạn đảm bảo từng. tệp env chỉ có thể được giải mã trong môi trường thích hợp
Tất nhiên, thông tin đăng nhập IAM cục bộ của riêng bạn sẽ vẫn cần quyền truy cập đầy đủ vào tất cả các khóa để bạn có thể chỉnh sửa từng khóa. tệp env cục bộ
Để giải quyết tên khóa, hãy cung cấp chức năng gọi lại như thế này
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]2
Lưu ý rằng trình phân giải của bạn sẽ nhận được tên môi trường đã được giải quyết, vì vậy bạn có thể sử dụng tên này để giúp tìm ra tên khóa nào cần trả về
trình điều khiển
Dịch vụ quản lý khóa AWS
AWS KMS là một dịch vụ được quản lý giúp bạn dễ dàng tạo và kiểm soát các khóa mã hóa dùng để mã hóa dữ liệu của mình, đồng thời sử dụng các mô-đun bảo mật phần cứng đã được xác thực FIPS 140-2 để bảo vệ tính bảo mật của các khóa của bạn
Để sử dụng bộ trình điều khiển này
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]29 trong. tập tin env
Trong phần tạo khóa mã hóa của bạn. Đảm bảo rằng người dùng AWS IAM của bạn có quyền
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]90 và
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]91 đối với khóa này
Sao chép Key ID và lưu trữ dưới dạng
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]92 tại địa phương của bạn. tập tin env. Khi bạn thiết lập môi trường cụ thể. env, đảm bảo bao gồm
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]92 này trong mỗi tệp. tập tin env
Dịch vụ quản lý khóa đám mây của Google
Google KMS quản lý an toàn các khóa mã hóa và bí mật trên Google Cloud Platform. Tích hợp Google KMS với Google HSM giúp dễ dàng tạo khóa được bảo vệ bởi thiết bị FIPS 140-2 Cấp 3
Để sử dụng bộ trình điều khiển này
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]94 trong. tập tin env
Trong Google Cloud Console, hãy tạo vòng chìa khóa và chìa khóa của bạn. Đảm bảo người dùng Google IAM của bạn có vai trò
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]95 cho khóa này
Sao chép Project, Key Ring và Key lưu trữ chúng dưới dạng
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]96,
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]97 và
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]98 tại địa phương của bạn. tập tin env. Khi bạn thiết lập môi trường cụ thể. env, đảm bảo bao gồm các khóa này trong mỗi tệp. tập tin env
Cách sử dụng
Tạo/chỉnh sửa một. tập tin env
Chạy
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]99 trong đó
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]00 là môi trường bạn muốn tạo hoặc chỉnh sửa. Thao tác này sẽ mở tệp trong
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]6 để bạn chỉnh sửa. Sửa đổi nội dung nào đó trong tệp, lưu và thoát
Sử dụng biến môi trường
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]02 để đặt trình chỉnh sửa ưa thích của bạn
giải mã của bạn. env
Bây giờ bạn có thể chạy
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]03 sẽ giải mã tệp bản mã mà bạn đã chỉnh sửa và ghi bản rõ vào
"scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
20 của bạn, thay thế bất kỳ thứ gì có trong đó. Bây giờ nếu bạn nhìn vào "scripts": {
"post-install-cmd": [
...
"php artisan env:fetch"
]
20 của mình, bạn sẽ thấy phần chỉnh sửa của mìnhNếu không có môi trường
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]00 nào được cung cấp, môi trường sẽ được xác định bởi lệnh gọi lại độ phân giải tùy chỉnh của riêng bạn hoặc biến môi trường
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]26
Mã hóa và lưu hiện tại của bạn. env
Đôi khi bạn có thể muốn lấy hiện tại của bạn. env và mã hóa chính xác nguyên trạng
Chạy
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]08 để thực hiện việc này, trong đó
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]09 là tên của tệp môi trường được mã hóa mà bạn muốn tạo. Nếu bạn không cung cấp tên, tên môi trường
'providers' => [ ... STS\EnvSecurity\EnvSecurityServiceProvider::class, ]26 hiện tại của bạn sẽ được sử dụng
triển khai đầu tiên
Khi bạn đang đọc qua phần này, có lẽ bạn đang thắc mắc triển khai ban đầu đầu tiên sẽ hoạt động như thế nào. Để gói này giải mã được. env config nơi lưu trữ tất cả thông tin đăng nhập nhạy cảm của bạn, nó cần thông tin đăng nhập tài khoản có quyền đối với khóa KMS của bạn