PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する
Microsoftは最近、非常に便利な SecretManagementをリリースしました。 PowerShellモジュール。これを使用して、PowerShellスクリプトに保存されたパスワード(シークレット)を安全に保存して使用できます。このモジュールは、次の2つのコンポーネントで構成されています。SecretStoreボールト (デフォルトのパスワードストア)、および SecretManagement (異なるパスワードボールトにアクセスするためのエンジン)。組み込みのSecretStoreボールトとサードパーティのシークレットボールト(KeePass、LastPass、HashiCorp Vault、Azure Key Vault、Bitwarden、Windows Credential Managerなど)の両方がサポートされています。 SecretManagementを使用すると、任意のパスワード(クレデンシャル)をシークレットボールトに保存して、いつでも取得できます。ライセンスキー、アクセスキー、その他の機密情報を保存することもできます(Hashtable
、Byte
、String
、SecureString
、およびPSCredential
オブジェクトタイプがサポートされています)。
この記事では、PowerShellスクリプトでSecretManagementモジュールを使用してクレデンシャルを保存および取得する方法と、KeePass統合の例を示します。
内容:
- シークレット管理モジュールのインストール
- PowerShellを介してパスワードストア(SecretStore Vault)を作成する
- シークレット管理モジュールを使用した保存済みクレデンシャルの管理
- PowerShellスクリプトでSecretVaultから保存されたパスワードを使用する
- PowerShellを使用したKeePassのパスワードとシークレットの管理
SecretManagementモジュールには、WindowsPowerShellバージョン5.1またはPowerShellCore 6.x、7.xが必要です。
NuGetパッケージマネージャーを使用してSecretManagementをインストールするには、次のコマンドを実行します。
Install-Module -Name Microsoft.PowerShell.SecretManagement
デフォルトのSecretStoreをインストールするには Microsoftが提供するボールトで、次のコマンドを実行します。
Install-Module -Name Microsoft.PowerShell.SecretStore
モジュールで使用可能なコマンドレットのリストを表示するには、次のコマンドを使用します。
Get-Command -Module Microsoft.PowerShell.SecretManagement
Get-Command -Module Microsoft.PowerShell.SecretStore
PowerShellを介してパスワードストア(SecretStore Vault)を作成する
まず、ローカルシークレットボールトを作成します。 MyDomainPassdbという名前を付けます デフォルトのパスワードストアにします。
Register-SecretVault -Name MyDomainPassdb -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Set-ExecutionPolicy -Scope Process Unrestricted
ローカルとリモートの両方のパスワードボールトを作成して使用できます。
以下のコマンドは、現在のユーザーの登録済みパスワードボールトのリストを表示します。
Get-SecretVault
SecretStore Vaultにアクセスするためのマスターパスワードを作成します:
Get-SecretStoreConfiguration
デフォルトでは、次の設定により、パスワードストアにアクセスできるユーザーと方法が決まります。
- 範囲 –
CurrentUser
(現在のユーザーのみがSecretStoreにアクセスできます) - 認証 –
Password
(マスターパスワードを使用してボールトにアクセスします) - PasswordTimeout –
900
–マスターパスワードを再入力する必要がないセッションの期間(秒単位)。セッションの長さを延長できます:Set-SecretStoreConfiguration -PasswordTimeout 1200
- 相互作用 –
Prompt
(変更時にマスターパスワードを入力するかどうか)
シークレットボールトにアクセスするためのマスターパスワードの要求を無効にするには(非推奨)、
Authentication = None
を設定します。 :
Set-SecretStoreConfiguration -Authentication None
マスターパスワードを変更するには、Set-SecretStorePassword
を使用します コマンドレット。
%LOCALAPPDATA%\Microsoft\PowerShell\secretmanagement
にあります。 。
残念ながら、マネージドサービスアカウント(MSA / gMSA)のプロファイルが作成されていないため、これらのアカウントのシークレット管理モジュールを使用することはできません。
ストアに保存するパスワード(シークレット)を入力します。
または、次のように保護された値を保存できます(GitHubキーなど)。
シークレットボールトのエントリのリストを表示できます:
Set-Secret
コマンドレットは、SecureStringタイプのシークレットをパスワードボールトに追加するために使用されます。ボールト名とエントリ名を指定します:Set-Secret -Vault MyDomainPassdb -Name user1
Set-Secret -Vault MyDomainPassdb -Name MY_GITHUB_TOKEN -Secret 'GitHub_AUTH_API_Token'
Get-SecretInfo
Get-Secret -Vault MyDomainPassdb -Name user1| ConvertFrom-SecureString –AsPlainText
ほとんどの場合、Windowsネットワークで作業しているときにのみパスワードを保存するのではなく、ユーザー名とパスワードの両方を保存する必要があります。この場合、資格情報をPSCredentialとして保存します 物体。保存したエントリの説明を含むメタデータを追加することもできます。
Set-Secret -Vault MyDomainPassdb -Name adm_maxbak -Secret (Get-Credential) -Metadata @{description = "AD enterprise admin woshub.com"}
[資格情報の取得]ウィンドウにアカウント名を入力したくない場合は、次のように指定できます。
Set-Secret -Vault MyDomainPassdb -name adm_maxbak -Secret (get-credential woshub\adm_maxbak)
保存されているパスワードとその説明のリストを表示する方法は次のとおりです。
Get-SecretInfo | Ft Name, Metadata
PowerShellスクリプトでSecretVaultから保存されたパスワードを使用する
これで、PowerShellスクリプトおよびコマンドで保存されたパスワードを使用できます。たとえば、私の顧客の1人は、セキュリティと管理アカウント保護の理由から、管理者ごとに数十のアカウントを使用し、さまざまなサービス/タスクを使用しています。同じパスワードの使用は禁止されており、パスワードは定期的に監査されます。管理者は、常に異なるパスワードを入力するのが面倒だと感じています。
SecretManagementモジュールを使用すると、パスワードをローカルのボールトに安全に保存し、必要に応じて取得できます。
たとえば、リモートコンピューターに接続し、PowerShell Remotingを介してコマンドを実行するには、次のコードを使用できます。
Enter-PSSession -ComputerName mun-dc01 -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_maxbak)
同様に、ExchangeまたはMicrosoft 365(Office 365など)に簡単に接続できます。
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://mun-exch1.woshub.com/PowerShell/ -Authentication Kerberos -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_ex_maxbak)
または、Azure ADテナントを接続します:
Connect-AzureAD -Credential (Get-Secret -Vault MyDomainPassdb -Name azadm_ maxbak)
または、資格情報を取得してPowerShell変数に保存します:
$Cred = Get-Secret -Vault MyDomainPassdb user1
PowerShellを使用したKeePassのパスワードとシークレットの管理
SecretManagementモジュールを使用して、他の一般的なパスワードボールトにアクセスできます。 KeePassで保存されたパスワードにアクセスする方法を見てみましょう ファイル(* .kdbx)。
まず、SecretManagementモジュールをインストールしてKeePassとやり取りします:
Install-Module -Name SecretManagement.KeePass
次に、ユーザープロファイルにあるKeePassボールトファイルを登録します。
Register-SecretVault -Name "KeePassDB" -ModuleName "SecretManagement.Keepass" -VaultParameters @{
Path = "C:\Users\maxbak\Documents\personal_creds.kdbx"
UseMasterPassword = $true
}
KeePassファイルへのアクセスを確認するには、次のコマンドを実行します。
Test-SecretVault -Name KeePassDB
マスターパスワードを入力して、KeePassボールトにアクセスします。パスワードを正しく入力した場合、コマンドは Trueを返します 。
次に、KeePassデータベースに保存されているパスワードのリストを表示します。
Get-SecretInfo -Vault KeePassDB
KeePassに新しい秘密を保存するには:
Set-Secret -Vault KeePassDB -Name "ILO_adm" -Secret (Get-Credential woshub\ILO_adm)
同様に、他の一般的なパスワードストアソリューションに接続して、PowerShellで使用できます。
-
MicrosoftEdgeで保存されたパスワードを表示および管理する方法
Microsoftは、競合他社に打ち勝ち、比類のないユーザーエクスペリエンスを提供するために、Edgeブラウザに新しい機能を継続的に追加しています。他のブラウザと同様に、MicrosoftEdgeでは保存されたパスワードを表示および管理できます。サインインが必要なWebサイトにアクセスするたびに、Edgeは、次回ログインしたときにそのサイトのパスワードを記憶するかどうかを尋ねてきます。 Edgeがプライマリブラウザである場合、ブラウザがパスワードフィールドに入力しますが、特定のWebサイトのパスワードを表示したい場合があります。たとえば、別のデバイスでサイトにアクセスするために使用できるよう
-
単一の保管庫で複数のパスワードを識別、ロック、管理する方法
資格情報は、オンライン ニュース サイトの基本的なパスワードであろうと、銀行やクレジット カードなどのより重要なものであろうと、常に安全に保管する必要がある重要な情報です。ユーザー名とパスワードは、資格情報の 2 つの半分です。パスワードは、ユーザーの裁量で選択して保存できます。多くの人がこれをメリットと考えていますが、可能な限り単純なパスワードを選択する人もいるため、デメリットにもなり得ます。この投稿では、TweakPass として知られる最高の安全なパスワード マネージャー アプリを使用して、複数のパスワードをロックおよび管理する方法を紹介します。 TweakPass を使用して複数のパス