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

0
16

Microsoft gần đây đã phát hành một mô-đun SecretManagement PowerShell rất hữu ích. Bạn có thể sử dụng nó để lưu trữ và sử dụng mật khẩu đã lưu (bí mật) đã lưu trong các tập lệnh PowerShell của mình. Mô-đun bao gồm hai thành phần: kho SecretStore (một cửa hàng mật khẩu mặc định) và Một SecretManagement (công cụ để truy cập các kho mật khẩu khác nhau). Cả kho vault SecretStore tích hợp và kho 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 (thông tin đăng nhập) nào vào kho bí mật và truy xuất chúng bất cứ lúc nào. Bạn cũng có thể lưu trữ khóa giấy phép, khóa truy cập và các thông tin nhạy cảm khác Hashtable Byte (, String , , và các loại đối tượng được hỗ SecureString PSCredential trợ).

Trong bài viết này, chúng tôi sẽ chỉ ra 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 Password Store (SecretStore Vault) thông qua PowerShell
  • Quản lý chứng danh đã 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 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 kho vault SecretStore mặc định do Microsoft cung cấp, hãy chạy lệnh sau:

Install-Module -Name Microsoft.PowerShell.SecretStore

install Microsoft PowerShell.SecretManagement module

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

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

get commamds from PowerShell.SecretManagement

Tạo Password Store (SecretStore Vault) thông qua PowerShell

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

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

Nếu các thiết đặt của chính sách thực thi script PowerShell của bạn ngăn mô-đun chạy, bạn có thể thay đổi thiết đặ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 dưới đây hiển thị danh sách kho mật khẩu đã đăng ký cho người dùng hiện tại:

Get-SecretVault

create local SecretStore vault

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

Get-SecretStoreConfiguration

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

Theo mặc định, các thiết đặt sau đây xác định ai và làm thế nào có thể truy cập các cửa hàng mật khẩu:

  • Phạm viCurrentUser (chỉ người dùng hiện tại mới có thể truy cập SecretStore)
  • Xác thựcPassword (kho truy cập bằng mật khẩu chính)
  • PasswordTimeout900 – 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, Bạn có thể kéo dài thời lượng phiên: Set-SecretStoreConfiguration -PasswordTimeout 1200
  • Tương tácPrompt (có nên nhập mật khẩu chính khi thực hiện thay đổi)

Get-SecretStoreConfiguration powershell

Để 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 cáo), hãy Authentication = None đặt:

Set-SecretStoreConfiguration -Authentication None

Để thay đổi mật khẩu chính, hãy dùng Set-SecretStorePassword lệnh ghép ngắn.

Trong Windows, một cửa hàng mật khẩu cục bộ được đặt trong thư mục hồ sơ người dùng %LOCALAPPDATA%MicrosoftPowerShellsecretmanagement .

secretmanagement secretvault in user profile directory

Thật không may, 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ó hồ sơ nào được tạo cho họ.

Quản lý chứng danh đã lưu bằng mô-đun quản lý bí mật

Lệnh Set-Secret ghép ngắn được sử dụng để thêm một bí mật của loại SecureString vào kho mật khẩu. Chỉ rõ tên kho 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ụ: 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 trong kho bí mật:

Get-SecretInfo

Get-SecretInfo from secret store

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 tùy chọn –AsPlainText (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, lưu thông tin đăng nhập dưới dạng đối tượng PSCredential. Bạn cũng có thể thêm siêu dữ liệu với mô tả của mục nhập đã 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 trong cửa sổ Nhận Chứng danh, bạn có thể chỉ định tên đó như sau:

Set-Secret -Vault MyDomainPassdb -name adm_maxbak -Secret (get-credential woshubadm_maxbak)

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

Get-SecretInfo | Ft Name, Metadata

get credentials from secret vault using powershell

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

Bây giờ 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 hàng chục tài khoản cho mỗi quản trị viên và các dịch vụ / nhiệm vụ khác nhau vì lý do bảo vệ tài khoản quản trị và bảo mật. Sử dụng cùng một mật khẩu bị cấm, mật khẩu thường xuyên được kiểm tra. Quản trị viên 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 địa phương và nhận chúng nếu cần thiết.

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)

Tương tự như vậy, bạn có thể kết nối Exchange hoặc Microsoft 365 (ex-Office 365) dễ dàng hơn:

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

Or Azure AD:

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

Hoặc chỉ cần 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 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 tệp KeePass (*.kdbx).

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

Install-Module -Name SecretManagement.KeePass

installing SecretManagement.KeePass module

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

Register-SecretVault -Name "KeePassDB" -ModuleName "SecretManagement.Keepass" -VaultParameters @{
Path = "C:UsersmaxbakDocumentspersonal_creds.kdbx"
UseMasterPassword = $true
}

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

Test-SecretVault -Name KeePassDB

accessing keepass vault using master password via powershell

Nhập mật khẩu chính để truy cập kho KeePass. Nếu bạn đã nhập mật khẩu chính xác, lệnh trả về True.

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

Get-SecretInfo -Vault KeePassDB

Get-SecretInfo - getting secret from keepass database

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

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

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

Dịch từ: http://woshub.com/powershell-secretmanagement-module/

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây