ビデオ:MOVEit Automation を使って Azure Blob ストレージからファイルをダウンロード

9月 08, 2018 セキュリティとコンプライアンス, MOVEit

イプスイッチのMOVEit Automation 2018 には、新しい機能として REST API が導入されています。イプスイッチに多くのブログを寄稿いただいている Adam Bertram 氏による次のビデオは、PowerShell を使用して、まず MOVEit Automation サーバーを認証し、次に Azure Blob ストレージからのファイル転送タスクを作成し実行する方法をデモンストレーションしています。

TechSnips のこの10分ほどのビデオでは、PowerShell  スクリプトを使って MOVEit Automation で Azure Blob ストレージからファイルをダウンロードする方法を説明します。Azure と MOVEit に関しては、以前のブログ、「Microsoft の Azure Cloud Shell の使い方」と「PowerShell を使って Azureアプリサービスからファイルをコピーする方法」もご参考いただければと思います。

Adam Bertram 氏がコントリビュータとして名を連ねる TechSnips サイトは大変有用です。TechSnips は様々なIT技術やテクニックに関するハウツーをビデオで提供する、新しい(そして無料の)ITキャリア開発プラットフォームです。Bertram 氏を始め多くのIT専門家が、クラウドコンピューティング、プログラミング、システム管理など、数多くのテクノロジーをカバーしています。チェックすることをお勧めします!

Adam Bertram 氏について:

Adam Bertram 氏はIT分野で20年以上の経歴を持っています。現在、自動化エンジニア、ブロガー、コンサルタント、フリーランスライター、Pluralsight コースの著者などとして活動しており、Microsoft Cloud と Datacenter Management  のMVP(最重要人物)でもあります。特に関心を寄せているのは、主として Microsoft の DevOps、システム管理、自動化技術、各種クラウド・プラットフォームです。サイト、adamtheautomator.com で執筆活動を行っています。GitHub、ツイッター @adbertram をフォローしてください。

トランスクリプト:

イプスイッチの MOVEit Automation 2018 を使用して、Azure Blob ストレージからファイルをダウンロードする方法を説明します。ですから、内容を確実にフォローしたい場合は、必要な事項があります。

まず最初に、当然、MOVEit Automation 2018 が必要になりますが、ウェブ管理者用のインストールが必要です。ここで使用するのはWeb Adminインストールということを確認してください。

自動化のためにはそうする権利が必要になります。明らかにストレージ・アカウントも必要で、MOVEit Automation が Azure に認証されるためにはサービスプリンシパルが Azure に設定されている必要があります。これは Azure クレデンシャルによって行われますが、TechSnips の別のビデオでわかりやすく説明しているので、How to Create and Authenticate to Azure with a Service Principal using PowerShell を参照してください。

このシナリオでは、PowerShell スクリプトを作成します。作成する PowerShell スクリプトは、Azure サブスクリプションのストレージコンテナから MOVEit Automation サーバー上のローカルファイルにファイルをダウンロードするものです。

まず、PowerShell スクリプトの作成に着手します。この PowerShell スクリプトは MOVEit 用に限定されています。ほとんどは一般的な PowerShell ですが、ここで使ういくつかのオブジェクト上のメソッドの変数は、MOVEit に特化されている点を知っておく必要があります。

最初の部分、ライン21から36までを見てみましょう。ここでは、必要な場合にのみ AzureRM PowerShell モジュールをダウンロードするようにしています。MOVEit Automation サーバー上で実行しているので、良い条件ロジックです。モジュールがあるかどうかをチェックして、もしなければまず必要となる NuGet バージョンをインストールし、すべてダウンロードして有効にします。

タスク・パラメータ

このスクリプトの次の部分で、必須のタスク・パラメータが存在することを確認します。MOVEit Automation にいくつかのパラメータを持つタスクを作成します。パラメータを使わずに、スクリプトに静的に値を入れることも不可能ではありませんが、別のサービスアカウントやコンテナに変更したい場合があるので、固定してしまうのはいい考えではありません。(変更する場合は、パラメータ設定で簡単に)変更が可能です。

