Azure - Chuỗi kết nối trong Key Vault và Cài đặt ứng dụng


8

Đối với các Hàm Azure và WebJob, có bất kỳ lợi ích nào khi đặt các chuỗi kết nối làm Bí mật trong Khóa Vault thay vì đặt chúng trực tiếp trong Cài đặt ứng dụng (và tham chiếu chúng bằng Cấu hình Trình quản lý. Kết nốiStrings)? Có phải Bí mật kho tiền khóa Azure chủ yếu dành cho máy ảo và hơn là Chức năng Azure và WebJob không?

Có vẻ như nó chỉ cần thêm một bước bổ sung trong cả hai quá trình phát triển (cập nhật Secret in Key Vault và Secret IDifier trong Cài đặt ứng dụng) và thêm một bước trong thời gian chạy (truy xuất bổ sung từ Key Vault), với lợi ích duy nhất là Bí mật trong Cài đặt ứng dụng là số nhận dạng thay vì Bí mật thực tế. Tôi không thấy lợi ích bảo mật ở đây, trong khi có những bất lợi.


Thật tuyệt vời khi cung cấp chuỗi kết nối cơ sở dữ liệu công cộng của bạn khi gặp lỗi trên github :) (Nếu bạn thực sự cần một lý do)
Tensibai 22/03/18

Tôi không thấy điều đó sẽ xảy ra. Tôi đang nói về việc có chuỗi kết nối trong Cài đặt ứng dụng, được lưu trữ trên đám mây và không bao giờ chạm vào cơ sở mã.
Anonymous1

Miễn là nó được thực hiện trên đám mây vì tất cả các tương tác gui đều ổn, hãy chuyển sang IaC thuần túy, nơi tất cả các kết hợp đám mây của bạn được thực hiện dưới dạng mã và điều này sẽ xảy ra vào một ngày nào đó, đó là lý do chính để sử dụng kho tiền. Nếu bạn không thấy cần thiết thì đừng sử dụng nó ...
Tensibai 22/03/18

Vâng, chỉ là Bộ nhận dạng bí mật có vẻ an toàn / không an toàn như chuỗi kết nối DB. Bạn cần phải thay đổi cả hai hoặc không.
Anonymous1

Hu .. không thực sự, một cái gì đó có tên 'DB_Cx_String' được tham chiếu trong cài đặt ứng dụng ít gặp sự cố hơn 'jdbc: // host: port / DBname' cho ví dụ.
Tensibai 22/03/18

Câu trả lời:


9

Những lợi ích mà tôi thấy là những lý do chung để sử dụng Azure Key Vault

  • Bí mật được lưu trữ tập trung với các tùy chọn cho phép, kiểm toán, v.v.
  • Azure có thể được viết kịch bản để cập nhật các bí mật trên bộ đếm thời gian - vì vậy trong trường hợp chuỗi kết nối bị trao nhầm, nó chỉ có hiệu lực trong một ngày (hoặc một tuần hoặc bất cứ điều gì)
  • Trong trường hợp bí mật được chia sẻ giữa nhiều ứng dụng, bạn chỉ phải cập nhật nó ở một nơi (không phải là lợi ích lớn nhất, nhưng vẫn tốt đẹp)

1
Dường như với tôi rằng bạn đang nói rằng kho tiền khóa chỉ hữu ích nếu nhiều máy chủ ứng dụng đang chia sẻ bí mật CÙNG. Nếu chuỗi kết nối được sử dụng bởi một máy chủ ứng dụng, thì không có lợi thế nào cho vault khóa.
John Henckel

3

Tôi có cùng quan điểm với bạn, tôi thấy không có điểm nào trong việc sử dụng Key Vault trong các tình huống như vậy.

Thay vào đó, tôi sử dụng Cấu hình ứng dụng Azure https://docs.microsoft.com/en-us/azure/azure-app-configuration/overview , nơi tôi chỉ cần lưu trữ tất cả các cài đặt ứng dụng. Và chuỗi duy nhất tôi lưu trữ cùng nhau trong dịch vụ ứng dụng / func / web thực tế, sẽ là chuỗi kết nối để truy cập Cấu hình ứng dụng Azure.

Trong Khởi động nơi cài đặt cấu hình được áp dụng, tôi có thể đọc từ ..sinstall.json và nếu không có (không nên chạy trên Azure), tôi tìm chuỗi kết nối với Cấu hình ứng dụng Azure.

Nếu ..sinstall.json được tìm thấy, điều đó có nghĩa là tôi đang chạy cục bộ.

..sinstall.json được mã hóa nếu nó không có trong tệp gitignore.

Nó trông giống như thế này:

var appConfigEndpoint = Environment.GetEnvironmentVariable("AppConfigEndpoint");
            var appConfigLabel = Environment.GetEnvironmentVariable("AppConfigLabel");

            if (!string.IsNullOrEmpty(appConfigEndpoint))
            {
                config.AddAzureAppConfiguration(options =>
                {
                    options.Connect(appConfigEndpoint);
                    options.Use(keyFilter: "*", labelFilter: appConfigLabel);
                });
            }
            else
            {
                config.AddJsonFile("appsettings.test.json", optional: false);
            }

Tôi đã quá muộn nhưng nếu bạn vẫn có cùng quan điểm, bạn phải thay đổi nó. Cấu hình (tham chiếu của bạn) không phải để lưu trữ bí mật, nó là để lưu cấu hình. Chuỗi kết nối DB là một bí mật không phải là một cấu hình. KeyVault là để lưu trữ bí mật, Cấu hình là lưu trữ cấu hình trong một cửa hàng tập trung. Tôi hy vọng điều đó có ý nghĩa
RAM

0

Việc truy xuất kho tiền chính có thể là một vấn đề hiệu suất. Đọc từ kho tiền mất vài giây. Azure SLA chỉ cho biết sẽ mất ít hơn 5 giây 99,9% thời gian. Nó không đảm bảo thời gian trung bình, nhưng từ kinh nghiệm và tin đồn của tôi, trung bình là khoảng 2 giây.

Trừ khi ứng dụng web của bạn "luôn bật", nó sẽ không được tải nếu không hoạt động trong 5-20 phút. Điều đó có nghĩa là, trừ khi bạn có nhiều lưu lượng truy cập, thời gian phản hồi trang web của bạn sẽ thường xuyên bị hút.


1
Bạn có thể nhận được hầu hết các bí mật ứng dụng chỉ một lần trong khi bắt đầu ứng dụng.
Miroslav Holec

0

Chúng tôi đang lên kế hoạch sử dụng dưới đây

Bí mật - Azure Key-Vault

  • Xoay vòng khóa chính cho các cột luôn được mã hóa
  • Kho lưu trữ chứng chỉ (có thể dễ dàng viết một nhà cung cấp bằng .NET)
  • Các mục nhạy cảm như chuỗi kết nối (ẩn thông tin tài nguyên khác), mật khẩu, v.v.

Cấu hình - Cấu hình ứng dụng Azure (vẫn ở chế độ xem trước)

  • Đồng hồ là một phương pháp tuyệt vời để khám phá dịch vụ, đặc biệt nếu bạn cần cập nhật cờ hoặc giá trị cho các hoạt động sử dụng.
  • Không cần phải khởi tạo lại một container hoặc cá thể.
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.