Chính sách truy cập keyvault CLI

Azure Key Vault là một cách tuyệt vời để bảo vệ bí mật của bạn nhưng trong khi bạn đang làm việc trên các mẫu ARM để triển khai môi trường của mình, thỉnh thoảng bạn sẽ cần quyền truy cập vào Key Vault để xác minh nội dung của nó hoặc thiết lập các bí mật mới

Thêm một chính sách trong Azure Portal

Điều này đủ dễ dàng khi bạn có quyền truy cập Azure Active Directory; . Tuy nhiên, đôi khi bạn phải làm việc trong những điều kiện khắt khe hơn khi không được phép truy cập AAD. Cổng Azure thậm chí sẽ không cho phép bạn chọn tài khoản của riêng mình

Không có quyền truy cập vào AAD có nghĩa là không có chính sách mới trong Azure Portal

Không có quyền truy cập vào AAD có nghĩa là không có chính sách mới trong Azure Portal

Hộp thoại lựa chọn chính sẽ hiển thị cho bạn một lỗi như

Graph call failed with httpCode=Forbidden, errorCode=Authorization_RequestDenied, errorMessage=Insufficient privileges to complete the operation., reason=Forbidden

Thêm chính sách thông qua Azure CLI

Bạn vẫn có thể cấp cho mình quyền truy cập bằng Azure CLI

az keyvault set-policy –n my-vault –-secret-permissions list get set delete –object-id [my-aad-guid]

là các chi tiết đầy đủ về lệnh đó

Khi bạn không có quyền truy cập vào Azure AD, bạn cũng sẽ gặp một chút khó khăn khi tìm id đối tượng cho tài khoản [khách] của mình. May mắn thay, bạn cũng có thể tìm thấy id đó bằng Azure CLI

az ad signed-in-user show --query objectId

Đảm bảo rằng bạn đã đăng nhập bằng đăng nhập az và chọn đăng ký Azure phù hợp bằng cách sử dụng bộ tài khoản az

Azure Key Vault giúp các nhóm lưu trữ và quản lý an toàn thông tin nhạy cảm như khóa, mật khẩu, chứng chỉ, v.v. , trong một bộ lưu trữ tập trung được bảo vệ bằng các thuật toán tiêu chuẩn ngành, độ dài khóa và thậm chí cả các mô-đun bảo mật phần cứng. Điều này ngăn chặn việc tiết lộ thông tin thông qua mã nguồn, một lỗi phổ biến mà nhiều nhà phát triển mắc phải. Nhiều nhà phát triển để lại các chi tiết bí mật như chuỗi kết nối cơ sở dữ liệu, mật khẩu, khóa riêng, v.v. , trong mã nguồn của họ mà khi bị người dùng ác ý lấy được có thể dẫn đến hậu quả không mong muốn. Quyền truy cập vào kho lưu trữ khóa yêu cầu xác thực và ủy quyền thích hợp và với RBAC, các nhóm thậm chí có thể kiểm soát chi tiết ai có quyền gì đối với dữ liệu nhạy cảm

Những gì được bảo hiểm trong phòng thí nghiệm này

Trong phòng thí nghiệm này, bạn sẽ thấy cách bạn có thể sử dụng Azure Key Vault trong quy trình bán hàng

  1. Chúng tôi sẽ tạo một kho khóa, từ cổng Azure, để lưu trữ mật khẩu máy chủ MySQL
  2. Chúng tôi sẽ định cấu hình quyền để cho phép hiệu trưởng dịch vụ đọc giá trị
  3. Chúng tôi sẽ truy xuất mật khẩu trong một đường dẫn Azure và chuyển sang các tác vụ tiếp theo

Trước khi bắt đầu

  1. Tham khảo trang Bắt đầu trước khi bạn bắt đầu làm theo các bài tập

  2. Sử dụng Azure DevOps Demo Generator để cung cấp dự án trên tổ chức Azure DevOps của bạn. URL này sẽ tự động chọn mẫu Azure Key Vault trong trình tạo bản demo. Nếu bạn muốn thử các dự án khác, thay vào đó hãy sử dụng URL này -azuredevops generator

    Làm theo hướng dẫn đơn giản để biết cách sử dụng Azure DevOps Demo Generator