基本的に、この箇所で、必要となるすべてのパラメータを定義します。MOVEit Automation タスク用にの3つのパラメータを設定しますが、ここで、それらが存在するかどうか確認しています。そのためには、miaclient 変数を実行し、miaclient オブジェクトを参照してから、MIGetTaskParam メソッドを実行します。

miaclient はMOVEit Automation 特有のオブジェクトですが、PowerShell は、これが MOVEit Automation 内で実行されたときに、それが何であるかを知ります。したがって、これを今実行しても miaclient が何であるか分からないので失敗します。

ですから、ここで使う MIGetTaskParam に関して、ただ MIGetTaskParam を実行するだけではなく、これらのパラメータの値を取得するためにパラメータを設定します。簡単にアクセスできるよう、set-variable を使って PowerShell スクリプトで実際に変数を作成しています。

Azure の認証

次の部分では、Azure への認証を行っています。最初にライン51で認証されているかどうかを確認してから、クレデンシャルを設定します。クレデンシャルは ServicePrincipal IDとパスワードですが、これが既に設定済みのはずであるエンタープライズアプリケーションIDになります。ライン55で対象とするサブスクリプションに対して接続の認証を行い、サブスクリプションIDとテナントIDを指定します。これで認証は完了です。

ダウンロード・アクションのスクリプト

ここで、実際にダウンロードを行います。まず最初にストレージコンテキストを作成します。事前に取得していた Azure Storage Account と Azure Storage Key の値を使用します。次にライン61からライン65は、foreach ループのエリアです。ここでは、前にタスク・パラメータを使って作成した Azure コンテナの内部にあるすべてのファイルをリストアップします。ここ、ライン62には、もう1つの miaclient メソッド、MINewCacheFilename があります。これは、MOVEit Automation内部のキャッシュに一時ファイルを作成するもので、ファイルを処理していることがわかります。

ライン63は Get-AzureStorageBlobContent を実行して、実際にダウンロードする部分です。ライン64には、また別の miaclient オブジェクトリファレンスがあり、ここのは MIAddFile です。ファイルを追加するものですが、これは基本的に Azure上のファイルをローカルの MOVEit Automation キャッシュファイルにコンバートします。

Catch ブロック

そして、ライン67からライン72までが Catch のブロックです。ライン38で始まる部分に Try ブロックがありましたが、このブロックにPowerShellのエラーがあれば Catch ブロックでキャッチします。このブロックでも miaclient リファレンスを使っていますが、それらは、SetErrorCode と SetErrorDescription です。MOVEit Automation は、PowerShell がエラーを検出したとわかります。このようにしないと PowerShell エラーの解釈の仕方がわからないので、成功したと勘違いしてやり過ごしてしまいます。

MOVEit に PowerShell スクリプトを追加

さて、PowerShell スクリプトが作成できたので、これを実際に MOVEit Automation に追加します。いくつかの方法がありますが、私は怠け者なので、別のスクリプトを作成するのは避けたいですから、「コピーして貼り付け」を使います。別のやり方でも行うことができます。ここで、[Script] をクリックし、[Add Script] をクリックします。これを、そうですね、“Download Azure Blob Strage” と呼ぶことにします。タイプは、PowerShell スクリプトになります。イプスイッチで用意しているスクリプトテンプレートがありますが、今回は必要ではありません。「コピーして貼り付け」機能でここに貼り付けます。または、[Import Script File] でファイル全体をインポートすることもできます。MOVEit Automation の好ましい点は、PowerShell の構文を色分けして強調表示している点です。MOVEit Automation が PowerShell の構文を理解していることがわかり、安心できます。

新しいタスクの生成

