PowerShellの新しい認証情報管理(PowerShell Secrets Management)について

PowerShell Core

しばたです。
11月4日~8日に開催されたMicrosoft Ignite 2019ではPowerShell 7に関するセッションも幾つか発表されたのですが、その中で以前公開されたロードマップで発表された認証情報の管理基盤について触れているものがあったので本記事で紹介します。

PowerShell Secrets Management

本記事で紹介するセッションはこちらです。

このセッションはPowerShell TeamのSydney Smithさんによるショートセッションで、複数の認証情報ストアへのアクセスを統一的に行うMicrosoft.PowerShell.SecretsManagementモジュールの概要と、このモジュールを使いAzure Key VaultからPowerShell Galleryのアクセスキーを取得しテストモジュールをPublishするデモとローカルマシンに保存した認証情報を取得しTiwtterにTweetを流すデモを紹介していました。

Microsoft.PowerShell.SecretsManagement モジュール

セッションで紹介されたMicrosoft.PowerShell.SecretsManagementモジュールは、オンプレやクラウドサービスなどの様々な環境で使われる認証情報をセキュアかつできるだけスクリプトに埋め込まず横断的に扱うために新たに作られたモジュールです。
セッションでは下図のデザインが紹介され、クロスプラットフォーム対応の1つのモジュールで複数の認証情報、認証情報ストアを統一的に扱えるものとなっています。

(図はセッション動画より引用)

モジュールで公開されるコマンドレットは以下の様です。

(図はセッション動画より引用)

セッション内容からはRegister-SecretsVaultでAzure Key Vault等の認証情報ストアを登録、Add-SecretGet-Secretコマンドレットで各種認証情報ストアに登録された認証情報を取り扱う形となっていました。

# デモで紹介されていたコード例 : Nuget API key を Azure Key Vaultから取得
Publish-Module -NuGetApiKey (Get-Secret PoshGalleryAPI)

認証情報ストアはローカルマシンとAzure Key Vaultが紹介されましたが、拡張可能な作りになっている様ですのでSSM Paramter StoreAWS Secrets ManagerといったAWSサービスでも間違いなく利用可能になるででしょう。

試してみた...かった

残念ながら現時点ではこのモジュールのソースコードやドキュメントは一切公開されておらず、実際に検証して確かめることはできません。
公開されていない理由はまったくもって不明ですが、セキュリティに直結するモジュールですので公開に慎重なのかもしれません。

最後に

ざっとこんな感じです。

このMicrosoft.PowerShell.SecretsManagementモジュールは具体的にいつどの様な形でリリースされるのか不明ですが、PowerShell 7のロードマップが発端でもあるのでPowerShell 7のリリース(問題が無ければ2020年1月予定)に合わせてリリースされる可能性が高いと思われます。
リリースを期待して待ちたいと思います。