‫Được
‫rồi, một tính năng mới trong 1. 13. 1 đã được hỗ trợ đầy đủ cho các bí mật.
‫Nếu tôi phải tạo một dòng thẻ về cái này, thì về cơ bản, đó là 'giải pháp an toàn dễ dàng nhất để lưu trữ bí mật
‫trong Swarm. 'Tôi nói đó
‫là cách dễ nhất bởi vì nó được tích hợp sẵn trong Swarm, nó
‫có sẵn và bạn không cần phải làm gì để sử dụng nó. Miễn là bạn đã khởi tạo bầy đàn của mình và của
‫bạn trên phiên bản 1. 13 hoặc
‫mới hơn, bạn có bí mật. Tôi nói rằng nó an toàn vì nó được thiết kế từ
‫đầu để được mã hóa trên đĩa để được mã hóa khi chuyển tiếp và chỉ khả dụng ở những nơi cần thiết.
‫Và đó thực sự là những gì chúng ta cần.
‫Vậy bí mật là gì? Một bí mật, trong trường hợp này, là phân loại bất cứ thứ gì bạn không
‫muốn trên trang nhất của một tờ báo. Nếu nó xuất hiện trên trang nhất và bạn phải thay đổi
‫nó, đó là một bí mật.
‫Đó là tên người dùng hoặc
‫mật khẩu, đó là chứng chỉ TLS hoặc
‫các khóa của nó,
‫đó là khóa SSH, khóa API Twitter, khóa Amazon, đó là bất kỳ thứ gì bạn cần để cho phép kết nối giữa các thứ
‫có thể là bí mật và bạn nên đang bảo vệ nó.
‫Cho đến giờ chúng tôi vẫn chưa có nhiều lựa chọn tuyệt vời cho Swarm.
‫Chắc chắn có rất nhiều tùy chọn như Vault và các công cụ tuyệt vời khác để lưu trữ bí mật, nhưng chúng không được
‫tích hợp sẵn và chúng yêu cầu thiết lập cơ sở hạ tầng riêng để bạn thậm chí có thể
‫bắt đầu sử dụng chúng.
‫Vì vậy, chúng tôi có thể lưu trữ ở đây bất kỳ thứ gì là chuỗi hoặc nhị phân. Kích thước 5MB.
‫Và phần thú vị nhất về điều này là nó không thực sự yêu cầu ứng dụng của bạn phải được viết lại để
‫sử dụng nó.
‫Bạn không cần phải có ứng dụng của mình nói chuyện với một dịch vụ web ở nơi khác để có được những thứ này.
‫Vì vậy, chúng ta hãy xem nó hoạt động như thế nào.
‫Kể từ 1. 13. 0, cơ sở dữ liệu Swarm Raft được mã hóa trên đĩa theo mặc định. Nếu bạn cài đặt Docker và thực hiện khởi
‫động bầy đàn như chúng ta đã làm trước đây, thì đó là
‫cơ sở dữ liệu được mã hóa.
‫Và khi tắt dịch vụ, nó được mã hóa bằng các khóa được lưu trữ an toàn.
‫Nó chỉ được lưu trữ trên đĩa của các nút trình quản lý và chúng là những nút duy nhất có chìa
‫khóa để mở khóa hoặc giải mã nó.
‫Điều này đã tồn tại trong Swarm, nhưng về cơ bản cách mà các khóa đi xuống vùng
‫chứa là thông qua mặt phẳng điều khiển hoặc thông tin liên lạc mạng TLS được mã
‫hóa giữa Người quản lý và Người lao động. Và, kết nối đó đã được bảo mật, nó đã sử dụng TLS và xác
‫thực PKI lẫn nhau, vì vậy, đó là một cách tuyệt vời để sử dụng kênh hiện có đó để đưa những bí mật này xuống vùng chứa của chúng tôi.
‫Cách chúng tôi đưa chúng vào là trước tiên chúng tôi thực sự đưa chúng vào cơ sở dữ liệu Swarm bằng cách sử dụng các lệnh
‫bí mật Docker.
‫Sau đó, chúng tôi gán chúng cho các dịch vụ cho dù chúng tôi sử dụng chính các lệnh dịch vụ hay một tệp ngăn
‫xếp để cho Swarm biết ai được phép sử dụng bí mật này. Mấu chốt ở đây là chỉ vì có một vùng chứa trên máy chủ hoặc trên
‫một nút và bạn đã gán khóa cho dịch vụ đó, không có nghĩa là các vùng chứa khác có thể truy
‫cập vào nó.
‫Vì điều này được tích hợp sẵn trong Docker Engine, Docker Worker chỉ giữ khóa đó an toàn trong bộ nhớ và chỉ
‫truy cập vào các vùng chứa trên nút cần chúng.
‫Bây giờ, cách chúng được trình bày trong hệ thống tệp vào vùng chứa, nó có giống như một tệp trên ổ cứng cho các ứng dụng
‫của bạn bên trong vùng chứa không.
‫Nhưng thực ra không phải vậy. Chúng không thực sự chạy trên đĩa. Chúng chỉ nằm trong bộ nhớ bằng
‫cách sử dụng hệ thống tệp ramfs và bạn sẽ truy cập chúng bên dưới thư mục / run / secret, theo mặc định, nó sẽ
‫là tên bạn đã đặt bí mật dưới dạng tệp.
‫Sau đó, khi bạn chỉ cần truy cập vào tệp đó, bạn sẽ thấy một bí mật nằm trong đó.
‫Nếu bạn coi điều này giống như một kho
‫lưu trữ giá trị khóa, thì khóa là tên của tệp và giá trị là những gì trong đó.
‫Chúng tôi cũng có thể thiết lập bí danh để chúng tôi có thể có nhiều tên cho cùng một khóa và chúng tôi sẽ xem cách
‫thức hoạt động sau.
‫Để phát triển cục bộ, nếu bạn đang sử dụng tệp ngăn xếp có các nhiệm vụ bí mật trong đó, nó sẽ thực sự hoạt động
‫trong Docker Compose trên máy cục bộ của bạn.
‫Bây giờ, một lần nữa docker-compile, dòng lệnh, sẽ không bao giờ được sử dụng trong sản xuất trên máy chủ sản xuất.
‫Đặc biệt, trong trường hợp này, nó thực sự là bảo mật giả mạo.
‫Vì vậy, những gì đang xảy ra là chúng tôi thực sự muốn nhà phát triển Docker hoặc người dùng Docker trên máy của họ có thể
‫sử dụng các tệp ngăn xếp nhiều nhất có thể.
‫Vì vậy, các vùng chứa mà bạn chạy trên máy cục bộ của mình, sẽ thực sự thấy những bí mật
‫giống như trong Swarm.
‫Nhưng chúng tôi không có Swarm trên máy cục bộ của mình trừ khi chúng tôi khởi tạo nó ở đó, điều
‫mà hầu hết mọi người sẽ không làm.
‫Và cách chúng tôi lưu trữ các bí mật là trong cơ sở dữ liệu của Swarm.
‫Vì vậy, điều này có thể là hiển nhiên đối với bạn nhưng bí mật phụ thuộc vào Swarm. Đó là một thứ chỉ dành cho bầy đàn. Nếu bạn không có Swarm,
‫bạn không thể sử dụng bí mật.
‫Tuy nhiên, lệnh docker-compile có một cách giải quyết là nó thực sự gắn các bí mật trong một tệp văn bản rõ
‫ràng vào vùng chứa cục bộ.
‫Bây giờ điều đó không an toàn, nhưng nó cho phép chúng tôi sử dụng bí mật cục bộ trên máy của chúng tôi.
‫Nó không phải là thứ mà bạn muốn sử dụng trong sản xuất, đó là lý do tại sao chúng tôi có một cửa hàng an toàn
‫cho Swarm.