こんにちわ。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はポーリングしている。つまり読みに行ってる。
なんかサブスクライバみたいに動いてる気がするんだよね。(想像)
鋭意頑張ります。