# PowerShellプラグイン

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FVopjl1PUqMbE3m7kmy2x%2Fimage.png?alt=media&#x26;token=3238d164-2d18-4655-90b4-fd48f3d3a581" alt=""><figcaption></figcaption></figure>

## 機能

* Keeperボルトからシークレットを取得してPowerShellで使用
* KeeperボルトをPowerShell Secrets Managerと統合
* PowerShellからKeeperボルトのシークレット値を更新
* Keeperボルトからファイルを取得

{% hint style="info" %}
Keeperシークレットマネージャー機能の完全なリストについては、[概要ページ](https://docs.keeper.io/jp/keeperpam/secrets-manager/overview)をご参照ください。
{% endhint %}

## 要件

本ページでは、シークレットマネージャーとPowerShellとの連携について説明します。 この連携を利用するための必要条件は以下のとおりです。

{% hint style="warning" %}
シークレットマネージャーには、**PowerShellバージョン6以降**が必要です。Microsoftは、PowerShellバージョン6以降をバージョン5以前とは別のアプリケーションとして配布しています。

インストールの詳細は、[Microsoftのドキュメント](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.1)をご参照ください。
{% endhint %}

* **PowerShellバージョン6.0以降**
  * インストールの詳細は、[Microsoftのドキュメント](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.1)をご参照ください。
* Keeperシークレットマネージャーへのアクセス (詳細は、[クイックスタートガイド](https://docs.keeper.io/jp/keeperpam/secrets-manager/quick-start-guide)をご参照ください)
  * Keeperアカウントのシークレットマネージャーアドオンの有効化
  * シークレットマネージャー関連ポリシーが有効化されたロールのメンバーシップ
* シークレットを共有するKeeper[シークレットマネージャーアプリケーション](https://github.com/Keeper-Security/gitbook-jp-secrets-manager/blob/main/about/terminology/README.md#application)
  * アプリケーションの作成手順については、[クイックスタートガイド](https://github.com/Keeper-Security/gitbook-jp-secrets-manager/blob/main/quick-start-guide/README.md#create-a-secrets-manager-application)をご参照ください
* [ワンタイムアクセストークン](https://docs.keeper.io/jp/keeperpam/secrets-manager/about/one-time-token)

## 概要

KeeperシークレットマネージャーPowerShellプラグインは、Microsoft PowerShellのSecret Managementモジュールを利用して、KeeperボルトからPowerShellスクリプトにシークレットを注入します。

Keeperシークレットマネージャー拡張機能は、新規または既存のPowerShell Secret Managementワークフローにシークレットのボルトとして追加するように簡単に設定できます。

PowerShell Secret Managementの詳細については、GitHub上のの[PowerShellドキュメント](https://github.com/powershell/SecretManagement)をご参照ください。

## インストール

#### 1. PowerShell Secret Managementモジュールのインストール

Keeperシークレットマネージャーは、Microsoft.PowerShell.SecretManagementモジュールを使用して、PowerShellのシークレットを管理します。

PowerShellを使用してインストール

```bash
Install-Module -Name Microsoft.PowerShell.SecretManagement
```

その他のインストールオプションについては、[PowerShellギャラリー](https://www.powershellgallery.com/packages/Microsoft.PowerShell.SecretManagement/1.1.0)をご参照ください。

#### 2. PowerShell用Keeperシークレットマネージャーのインストール

PowerShellギャラリーからKeeperシークレットマネージャーPowerShell拡張機能をインストールします。

```bash
Install-Module -Name SecretManagement.Keeper
```

その他のインストールオプションについては、[PowerShellギャラリーページ](https://www.powershellgallery.com/packages/SecretManagement.Keeper)を参照するか、[GitHub](https://github.com/Keeper-Security/secrets-manager/tree/master/sdk/dotNet/SecretManagement.Keeper)でソースコードを検索してください。

{% hint style="info" %}
SecretManagementを更新するには、`Update-Module -Name SecretManagement.Keeper`のコマンドを使用します。
{% endhint %}

#### 3. PowerShell Secret Management拡張機能のインストール

{% hint style="info" %}
使用したいシークレット拡張機能がローカルにすでにインストール済みの場合は、この手順を省略できます。
{% endhint %}

KeeperシークレットマネージャーPowerShellプラグインには、プラグイン構成をローカルマシンに格納するためのシークレット管理拡張機能が必要です。

Keeperでは、[Microsoft.Powershell.SecretStore](https://www.powershellgallery.com/packages/Microsoft.PowerShell.SecretStore)または[SecretManagement.KeyChain](https://www.powershellgallery.com/packages/SecretManagement.KeyChain)を推奨しています。

{% tabs %}
{% tab title="SecretStore" %}

```bash
Install-Module -Name Microsoft.Powershell.SecretStore
```

{% endtab %}

{% tab title="KeyChain" %}

```bash
Install-Module -Name SecretManagement.KeyChain
```

{% endtab %}
{% endtabs %}

#### 4. 構成の保管に使用するボルトの登録

{% hint style="info" %}
使用したいシークレットのボルトがローカルにすでに登録済みの場合は、この手順を省略できます。
{% endhint %}

Keeperシークレットマネージャープラグインの構成を格納できるように、以前にインストールしたシークレット管理拡張機能用のシークレットのボルトを登録します。

{% tabs %}
{% tab title="SecretStore" %}

```bash
Register-SecretVault -Name LocalStore -ModuleName Microsoft.Powershell.SecretStore
```

{% endtab %}

{% tab title="KeyChain" %}

```bash
Register-SecretVault -Name LocalStore -ModuleName SecretManagement.KeyChain
```

{% endtab %}
{% endtabs %}

このボルトの名前は、Keeper拡張機能の登録に使用されます。この例では`LocalStore`を使用しました。

Secret Management拡張機能をローカルストレージに使用すると、ローカルボルトに安全にアクセスするためのパスワードの作成を求められる場合があります。

{% hint style="warning" %}
システム設定によっては、`set-executionpolicy remotesigned`コマンドを使用してPowerShellが外部モジュールを信頼できるようにする必要があります。
{% endhint %}

#### 5. Keeperボルトの登録

認証情報を保存するために上記で登録したローカルボルトと、Keeperに接続するためのワンタイムトークンを使用して、Keeperシークレットマネージャーボルトを登録します。

以下の「XXX」をワンタイムトークンに置き換えてください。

```aspnet
Register-KeeperVault -Name Keeper -LocalVaultName LocalStore -OneTimeToken XXX 
```

または、すでに生成された構成を使用することもできます。以下の`XXX`をBase64エンコードされた構成に置き換えてください。

```
Register-KeeperVault -Name Keeper -LocalVaultName LocalStore -Config XXX
```

#### 6. Keeperボルトをデフォルトのシークレットの保存先として設定 (オプション)

追加したKeeperボルトをシークレットの既定の保存先として設定します。 これにより、シークレットを取得および設定するときに、ご利用のKeeperボルトを使用するようにPowerShell SecretsManagementモジュールに指示します。

```
Set-SecretVaultDefault keeper
```

この手順はオプションですが、設定しない場合、同じ名前のシークレットがある際にデフォルトのボルトからシークレットを受け取る可能性があり、`Get-Secret`コマンドや`Set-Secret`コマンドに`-Vault <Keeperボルト名>` (`-Vault keeper`など) を追加する必要があります。

{% hint style="success" %}
これで、KeeperシークレットマネージャーPowerShellプラグインを使用する準備ができました。
{% endhint %}

### ソースコード

[GitHubリポジトリ](https://github.com/Keeper-Security/secrets-manager/tree/master/sdk/dotNet/SecretManagement.Keeper)でKeeperシークレットマネージャーPowerShellプラグインのソースコードを検索します。

## 使用方法

KeeperシークレットマネージャーPowerShellプラグインの最も一般的な使用方法とその例を以下にご紹介します。

PowerShell Secret Managementのコマンドの詳細については、GitHubページの[PowerShellドキュメント](https://github.com/powershell/SecretManagement)をご参照ください。

{% hint style="warning" %}
バージョン16.6.6以降、`Get/Set`コマンドでは、タイトル内のドットに対してエスケープ文字として`\`を使用できるようになりました。タイトルにドットが含まれている場合のみエスケープ文字を使用し、`.\`や`\\`のようにドット`.`とバックスラッシュ`\`の両方をエスケープしてください。
{% endhint %}

### シークレットを一覧表示

以下のPowerShellコマンドを実行して、Keeperのシークレットの一覧を表示します。

{% tabs %}
{% tab title="コマンド" %}

```bash
Get-SecretInfo -Vault <KEEPER VAULT NAME>
```

{% endtab %}

{% tab title="例" %}

```bash
PS> Get-SecretInfo -Vault Keeper

Name                                  Type      VaultName
----                                  ----      ---------
bf3dg-99-Juh3feswgtFxg Home SSH       Hashtable Keeper
_3zT0HvBtRdYzKTMw1IySA ACME Login     Hashtable Keeper
```

{% endtab %}
{% endtabs %}

Keeperシークレットのボルトに設定された名前を使用します。上記の例では、`Keeper`が使用されています。

シークレットマネージャーアプリケーションと共有されているすべてのレコードが表示されます。「Name」列には、各レコードのUIDとタイトルが表示されます。

### 単一のシークレットを取得

単一のシークレットの情報と値を取得します。

{% tabs %}
{% tab title="コマンド" %}

```bash
Get-Secret -Vault <KEEPER VAULT NAME> <RECORD NAME or UID> -AsPlainText
```

{% endtab %}

{% tab title="例" %}

```bash
PS> Get-Secret -Vault Keeper "ACME Login" -AsPlainText

Name                           Value
----                           -----
login                          user2
password                       123
Files                          {file1.json, file2.zip}
```

{% endtab %}
{% endtabs %}

レコード名にスペースが使用されている場合は、引用符で囲みます。

{% hint style="info" %}
`-AsPlainText`を指定すると、シークレットの実際の値が表示されます。 指定しない場合は、`SecureString`として表示されます。
{% endhint %}

### シークレットから値を取得

[Keeper表記法](https://docs.keeper.io/jp/keeperpam/secrets-manager/about/keeper-notation)を利用して、アクセスするフィールドを識別します。「keeper://」という接頭辞は必要ありません。

{% tabs %}
{% tab title="コマンド" %}

```bash
Get-Secret -Vault <KEEPER VAULT NAME> <RECORD NAME OR UID>.<FIELD> -AsPlainText
```

{% endtab %}

{% tab title="例" %}

```bash
PS> Get-Secret "ACME Login.password" -AsPlainText
gmzN6E8@9E97%xPB6Pg0
```

{% endtab %}
{% endtabs %}

### シークレットに値を設定

単一のシークレットのフィールドの値を更新します。

{% tabs %}
{% tab title="コマンド" %}

```bash
Set-Secret -Vault <KEEPER VAULT NAME> <RECORD NAME OR UID>.<FIELD> <VALUE TO SET>
```

{% endtab %}

{% tab title="例" %}
Keeperボルトが既定のボルトとして設定されている場合

```bash
PS> Set-Secret -Vault Keeper "ACME Login.url" "acme.com"
```

Keeperボルトが既定のボルトとして設定されていない場合

```powershell
PS> Set-Secret -Vault Keeper "ACME Login.url" "acme.com" -Vault keeper
```

{% endtab %}
{% endtabs %}

### ファイルのダウンロード

Keeperボルト内のシークレットに添付されたファイルを指定するには、ドット記法を使用します。 次に、そのファイルを`Set-Content`コマンドに渡してダウンロードします。

{% tabs %}
{% tab title="コマンド" %}

```bash
Get-Secret -Vault <KEEPER VAULT NAME> <RECORD NAME OR UID>.files[<FILENAME>] `
| Set-Content -Path <FILE PATH> -AsByteStream
```

{% endtab %}

{% tab title="例" %}

```bash
PS> Get-Secret -Vault Keeper my_record.files[file1.json] `
| Set-Content -Path ./file1.json -AsByteStream
```

{% endtab %}
{% endtabs %}

指定したファイルは、`Set-Content`に渡したパスの場所にダウンロードされます。
