Sử dụng Azure Key Vault trên .Net Core 3.1

Tram Ho

Một ngày đẹp trời bạn có một dự án .NET Core 3.1 cần chạy Key Vault. Nhưng bạn đọc mãi tài liệu không hiểu thì đọc bài này nhé.

Azure Key Vault là gì

Azure Key Vault là một dịch vụ lưu trữ các khóa, config cho website. Để tăng độ bảo mật, thường thì chỉ những khóa nào có mã khóa hay mật khẩu mới được sử dụng, và chi phí của nó thì không hề rẻ. Để sử dụng thì cũng rất đơn giản nếu bạn hiểu cách nó hoạt động.

Azure Key Vault không có config để bạn tích hợp trực tiếp vào project, muốn sử dụng bạn phải tạo một App Registration, và trong Azure Key Vault bạn tiến hành cấp quyền cho App Registration sử dụng. Bạn dùng config của App Registration để cấu hình vào project.

Nội dung bài viết mình chỉ đưa ra cách nó hoạt động, còn về chi tiết và hình ảnh, mọi người click vào link gốc ở cuối bài dùm.

Đăng ký Azure Key Vault

Trong Azure Portable –> Tìm Azure key vault tiến hành điền các thông tin cần thiết để khởi tạo.

Đăng ký app cho keyvault

Tìm “App Registration” trong danh sách các app dành cho Azure. Tiến hành tạo tên App, sau khi thành công bạn sẽ có được Application (client) ID (Đây chính là Client ID dùng cho keyvault sau này)
Vào Certificates & secrets để tạo Client secret dùng cho keyvault.

Tạo các secret key cho Azure Key Vault

Trong Azure Key Vault vào tab Secrets , tiến hành tạo các secrect key bạn mong muốn, lưu ý nếu như phân cấp kiểu

Bạn tạo key theo: RedisCache–ConnectionString , với mỗi cấp lồng vào, bạn thêm — trước mỗi config name. Khi cần bạn có thể vào đây update config mới.

Gắn Azure Key Vault cho App

Thông thường Azure Keyvault không có config để bạn cấu hình vào project của bạn, mà bạn phải gắn quyền cho một App khác sử dụng Keyvault và dùng Client Id, và Secrect key từ app đó để mà cấu hình vào dự án.
Trên Azure Keyvault –> Access policies –> Add Access Policy

  1. Tiến hành thêm các quyền cho App
    Thường được set là: get, set, list, delete
    Trong principal tiến hành chọn App bạn đã tạo ở App Registration ở trên.

Cấu hình Azure Key Vault trên .NET Core 3.1

Tiến hành cài cac package cho project .NET Core 3.1

Tiến hành cài các package trên để cho phép Project load Azure keyvault

  • Microsoft.Azure.KeyVault
  • Microsoft.Extensions.Configuration.AzureKeyVault

Tạo config trên appsettings.json

Nhìn config của keyvault có các thông tin:

  • Vault: Tên của Keyvault name trong Azure Keyvault
  • ClientID: Client Id của ứng dụng liên kết với keyvault (App Registration)
  • ClientID: Client secrect của ứng dụng liên kết với keyvault (App Registration)

Viết phần load data từ key vault cho project

Chú ý đoạn:

Đoạn này sẽ load config của Azure Keyvault cho bạn sử dụng. Khi cần gọi một key config sửa dụng thì hệ thống sẽ kiểm tra keyvault có chưa sẽ trả về, nếu không hệ thống sẽ load từ appsettings.json cho bạn.

Mỗi khi gọi config dùng IConfiguration để lấy key tương ứng.

Kết luận

  • Sử dụng Azure Key Vault không khó, khó ở chỗ bạn chưa hình dung ra các cấu hình để lấy được Client ID , Client Secret cho hệ thống như thế nào.
  • Không phải key nào bạn cũng sử dụng keyvault, việc đó sẽ làm quá nhiều key không cần thiết, khó nhớ. Chỉ sử dụng cho những key liên quan đến mã hóa, mật khẩu, token quan trọng.
  • Azure Keyvault tốn phí, với một người dùng cá nhân mình khuyên không nên xài vì chi phí. Nếu bạn dùng thử thì đừng quên xóa project nếu test xong, nếu không sẽ bị charge phí.

Link tham khảo: Mình có đọc qua nhiều bài hướng dẫn hay video, mình thấy link bên dưới là đầy đủ thông tin và dễ hiểu cho bạn config nhất. Mình có sử dụng nội dung ở link dưới

https://dotnetdetail.net/key-vault-secrets-in-asp-net-core-3-1/

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo