パーソルクロステクノロジーの内田です。
Azure Bastionで「セッションの記録」がプレビュー機能としてリリースされました。
Bastion セッションを記録する – Azure Bastion | Microsoft Learn
Azure Bastion のセッション記録機能が有効になっている場合は、bastion ホスト経由で仮想マシンに対して行われた接続 (RDP と SSH) のグラフィカル セッションを記録できます。 セッションが閉じられたり切断されたりすると、記録されたセッションはストレージ アカウント内の BLOB コンテナーに (SAS URL 経由で) 格納されます。 セッションが切断されると、Azure portal の [セッション記録] ページで、記録されたセッションにアクセスして表示できます。 セッション記録には Bastion Premium SKU が必要です。
Bastionはいわゆる踏み台のサービスであり、VMに個別にパブリックIPアドレスを付与することなく、社外ネットワークから安全にAzure上のVMに接続することのできる機能を提供します。
このサービスに「セッションの記録」がリリースされたことによって、障害が発生した際に何の操作に起因しているのかの調査を行うことが可能になりますし、また攻撃者に対する抑止力が備わったといえるでしょう。要塞に監視カメラが付いたみたいですね。
早速触ってみる
Bastionをデプロイしていきます。当該機能を利用するためには「Premium SKU」が必要です。
また「ネイティブ クライアント サポート」と「セッションの記録」は併用することができないみたいなので、気をつけましょう。

デプロイされたBastionのリソースを確認すると設定画面に「セッションの記録」が表示されていることを確認できました。
記録されたセッションはBlobコンテナーに格納されるようですので、別途ストレージアカウントでSASを構成して、そのURIを設定していきます。

SASを構成する
まず最初に、デプロイしたBastionリソースの概要ページで、パブリックDNS名を控えます。

つづいてセッションを記録するストレージアカウントの「リソースの共有(CORS)」ページでBlobサービスのポリシーを構成します。許可されたオリジンには、https://の後に先ほど控えておいたBastionリソースのパブリックDNS名を指定します。

次にSASの構成です。コンテナの一覧画面からデータ保管先のコンテナを選択し、SASの生成を押下します。

アクセス許可では「読み取り、作成、書き込み、リスト」の4つを選択します。
開始日時と有効期限は適当に設定します。
許可されるプロトコルには「HTTPSのみ」を選択しましょう。

生成された「Blob SAS URL」を控えたら、Bastionのセッション記録のページに戻り、値を設定します。
Bastionでログインを試みて、セッション記録を確認する
設定が完了したので、早速Bastion経由でVMにログインして、操作を終えた後にログアウトします。
あらためて、Bastionのセッションの記録ページを確認すると以下のような画面になっています。

「レコーディングの表示」を押下すると、動画が表示されました。左下の再生ボタンを押下すると動画が再生されますし、シークバーを移動して任意の時間に飛ぶこともできました。
実際の画面をレコーディングしましたので、以下に表示いたします。
終わりに
現時点ではパブリックプレビューということですが、機能については申し分ありませんでした。
今後の機能追加によってネイティブクライアント経由のBastion利用においても、セッション記録を利用できるようになることを期待したいですね。
また、BlobコンテナのSASを発行して動画ファイルの保存をサービスに許可していましたが、これだと有効期限が切れてしまう恐れがあります。(相当未来の日付を期限に設定すれば問題ありませんが)
これについても今後の機能追加によって、例えばBastionにマネージドIDを割り当てて、それをストレージアカウントに対してBlob共同作成者ロールを付与するみたいな感じで、有効期限を気にせず利用できるようになるかもしれませんね。
また金額面でいうと、Premium SKUを利用することになるので、最低でも月額約5万円かかるようです。
一つ下のStandard SKUの場合は月額約3万円ですので、既にBastionを利用されている場合は月2万円程度のコストが追加でかかるイメージです。
※Bastionのインスタンスが2つの場合です。これに加えて、Blobコンテナに保存される動画ファイルの容量に応じて追加で課金されます。
※ちなみに上記の動画は51秒で、Blobとしてのファイルの大きさは約1MBでしたので、ざっくり14時間程度で1GBという感じでしょうか。東日本リージョンのLRS構成の場合、ストレージ料金はHot層で約3円/GBです。
セッションを録画できることで色んなメリットを享受できるかと思いますので、導入を検討されたい方はお気軽に弊社までご連絡ください。
今回はこれで以上になります。