Home > Windows にまつわる e.t.c.

PowerShell でトレンドマイクロのパスワードマネージャに登録したセキュアメモを 1Password のセキュアノートに登録する


トレンドマイクロのパスワードマネージャが EOL を迎えるので、パスワードとセキュアメモをどうしようかと検討していました

後継製品は ID プロテクションなのですが、イマイチ使い勝手が馴染めず、別ベンダへの製品も視野に入れようと ChatGPT さん僕の用途を聞くと、1Password をオススメされたので、1Password にパスワードマネージャに登録している内容を食わせて評価開始しようとしたら...

パスワードのセットは簡単にできたのですが、セキュアメモのセットが Web UI だとツライしんですよ

セキュアメモが600以上あるのですが、Web UI に CSV を食わせても、1レコードずつセキュアノートに設定する必要ある感じなんですね

 

600以上リスト選択するのは現実的ではないので、サポートに問い合わせしようとしたら、試用版はサポート対象外みたいで、問い合わせ窓口へのアクセスが開かない orz

自力でなんとかするしかないなと、API とかで一括登録できないかと調べていたら、1Password CLI なるものが存在するらしい

試してみると、試用期間でも使えそうなので、1Password CLI でセキュアメモ一括登録をする事にしました

 

1Password アプリと 1Password CLI のセットアップ

1Password CLI の認証には、1Password アプリ(これを書いている段階で 1Password 8)をセットアップして、1Password CLI との連携設定をします

まず、各モジュールのダウンロードとインストールです

 

1Password アプリ

インストーラーは以下からダウンロード & インストールします

1Password 8
https://1password.com/jp/product/

 

1Password CLI

1Password CLI は以下からダウンロードします

https://1password.com/jp/downloads/command-line

 

ダウンロードボタンを押すと、GitHub に飛ばされ、Windows 環境では winget でインストールしろ言われます

winget install 1password-cli

 

1Password アプリと 1Password CLI をインストールしたら、1Password アプリにログインし、[自分の名前]-[設定」を開き、「開発者」で「1Passwprd CLI と連携」を ON にします

 

Windows Hello が使える環境であれば、Windows Hello で認証できるように設定できます

 

認証動作の確認は、以下コマンドで保管庫表示すると良いでしょう

op vault list

 

1Password CLI でセキュアノートを登録する

1Password へアイテムを登録するには「op item create」コマンドを使用します

op item create コマンドは、1Password の様々なアイテムを登録できる汎用コマンドなので、「セキュアノート」を指定する必要があります

登録するアイテム種類を 1Password では「カテゴリ」と呼んでおり、その実態はテンプレートとして登録されています

セキュアノートのカテゴリは「Secure Note」です

どのようなカテゴリがあるのか確認する場合は「op item template list」コマンドで確認できます

 

カテゴリで定義されている属性に対して、セキュアメモの内容をセットします

対象となる属性は「notesPlain」になっています

カテゴリがどのようなテンプレートで作られているかも確認できるので、興味がある方は「op item template get 'Secure Note'」コマンドで確認して下さい

これでセキュアメモのセット先が判明しました

カテゴリ Secure Note
セット先の属性 notesPlain

 

セキュアノートを登録するには、セット先にセキュアメモのタイトルとメモの値を渡せば良い事になります

コマンドは以下のようになります

op item create --category [カテゴリ] --title [メモのタイトル] [セット先の属性]=[メモの値]

 

複数の保管庫を作っている場合は、--vault オプションに保管庫名を渡します

保管庫名は「op vault list」で確認できます

 

PowerShell での実装

登録コマンドがわかったので、あとは PowerShell でトレンドマイクロ パスワードマネージャから吐き出したセキュアメモの CSV データを順次渡せば良い事になります

コードとしてはこんな感じの実装になります

ImportSecMemo.ps1

Param($Path, $MemoTitol, $MemoValue, $Vault)

# $Path         : CSV Path
# $MemoTitol    : タイトル列の名前
# $MemoValue    : メモ内容列の名前
# $Vault        : 保存先の保管庫名

if($Path -eq $null){
    Write-Output "The path cannot be omitted."
    exit
}

if($MemoTitol -eq $null){
    $MemoTitol = 'メモの名前'
}

if($MemoValue -eq $null){
    $MemoValue = 'メモの内容'
}

# カテゴリに「セキュアノート」を指定
$Category = 'Secure Note'

if(-not (Test-Path $Path)){
    Write-Output "$Path not found."
    exit
}
$SecMemos = Import-Csv $Path

foreach( $SecMemo in $SecMemos){
    $Titol = $SecMemo.$MemoTitol
    if( $Titol -eq [string]$null){
        $Titol = 'No Titol'
    }

    $Value = $SecMemo.$MemoValue
    if( $Value -eq [string]$null){
        $Value = 'No data'
    }

    if( $Vault -eq $null ){
        op item create --category $Category --title $Titol notesPlain=$Value
    }
    else{
        op item create --category $Category --vault $Vault --title $Titol notesPlain=$Value
    }
}

 

Github に実装コードを置いていますので、必要であれば以下でダウンロードしてください

$ModuleName = "Import-SecMemo-for-1Password"
$GitHubName = "MuraAtVwnet"
$ScliptName = "ImportSecMemo.ps1"
Invoke-WebRequest -Uri https://raw.githubusercontent.com/$GitHubName/$ModuleName/master/$ScliptName -OutFile ~/$ScliptName

 

以下で CSV から一括登録できます

~/ImportSecMemo.ps1 CSVフルパス

 

CSV の列名や、保管庫名は、以下オプションで指定できます

-MemoTitol タイトル列の名前
-MemoValue メモ内容列の名前
-Vault 保存先の保管庫名

 

実測した感じでは、1件あたり3秒程度かかりました

 

スクリプト動作確認環境

PowerShell 7.5.2 (Windows)
Windows PowerShell 5.1

 

Github

https://github.com/MuraAtVwnet/Import-SecMemo-for-1Password

git@github.com:MuraAtVwnet/Import-SecMemo-for-1Password.git

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.