Chia sẻ tệp Compose VPN? Hãy xóa bí mật khỏi bản sao đã kết xuất
Khóa riêng có thể nằm trong YAML, trong một giá trị môi trường hoặc trong đầu ra đã phân giải mà không ai nhìn tới. Hãy kiểm tra bản sao bạn thực sự đính kèm.
Mỗi khi bạn chia sẻ một tệp Compose, tồn tại hai tạo tác: bản bạn viết và bản mà một công cụ kết xuất sau khi thay thế các biến. Bản thứ hai thường nhạy cảm hơn bản thứ nhất, và đó là bản mà người ta dán vào báo cáo sự cố mà không đọc. Nếu chỉ xem tệp nguồn, bạn đang xem sai tài liệu.
So sánh xem mỗi bản sao có thể chứa gì trước khi quyết định xóa gì.
Mô hình đã kết xuất là một tài liệu khác
Compose phân giải các biến môi trường, hợp nhất các tệp ghi đè và tạo ra một cấu hình hiệu lực mà người đọc không còn phân biệt được với các giá trị viết tay. Một tham chiếu như tên biến trong nguồn trở thành chính mã thông báo của tài khoản trong đầu ra. Cấu trúc khiến tệp hữu ích cho việc chẩn đoán vẫn sống sót qua phép biến đổi đó; mọi thứ lẽ ra không bao giờ được có trong đó cũng vậy.
Hãy tự kết xuất tệp trước khi đính kèm và coi đầu ra đó là tạo tác đang được xem xét. Nếu không thể kết xuất, bạn không thể biết mình sắp công bố điều gì.
Bí mật nằm ở nhiều nơi hơn trường khóa
Bắt đầu từ điều hiển nhiên: khóa riêng, khóa chia sẻ trước, mã thông báo, mật khẩu và URL kết nối có nhúng thông tin xác thực. Sau đó nhìn vào mọi thứ tệp trỏ tới, vì tham chiếu không phải là xóa bỏ. Tệp môi trường được gắn vào dịch vụ, tệp cấu hình được liên kết từ máy chủ, nhãn mang mã thông báo và đối số lệnh có mật khẩu đều đi cùng bản triển khai ngay cả khi YAML trông sạch. Một khóa dán vào biến có tên trấn an vẫn là khóa.
Đường dẫn máy chủ và tên dịch vụ làm lộ loại thông tin thứ hai. Tên thư mục nhà, tên máy chủ nội bộ hoặc dải mạng có thể nhận diện một người hoặc tổ chức mà không chứa một thông tin xác thực nào, và bối cảnh đó cũng đáng xóa vì lý do tương tự.
Khai báo bí mật không phải là bí mật
Các đối tượng bí mật của Compose tách khai báo khỏi vật liệu: dịch vụ nhận một đường dẫn hoặc mục tiêu, còn nội dung sống ở nơi khác. Giữ khai báo trong khi thay vật liệu thường là trao đổi đúng, vì người đánh giá cần thấy rằng có một bí mật và nó được gắn như thế nào. Điều không được tồn tại là chính nội dung.
Nhãn và chú thích cũng đáng được đối xử như vậy. Một chú thích nói đường dẫn kho nào giữ khóa sản xuất sẽ chỉ cho kẻ tấn công nơi cần nhìn dù nó không chứa khóa nào.
Giữ nguyên hình dạng để tệp vẫn chẩn đoán được
Việc xóa bỏ chế độ mạng, phiên bản image hoặc cài đặt khả năng sẽ tạo ra một tệp mà không ai có thể gỡ lỗi. Hãy thay các giá trị nhạy cảm và giữ các mối quan hệ: dịch vụ nào gắn cái gì, tham gia mạng nào, cần thiết bị nào. Đây là phần mà người đọc dùng để giải thích một tuyến đường bị thiếu hoặc một thiết bị không khả dụng. Đây cũng là phiên bản mà đồng nghiệp có thể so sánh với bản triển khai đang chạy của họ.
docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml
Đừng triển khai bản sao đã xóa bí mật như thể đó là bản gốc đang chạy. Đó là một mô tả, và một mô tả được sửa để trông an toàn sẽ thất bại theo cách giống lỗi cấu hình.
Nếu vật liệu đã bị lộ, hãy thay thế nó
Xóa tệp đính kèm không xóa những bản sao người khác đã tạo, và các bản gương cùng bộ nhớ đệm giữ bản của riêng chúng. Hãy dùng quy trình thu hồi và thay thế của nhà phát hành cho mọi thứ đã rò rỉ, rồi cập nhật bản triển khai. Thứ tự quan trọng, vì thay thế trước và thu hồi sau để lại một cửa sổ với hai thông tin xác thực còn hiệu lực.
Trong các luồng hỗ trợ, hãy bắt đầu bằng lỗi chính xác, phiên bản image, chế độ mạng và cài đặt không bí mật duy nhất quan trọng. Sự kết hợp đó giải thích một thiết bị bị thiếu hoặc một tuyến bị hỏng thường xuyên hơn nhiều so với khóa.