Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Microsoft gần đây đã phát hành một SecretManagement rất hữu ích Mô-đun PowerShell. Bạn có thể sử dụng nó để lưu trữ và sử dụng mật khẩu (bí mật) đã lưu trong tập lệnh PowerShell một cách an toàn. Mô-đun bao gồm hai thành phần:một kho tiền SecretStore (kho mật khẩu mặc định) và Quản lý bí mật (công cụ để truy cập các hầm mật khẩu khác nhau). Cả kho tiền SecretStore tích hợp sẵn và kho tiền bí mật của bên thứ ba (như KeePass, LastPass, HashiCorp Vault, Azure Key Vault, Bitwarden, Windows Credential Manager, v.v.) đều được hỗ trợ. Sử dụng SecretManagement, bạn có thể lưu bất kỳ mật khẩu nào (thông tin đăng nhập) vào kho bí mật và truy xuất chúng bất kỳ lúc nào. Bạn cũng có thể lưu trữ khóa cấp phép, khóa truy cập và thông tin nhạy cảm khác (Hashtable , Byte , String , SecureStringPSCredential các loại đối tượng được hỗ trợ).

Trong bài viết này, chúng tôi sẽ hướng dẫn cách sử dụng mô-đun SecretManagement trong tập lệnh PowerShell của bạn để lưu trữ và truy xuất thông tin đăng nhập cũng như một ví dụ về tích hợp KeePass.

Nội dung:

  • Cài đặt Mô-đun Quản lý Bí mật
  • Tạo Kho lưu trữ mật khẩu (SecretStore Vault) qua PowerShell
  • Quản lý thông tin đăng nhập đã lưu bằng mô-đun quản lý bí mật
  • Sử dụng Mật khẩu đã Lưu từ Secret Vault trong Tập lệnh PowerShell
  • Quản lý mật khẩu và bí mật của KeePass với PowerShell

Cài đặt Mô-đun Quản lý Bí mật

Mô-đun SecretManagement yêu cầu Windows PowerShell phiên bản 5.1 hoặc PowerShell Core 6.x, 7.x.

Để cài đặt SecretManagement bằng trình quản lý gói NuGet, hãy chạy lệnh bên dưới:

Install-Module -Name Microsoft.PowerShell.SecretManagement

Để cài đặt SecretStore mặc định vault do Microsoft cung cấp, hãy chạy lệnh sau:

Install-Module -Name Microsoft.PowerShell.SecretStore

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Để hiển thị danh sách các lệnh ghép ngắn có sẵn trong mô-đun, hãy sử dụng các lệnh sau:

Get-Command -Module Microsoft.PowerShell.SecretManagement
Get-Command -Module Microsoft.PowerShell.SecretStore

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Tạo Kho mật khẩu (SecretStore Vault) qua PowerShell

Trước hết, hãy tạo một hầm bí mật địa phương. Tôi sẽ đặt tên nó là MyDomainPassdb và biến nó thành kho mật khẩu mặc định.

Register-SecretVault -Name MyDomainPassdb -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault

Nếu cài đặt của chính sách thực thi tập lệnh PowerShell của bạn ngăn không cho mô-đun chạy, bạn có thể thay đổi cài đặt cho phiên hiện tại của mình như sau:

Set-ExecutionPolicy -Scope Process Unrestricted

Bạn có thể tạo và sử dụng cả kho mật khẩu cục bộ và từ xa.

Lệnh bên dưới hiển thị danh sách các kho mật khẩu đã đăng ký cho người dùng hiện tại:

Get-SecretVault

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Tạo mật khẩu chính để truy cập SecretStore Vault của bạn:

Get-SecretStoreConfiguration

Nếu bạn quên mật khẩu chính của SecretStore Vault, bạn sẽ không thể truy cập vào dữ liệu được lưu trữ trong đó.

Theo mặc định, các cài đặt sau xác định ai và cách nào có thể truy cập kho mật khẩu:

  • Phạm vi - CurrentUser (chỉ người dùng hiện tại mới có thể truy cập SecretStore)
  • Xác thực - Password (truy cập kho tiền bằng mật khẩu chính)
  • PasswordTimeout - 900 - thời lượng của phiên (tính bằng giây) trong đó bạn không cần nhập lại mật khẩu chính của mình, Bạn có thể kéo dài thời lượng phiên:Set-SecretStoreConfiguration -PasswordTimeout 1200
  • Tương tác - Prompt (có nhập mật khẩu chính khi thực hiện thay đổi hay không)

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Để vô hiệu hóa yêu cầu mật khẩu chính để truy cập kho bí mật (không được khuyến nghị), hãy đặt Authentication = None :

Set-SecretStoreConfiguration -Authentication None

Để thay đổi mật khẩu chính, hãy sử dụng Set-SecretStorePassword cmdlet.

Trong Windows, một kho lưu trữ mật khẩu cục bộ nằm trong thư mục hồ sơ người dùng %LOCALAPPDATA%\Microsoft\PowerShell\secretmanagement .

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Rất tiếc, bạn không thể sử dụng mô-đun Quản lý Bí mật cho Tài khoản Dịch vụ Được Quản lý (MSA / gMSA) vì không có cấu hình nào được tạo cho chúng.

Quản lý thông tin đăng nhập đã lưu bằng mô-đun quản lý bí mật

Set-Secret lệnh ghép ngắn được sử dụng để thêm bí mật kiểu SecureString vào kho mật khẩu. Chỉ định tên kho tiền và tên mục nhập:

