Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

Microsoftは最近、非常に便利な SecretManagementをリリースしました。 PowerShellモジュール。これを使用して、PowerShellスクリプトに保存されたパスワード(シークレット)を安全に保存して使用できます。このモジュールは、次の2つのコンポーネントで構成されています。SecretStoreボールト (デフォルトのパスワードストア)、および SecretManagement (異なるパスワードボールトにアクセスするためのエンジン)。組み込みのSecretStoreボールトとサードパーティのシークレットボールト(KeePass、LastPass、HashiCorp Vault、Azure Key Vault、Bitwarden、Windows Credential Managerなど)の両方がサポートされています。 SecretManagementを使用すると、任意のパスワード(クレデンシャル)をシークレットボールトに保存して、いつでも取得できます。ライセンスキー、アクセスキー、その他の機密情報を保存することもできます(HashtableByteStringSecureString 、および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

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

モジュールで使用可能なコマンドレットのリストを表示するには、次のコマンドを使用します。

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

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

PowerShellを介してパスワードストア(SecretStore Vault)を作成する

まず、ローカルシークレットボールトを作成します。 MyDomainPassdbという名前を付けます デフォルトのパスワードストアにします。

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

PowerShellスクリプト実行ポリシーの設定によりモジュールの実行が妨げられている場合は、現在のセッションの設定を次のように変更できます。

Set-ExecutionPolicy -Scope Process Unrestricted

ローカルとリモートの両方のパスワードボールトを作成して使用できます。

以下のコマンドは、現在のユーザーの登録済みパスワードボールトのリストを表示します。

Get-SecretVault

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

SecretStore Vaultにアクセスするためのマスターパスワードを作成します:

Get-SecretStoreConfiguration

SecretStore Vaultのマスターパスワードを忘れると、そこに保存されているデータにアクセスできなくなります。

デフォルトでは、次の設定により、パスワードストアにアクセスできるユーザーと方法が決まります。

  • 範囲CurrentUser (現在のユーザーのみがSecretStoreにアクセスできます)
  • 認証Password (マスターパスワードを使用してボールトにアクセスします)
  • PasswordTimeout 900 –マスターパスワードを再入力する必要がないセッションの期間(秒単位)。セッションの長さを延長できます:Set-SecretStoreConfiguration -PasswordTimeout 1200
  • 相互作用Prompt (変更時にマスターパスワードを入力するかどうか)

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

シークレットボールトにアクセスするためのマスターパスワードの要求を無効にするには(非推奨)、Authentication = Noneを設定します。 :

Set-SecretStoreConfiguration -Authentication None

マスターパスワードを変更するには、Set-SecretStorePasswordを使用します コマンドレット。

Windowsでは、ローカルパスワードストアはユーザープロファイルフォルダー%LOCALAPPDATA%\Microsoft\PowerShell\secretmanagementにあります。 。

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

残念ながら、マネージドサービスアカウント(MSA / gMSA)のプロファイルが作成されていないため、これらのアカウントのシークレット管理モジュールを使用することはできません。 シークレット管理モジュールを使用して保存された資格情報を管理する

Set-Secret コマンドレットは、SecureStringタイプのシークレットをパスワードボールトに追加するために使用されます。ボールト名とエントリ名を指定します:

Set-Secret -Vault MyDomainPassdb -Name user1

ストアに保存するパスワード(シークレット)を入力します。

または、次のように保護された値を保存できます(GitHubキーなど)。
Set-Secret -Vault MyDomainPassdb -Name MY_GITHUB_TOKEN -Secret 'GitHub_AUTH_API_Token'

個人情報はPowerShellコマンド履歴に保存されるため、PowerShellコンソールにプレーンテキストとして入力する場合は注意が必要です。

シークレットボールトのエントリのリストを表示できます:

Get-SecretInfo

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

PowerShell 7.xでは、 –AsPlainText を使用して、パスワードボールトから保護された値をプレーンテキストとして表示できます。 オプション(必要に応じてPowerShellのバージョンを更新します):

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 SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

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

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

次に、ユーザープロファイルにあるKeePassボールトファイルを登録します。

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

KeePassファイルへのアクセスを確認するには、次のコマンドを実行します。

Test-SecretVault -Name KeePassDB

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

マスターパスワードを入力して、KeePassボールトにアクセスします。パスワードを正しく入力した場合、コマンドは Trueを返します 。

次に、KeePassデータベースに保存されているパスワードのリストを表示します。

Get-SecretInfo -Vault KeePassDB

PowerShell SecretManagementモジュール:クレデンシャルとシークレットを安全に管理する

KeePassに新しい秘密を保存するには:

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

同様に、他の一般的なパスワードストアソリューションに接続して、PowerShellで使用できます。


  1. MicrosoftEdgeで保存されたパスワードを表示および管理する方法

    Microsoftは、競合他社に打ち勝ち、比類のないユーザーエクスペリエンスを提供するために、Edgeブラウザに新しい機能を継続的に追加しています。他のブラウザと同様に、MicrosoftEdgeでは保存されたパスワードを表示および管理できます。サインインが必要なWebサイトにアクセスするたびに、Edgeは、次回ログインしたときにそのサイトのパスワードを記憶するかどうかを尋ねてきます。 Edgeがプライマリブラウザである場合、ブラウザがパスワードフィールドに入力しますが、特定のWebサイトのパスワードを表示したい場合があります。たとえば、別のデバイスでサイトにアクセスするために使用できるよう

  2. 単一の保管庫で複数のパスワードを識別、ロック、管理する方法

    資格情報は、オンライン ニュース サイトの基本的なパスワードであろうと、銀行やクレジット カードなどのより重要なものであろうと、常に安全に保管する必要がある重要な情報です。ユーザー名とパスワードは、資格情報の 2 つの半分です。パスワードは、ユーザーの裁量で選択して保存できます。多くの人がこれをメリットと考えていますが、可能な限り単純なパスワードを選択する人もいるため、デメリットにもなり得ます。この投稿では、TweakPass として知られる最高の安全なパスワード マネージャー アプリを使用して、複数のパスワードをロックおよび管理する方法を紹介します。 TweakPass を使用して複数のパス