Vuls for Azure できるかな(第2.5回)

こんにちわ。Mr.Xです。

三回目をお届けするにはまだ時間がかかりそうなので、途中経過をさらしておきます。

現状
JSONで出力したものをBlobにアップし、イベントが発生、AzureFunctionsのC#コードでJSONをデシリアライズして、スコアを読み出す。というところまでは成功。
そもそもvulsがEC2にしか対応しておらず、サーバーはAWSとして認識されるわ、インスタンスIDを入れるところに404のメッセージが入るわと、ちょっとした課題にぶつかる。その部分はソースを読み解くとTODOとして対応が記載されており、一旦保留。

ワークアラウンドとしてconfig.tomlに記載するサーバーのラベルを、
%ResourceGroupName%_%VMName%としてコード内でsplitできるようにした。

[servers.vuls-azure_vuls-target]
host    = "10.1.0.1"
port    = "22"
user    = "hoge"
keyPath     = "/home/hoge/.ssh/id_rsa"

※IPアドレス等は適当です。

このあとはこのResourceGroipNameとVMNameを使ってタグを埋める、というところまでいきたい。が、当方C#ど素人なのでいささか苦労している。

以下メモ
・FunctionsはAppServicesの一部で、AppServiceとのセットでのプロビジョングになる。AppService(クラシック)のデフォルトは米国中南部で作られちゃうので、ここは適宜変更しよう。この記事では原則西日本に作ってるよ。
動的を選ぶ場合はリージョンがもっと限られる。
もし動的アプリケーションプランでの作成を望むなら、リージョンに注意してやってみてほしい。

・AWS連携の記事のlambdaコードに

        iid = result['Platform']['InstanceID']

という部分がある。実はAzureのマシンに対しては、バグのために取れない。
Server名ラベルを”ResourceGroup名”_”host名”とすることでWAした。

・CVEScoreは降順に並んでいる。内容はともかく、最高の値が何か、だけを判定している。これはこれで合理的といえる。詳細をレポートするのは別の手段でいいだろう。

・複数のサーバーを対象にした場合、個別のサーバーにファイルが分かれる。
AzureのFunctionsはglobできるだろうか?ここは後の課題とする。

・functionsの関数記述画面のログサービスは時折止まっている。
また、30分たつとそもそもFunctinosが停止してしまうように見える。

・イベントソースとFunctionsの間にキューがいる?
Functionsはポーリングしている。つまり読みに行ってる。
なんかサブスクライバみたいに動いてる気がするんだよね。(想像)

鋭意頑張ります。