Set-Secret -Vault MyDomainPassdb -Name user1

Nhập mật khẩu (bí mật) bạn muốn lưu trong cửa hàng.

Hoặc, bạn có thể lưu một giá trị được bảo vệ như sau (ví dụ:g., Khóa GitHub):
Set-Secret -Vault MyDomainPassdb -Name MY_GITHUB_TOKEN -Secret 'GitHub_AUTH_API_Token'

Hãy chú ý khi nhập thông tin cá nhân dưới dạng văn bản thuần túy trong bảng điều khiển PowerShell, vì nó được lưu trong lịch sử lệnh PowerShell.

Bạn có thể hiển thị danh sách các mục nhập trong hầm bí mật:

Get-SecretInfo

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Trong PowerShell 7.x, bạn có thể hiển thị giá trị được bảo vệ từ kho mật khẩu dưới dạng văn bản thuần túy bằng cách sử dụng –AsPlainText tùy chọn (cập nhật phiên bản PowerShell của bạn nếu cần):

Get-Secret -Vault MyDomainPassdb -Name user1| ConvertFrom-SecureString –AsPlainText

Trong hầu hết các trường hợp, bạn phải lưu cả tên người dùng và mật khẩu thay vì chỉ lưu mật khẩu khi làm việc trong mạng Windows. Trong trường hợp này, hãy lưu thông tin đăng nhập dưới dạng Thông tin đăng nhập PSC vật. Bạn cũng có thể thêm siêu dữ liệu với mô tả của mục đã lưu.

Set-Secret -Vault MyDomainPassdb -Name adm_maxbak -Secret (Get-Credential) -Metadata @{description = "AD enterprise admin woshub.com"}

Nếu bạn không muốn nhập tên tài khoản vào cửa sổ Lấy thông tin đăng nhập, bạn có thể chỉ định nó như sau:

Set-Secret -Vault MyDomainPassdb -name adm_maxbak -Secret (get-credential woshub\adm_maxbak)

Đây là cách bạn có thể hiển thị danh sách các mật khẩu đã lưu và mô tả của chúng:

Get-SecretInfo | Ft Name, Metadata

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Sử dụng Mật khẩu đã Lưu từ Secret Vault trong Tập lệnh PowerShell

Giờ đây, bạn có thể sử dụng mật khẩu đã lưu trong các tập lệnh và lệnh PowerShell của mình. Ví dụ:một trong những khách hàng của tôi đang sử dụng nhiều tài khoản cho mỗi quản trị viên và các dịch vụ / tác vụ khác nhau vì lý do bảo mật và bảo vệ tài khoản quản trị. Việc sử dụng các mật khẩu giống nhau bị cấm, mật khẩu thường xuyên được kiểm tra. Quản trị viên cảm thấy tẻ nhạt khi liên tục nhập các mật khẩu khác nhau.

Sử dụng mô-đun SecretManagement, bạn có thể lưu trữ mật khẩu của mình một cách an toàn trong một kho tiền cục bộ và lấy chúng nếu cần.

Ví dụ:để kết nối với máy tính từ xa và chạy lệnh thông qua PowerShell Remoting, bạn có thể sử dụng mã sau:

Enter-PSSession -ComputerName mun-dc01 -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_maxbak)

Theo cách tương tự, bạn có thể kết nối Exchange hoặc Microsoft 365 (cũ là Office 365) dễ dàng hơn:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://mun-exch1.woshub.com/PowerShell/ -Authentication Kerberos -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_ex_maxbak)

Hoặc kết nối người thuê Azure AD của bạn:

Connect-AzureAD -Credential (Get-Secret -Vault MyDomainPassdb -Name azadm_ maxbak)

Hoặc chỉ lấy thông tin đăng nhập và lưu trữ chúng trong một biến PowerShell:

$Cred = Get-Secret -Vault MyDomainPassdb user1

Quản lý mật khẩu và bí mật của KeePass với PowerShell

Bạn có thể sử dụng mô-đun SecretManagement để truy cập các kho mật khẩu phổ biến khác. Hãy xem cách truy cập mật khẩu đã lưu trong KeePass tệp (* .kdbx).

Trước hết, hãy cài đặt mô-đun SecretManagement để tương tác với KeePass:

Install-Module -Name SecretManagement.KeePass

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Sau đó, đăng ký tệp vault KeePass nằm trong hồ sơ người dùng của bạn:

Register-SecretVault -Name "KeePassDB" -ModuleName "SecretManagement.Keepass" -VaultParameters @{
Path = "C:\Users\maxbak\Documents\personal_creds.kdbx"
UseMasterPassword = $true
}

Để kiểm tra quyền truy cập vào tệp KeePass, hãy chạy lệnh:

Test-SecretVault -Name KeePassDB

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Nhập mật khẩu chính để truy cập vào KeePass vault. Nếu bạn đã nhập đúng mật khẩu, lệnh sẽ trả về True .

Sau đó, hiển thị danh sách các mật khẩu đã lưu trong cơ sở dữ liệu KeePass:

Get-SecretInfo -Vault KeePassDB

Mô-đun quản lý bí mật PowerShell:Quản lý an toàn thông tin đăng nhập và bí mật

Để lưu một bí mật mới trong KeePass:

Set-Secret -Vault KeePassDB -Name "ILO_adm" -Secret (Get-Credential woshub\ILO_adm)

Theo cách tương tự, bạn có thể kết nối bất kỳ giải pháp lưu trữ mật khẩu phổ biến nào khác và sử dụng nó trong PowerShell.