さてスクリプトができたので、次はタスクを生成します。[Tasks] をクリックし、[Add Task] プルダウンの [New Task] を選択します。ポップアップされたウィンドウで “Friendly Name” を指定します。今は複雑な処理は行わないので “Traditional” を選択します。ループや条件付きブロックでいろいろなことが可能ですが。[Add Task] をクリックします。ここで、ステップを設定します。多くの異なるスクリプトに分割して、様々なことができますが、まずは簡単に1つのスクリプトということにしておきます。PowerShell スクリプトを呼び出すには、ここでステップを作成する必要があります。スクリプト自体の中ですべてのファイルを収集するので、技術的にはスクリプトがソースであり、ここでソースは作成しません。プロセスのステップは作成する必要があります。ここが作成したスクリプトを定義するところなので、Download Azure Blog Storage を選択します。おおっと、これは Blog になっていますね、ちょっとブログをしすぎたせいせしょう、このままにしますが、本当は、Download Azure Blob Storage です。

タスク・パラメータ

さて、ここ(”Edit task parameters”)でタスク・パラメータを指定します。スクリプトのところで説明したタスク・パラメータです。ライン40に RequiredMIparams があります。これらを指定しておかないとエラーになってしまいます。最初は、AzureStorageAccount です。パラメータ名とパラメータの値を指定します。値については、既にこのポータルに techsnips として入れる予定にしているので、techsnips と入力し、保存して [Add Parameter] をクリックします。次に必要なのは AzureStorageKey なので、パラメータ名にコピーして貼り付けます。storage key のパラメータ値は、Azure Storage Account に行って techsnips に対応するここをスクロールして access key を探します。ここのセッティングで最初のキーを選択し、コピーします。MOVEit に戻ってパラメータ値のフィールドに貼り付けます。もう1つのパラメータは、AzureContainer です。AzureContainer がパラメータ名になります。パラメータ値は、Storage Account で Containers をクリックします。ここでは moveitdemo を使うので、開くと、1つのファイル、thumbnail.png があることが確認できます。これがダウンロード対象のファイルです。パラメータ名と、パラメータ値 moveitdemo を入力し、保存して[Add Parameter] をクリックします。すべてのパラメータが定義されたので、ここの [保存] をクリックして、[Add Process] をクリックします。

デスティネーションの定義

次はデスティネーションの定義です。PowerShell スクリプトでは、実際にどこに行くのかを定義していなかったことに注意してください。AzureStrageBlobContent からダウンロードしますが、ここには miaclient、MIAddFile、cacheFilename とファイル名があるだけで、事実上どこに行くかについては指定されていません。MOVEit 内部の移動すべき場所を指定しなければなりません。それで、デスティネーションのステップを追加することになります。[Step] のプルダウンで [Destination] をクリックし、ここではローカルのフォルダに保存します。ホストを選択することもできますが、詳細を設定しようとするともう1日余分にかかってしまうかもしれません。ここでは、サーバー自体のローカルファイルシステムをディスティネーションにします。[Next] をクリックしてC:\のルートに保存することにしましょう。[Add Destination] をクリックします。カスタムスクリプトを実行してローカルファイルシステムに保存する指定が確認できます。これでタスクの設定が完了しました。

タスクの実行

タスクが設定できたので、タスクを実行します。Task List の中の、今作成したTechSnips Demo の右端の省略記号をクリックし、プルダウンの [Run Task Now] をクリックします。ここに “Running script” が見えます。タスクは、スクリプトの実行を認証してから、それをC:\ のルートにドロップするはずです。この場合、処理されるファイルは1つで、ファイルサイズは49.9kbです。実際に動作したように見えるので、C:\ のルートにドロップしたことを検証しましょう。今サーバー上にいますので、ここに thumbnail.png があるのが確認できます。ファイルサイズは50kに丸められていす。ごまかしがないのを証明するため、これを削除してから、再びそれを実行してみます。…ポップアップしました!毎回 Azure からダウンロードしてそこに入れています。よろしいでしょうか、イプスイッチの MOVEit Automation 2018を使用して、Azure Blob ストレージからファイルをダウンロードする方法をこのビデオで概説しました。

Jeff Edwards

Jeff Edwards is a tech writer and analyst with three years of experience covering Information Security and IT. Jeff has written on all things cybersecurity, from APTs to zero-days, and previously worked as a reporter covering Boston City Hall.