Nhiệm vụ 1. Tạo hiệu trưởng dịch vụ

Bạn sẽ cần một dịch vụ chính để triển khai một ứng dụng cho tài nguyên Azure từ Azure Pipelines. Vì chúng tôi sẽ truy xuất các bí mật trong một đường dẫn, nên chúng tôi sẽ cần cấp quyền cho dịch vụ khi chúng tôi tạo kho lưu trữ khóa

Nguyên tắc dịch vụ được Azure Pipeline tự động tạo khi bạn kết nối với đăng ký Azure từ bên trong định nghĩa đường ống hoặc khi bạn tạo kết nối dịch vụ mới từ trang cài đặt dự án. Bạn cũng có thể tự tạo dịch vụ chính từ cổng thông tin hoặc sử dụng Azure CLI và sử dụng lại nó trong các dự án. Bạn nên sử dụng hiệu trưởng dịch vụ hiện có khi muốn có một bộ quyền được xác định trước

Chúng tôi sẽ tạo thủ công bằng cách sử dụng Azure CLI. Nếu bạn đã có hiệu trưởng dịch vụ, bạn có thể bỏ qua nhiệm vụ này

  1. Đăng nhập vào Cổng thông tin Azure

  2. Mở vỏ đám mây Azure. Chọn Bash khi được nhắc chọn shell

  3. Nhập lệnh sau bằng cách thay thế ServicePrincipalName bằng giá trị mong muốn của bạn

    az ad sp create-for-rbac -n ServicePrincipalName

    Nó sẽ cung cấp cho bạn một đầu ra JSON như trong hình. Sao chép đầu ra vào notepad hoặc tệp văn bản. Bạn sẽ cần chúng sau này

  4. Nhập lệnh sau để nhận Azure SubscriptionID và sao chép ID và tên đăng ký vào notepad

    az account show

Nhiệm vụ 2. Tạo kho khóa

Tiếp theo, chúng ta sẽ tạo một key vault trong Azure. Đối với kịch bản phòng thí nghiệm này, chúng tôi có một ứng dụng nút kết nối với cơ sở dữ liệu MySQL nơi chúng tôi sẽ lưu trữ mật khẩu cho cơ sở dữ liệu MySQL dưới dạng bí mật trong kho khóa

  1. Nếu chưa đăng nhập, hãy đăng nhập vào Azure Portal

  2. Nhập "Key vault" vào trường tìm kiếm và nhấn enter. Chọn Key Vaults trong dịch vụ

  3. Chọn Tạo hoặc nút Tạo kho lưu trữ khóa để tạo kho lưu trữ khóa mới

  4. Cung cấp tên, đăng ký, nhóm tài nguyên và vị trí cho kho tiền

    Vì dữ liệu trong Kho lưu trữ chính rất nhạy cảm và quan trọng đối với doanh nghiệp, nên bạn cần đảm bảo quyền truy cập vào kho lưu trữ khóa của mình bằng cách chỉ cho phép các ứng dụng và người dùng được ủy quyền. Để truy cập dữ liệu từ vault, bạn sẽ cần cung cấp quyền đọc [Nhận] cho dịch vụ chính mà bạn sẽ sử dụng để xác thực trong quy trình

  5. Chọn Chính sách truy cập rồi chọn + Thêm chính sách truy cập để thiết lập chính sách mới

  6. Bạn sẽ cần chỉ định quyền mà bạn định cấp cho ứng dụng. Đây có thể là quyền quản lý khóa và dữ liệu [bí mật]. Trong mọi trường hợp, các ứng dụng có thể truy cập kho khóa theo hai cách

    • Truy cập người dùng + ứng dụng. Quyền truy cập được cấp cho những người dùng cụ thể, những người sau đó có thể được phép sử dụng bất kỳ ứng dụng nào hoặc có thể bị hạn chế sử dụng một ứng dụng cụ thể

    • Quyền truy cập chỉ dành cho ứng dụng. Quyền truy cập được cấp cho ứng dụng có thể chạy dưới dạng dịch vụ trình nền hoặc công việc nền

  7. Chọn Chọn hiệu trưởng và tìm kiếm hiệu trưởng bảo mật mà bạn đã tạo trước đó và chọn nó. Bạn có thể tìm kiếm theo tên hoặc ID của hiệu trưởng

  8. Tiếp theo, chúng tôi sẽ chọn quyền được cấp. Hiện tại, chúng tôi sẽ chỉ cung cấp quyền chỉ đọc [Nhận, Liệt kê] cho các bí mật mà thôi

  9. Nhấp vào Xem lại + tạo để đóng các cánh đang mở và chọn Tạo để tạo kho tiền

  10. Chỉ mất vài phút để dịch vụ được tạo. Khi nó được cung cấp, hãy chọn kho khóa và thêm bí mật mới. Hãy đặt tên cho nó là sqldbpassword. Cung cấp bất kỳ giá trị nào sẽ được chấp nhận làm mật khẩu cho cơ sở dữ liệu MySQL

