Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

PowerShell SecretManagement: จัดการ Credentials และ Secrets อย่างปลอดภัย

โมดูล SecretManagement ของ Microsoft ช่วยจัดเก็บและใช้ Password/Secrets ใน PowerShell Scripts ได้ปลอดภัย ประกอบด้วย SecretStore Vault (Built-in) และรองรับ Vault ภายนอก (KeePass, LastPass, HashiCorp, Azure Key Vault, Bitwarden, Windows Credential Manager)

1. ติดตั้งโมดูล

Install-Module -Name Microsoft.PowerShell.SecretManagement
Install-Module -Name Microsoft.PowerShell.SecretStore
Set-ExecutionPolicy -Scope Process Unrestricted  # ถ้าบล็อก

2. สร้าง SecretStore Vault

Register-SecretVault -Name MyDomainPassdb -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Get-SecretStoreConfiguration  # ตั้ง Master Password

Default: Scope=CurrentUser, Auth=Password, Timeout=900s, Interaction=Prompt
Vault เก็บที่: %LOCALAPPDATA%\Microsoft\PowerShell\secretmanagement

3. จัดการ Credentials

# บันทึก Password (SecureString)
Set-Secret -Vault MyDomainPassdb -Name user1

# บันทึก API Key (Plain Text)
Set-Secret -Vault MyDomainPassdb -Name MY_GITHUB_TOKEN -Secret 'GitHub_AUTH_API_Token'

# บันทึก PSCredential (User+Pass) พร้อม Metadata
Set-Secret -Vault MyDomainPassdb -Name adm_maxbak -Secret (Get-Credential) -Metadata @{description = "AD Enterprise Admin"}

# ดูรายการ
Get-SecretInfo | ft Name, Metadata

# อ่านค่า (PS 7.x)
Get-Secret -Vault MyDomainPassdb -Name user1 | ConvertFrom-SecureString –AsPlainText

4. ใช้ใน Scripts

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

# Exchange/M365
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://exch/powershell -Authentication Kerberos -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_ex)

# Azure AD
Connect-AzureAD -Credential (Get-Secret -Vault MyDomainPassdb -Name azadm)

# เก็บใน Variable
$Cred = Get-Secret -Vault MyDomainPassdb user1

5. ผสานกับ KeePass

Install-Module -Name SecretManagement.KeePass
Register-SecretVault -Name "KeePassDB" -ModuleName "SecretManagement.Keepass" -VaultParameters @{
  Path = "C:\Users\maxbak\Documents\personal_creds.kdbx"
  UseMasterPassword = $true
}
Test-SecretVault -Name KeePassDB
Get-SecretInfo -Vault KeePassDB
Set-Secret -Vault KeePassDB -Name "ILO_adm" -Secret (Get-Credential woshub\ILO_adm)