nhiệm vụ 3. Kiểm tra đường ống Azure

Bây giờ, hãy chuyển đến dự án Azure DevOps mà bạn đã cung cấp bằng cách sử dụng Trình tạo bản demo Azure DevOps và định cấu hình Azure Pipelines để đọc bí mật từ kho lưu trữ khóa

  1. Điều hướng đến dự án Azure DevOps

  2. Chọn đường ống. Đường ống dẫn từ thanh điều hướng bên trái

  3. Để kích hoạt bản dựng, hãy chọn định nghĩa SmartHotel-CouponManagement-CI rồi Chạy đường ống để xếp hàng theo cách thủ công

    Ghi chú. Chúng tôi cũng có một quy trình xây dựng YAML nếu đó là điều bạn quan tâm. Để tiếp tục thông qua quy trình YAML, hãy chọn SmartHotel-CouponManagement-CI-YAML và nhấp vào Chỉnh sửa. Nếu bạn sử dụng quy trình YAML, hãy đảm bảo cập nhật liên kết tạo tác của định nghĩa phát hành SmartHotel-CouponManagement-CD

  4. Chuyển đến Bản phát hành trong Đường ống, sau đó chọn và Chỉnh sửa định nghĩa SmartHotel-CouponManagement-CD

  5. Trong Nhiệm vụ, hãy lưu ý rằng định nghĩa phát hành cho giai đoạn Nhà phát triển có nhiệm vụ Azure Key Vault. Tác vụ này tải xuống Bí mật từ Azure Key Vault. Bạn sẽ cần trỏ đến đăng ký và tài nguyên Azure Key Vault được tạo trước đó trong phòng thí nghiệm

  6. Bạn cần ủy quyền cho quy trình triển khai lên Azure. Các quy trình Azure có thể tự động tạo kết nối dịch vụ với dịch vụ chính mới, nhưng chúng tôi muốn sử dụng dịch vụ mà chúng tôi đã tạo trước đó. Nhấp vào Quản lý, thao tác này sẽ chuyển hướng đến trang Kết nối dịch vụ

    Nhấp vào Kết nối dịch vụ mới -> Trình quản lý tài nguyên Azure -> Hiệu trưởng dịch vụ [thủ công]. Điền thông tin từ dịch vụ chính đã tạo trước đó

    • Id đăng ký và tên. có thể được tìm thấy trong trang tổng quan tài nguyên keyvault
    • Id chính của dịch vụ = AppId trong ghi chú đã sao chép
    • Khóa chính của dịch vụ = Mật khẩu trong ghi chú đã sao chép
    • TenantId, sao chép từ các ghi chú

    Nhấp vào Xác minh để kiểm tra xem nó có hoạt động không, đặt tên cho kết nối và nhấp vào Xác minh và Lưu

  7. Chọn kết nối Dịch vụ mà bạn đã tạo ở bước trước cho đăng ký Azure trong tác vụ Azure Key Vault

  8. Bạn có thể nhập tên hoặc chọn kho lưu trữ khóa mà bạn đã tạo từ trình đơn thả xuống

  9. Trong trường bộ lọc Bí mật, bạn có thể chỉ định dấu hoa thị [*] để đọc tất cả các bí mật hoặc nếu chỉ muốn những bí mật cụ thể, bạn có thể cung cấp tên của các bí mật dưới dạng giá trị được phân tách bằng dấu phẩy

    Khi chạy, Azure Pipelines sẽ tìm nạp các giá trị bí mật mới nhất và đặt chúng làm biến tác vụ có thể được sử dụng trong các tác vụ sau, điều đó có nghĩa là mật khẩu chúng tôi đã lưu trữ trước đó có thể được đọc bằng cách sử dụng $[sqldbpassword]

  10. Chúng tôi chuyển giá trị này trong tác vụ tiếp theo, Triển khai Azure nơi chúng tôi triển khai mẫu ARM

    Lưu ý trường Ghi đè tham số mẫu có tên người dùng cơ sở dữ liệu dưới dạng chuỗi nhưng giá trị mật khẩu được chuyển dưới dạng biến

    -webAppName $[webappName] -mySQLAdminLoginName "azureuser" -mySQLAdminLoginPassword $[sqldbpassword]

    Điều này sẽ cung cấp cơ sở dữ liệu MySQL được xác định trong mẫu ARM bằng mật khẩu mà bạn đã chỉ định trong kho khóa

    Bạn có thể muốn hoàn thành định nghĩa quy trình bằng cách chỉ định đăng ký và vị trí cho nhiệm vụ. Lặp lại tương tự cho tác vụ cuối cùng trong quy trình Triển khai dịch vụ ứng dụng Azure. Cuối cùng, lưu và tạo một bản phát hành mới để bắt đầu triển khai

Ghi chú. Bạn có thể thắc mắc rằng chúng tôi có thể đã chuyển giá trị dưới dạng một biến nhiệm vụ bí mật trong Azure Pipelines. Mặc dù điều đó là có thể, nhưng các biến tác vụ dành riêng cho một đường dẫn và không thể được sử dụng bên ngoài định nghĩa mà nó được tạo. Ngoài ra, trong hầu hết các trường hợp, các bí mật như thế này được xác định bởi Người vận hành, những người có thể không muốn đặt bí mật này cho mọi đường ống

Thử thách tập thể dục

Hãy thử tạo một bí mật mới để lưu trữ tên người dùng cho Cơ sở dữ liệu MySQL và thay đổi đường dẫn để tìm nạp và sử dụng bí mật

Làm cách nào để thêm chính sách truy cập trong Azure Key Vault bằng PowerShell?

Các lệnh ghép ngắn PowerShell . Get-AzADGroup Lọc các nhóm thư mục hoạt động. Set-AzKeyVaultAccessPolicy Cấp hoặc sửa đổi các quyền hiện có cho người dùng, ứng dụng hoặc nhóm bảo mật để thực hiện các thao tác với kho khóa.

Lệnh Azure CLI nào được sử dụng để cấp quyền truy cập vào vault?

Để cho phép ứng dụng truy cập khóa hoặc bí mật trong vault, hãy sử dụng lệnh az keyvault set-policy .

Làm cách nào để truy cập Azure Key Vault trong C#?

Sử dụng các bước sau để đọc bí mật được lưu trữ trong phiên bản Azure Key Vault. .
Tạo một ứng dụng web trong Azure Portal
Bật Nhận dạng dịch vụ được quản lý cho Ứng dụng web của bạn
Tạo và định cấu hình Azure Key Vault. .
Tạo một ASP mới. NET 5 Core ứng dụng. .
Triển khai Ứng dụng lên Azure
Thực hiện ứng dụng

Những quyền bí mật nào nên được sử dụng trong kho khóa Azure?

Để cấp quyền truy cập ứng dụng để sử dụng khóa trong kho khóa, bạn cấp quyền truy cập mặt phẳng dữ liệu bằng cách sử dụng Azure RBAC hoặc chính sách truy cập Kho khóa. Để cấp cho người dùng quyền truy cập đọc vào các thuộc tính và thẻ của Key Vault, nhưng không có quyền truy cập vào dữ liệu [khóa, bí mật hoặc chứng chỉ], bạn cấp quyền truy cập mặt phẳng quản lý bằng Azure RBAC

Chủ Đề