kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure SQL Databaseで一定以上の件数の抽出に対するクエリがあった場合アラートを上げたい

Azure SQL Databaseに対して監査を設定することで、SQL全権抽出した場合などにアラートをあげられるようになりました。プレビューですが、ちょっとやってみましょう。

docs.microsoft.com

f:id:kkamegawa:20210407113645p:plain

Azure SQLの監査を有効にして、Log Analyticsへ送信します。

f:id:kkamegawa:20210407111921p:plain

ログでクエリーを書いてみます。ここではテストデータがしょぼいので、過去12時間に1件以上の抽出があったものだけを対象にしています。

response_rows_dを好きな件数にしてください。

f:id:kkamegawa:20210407111926p:plain

対象のデータベース、対象となったクエリーselect* from Master_Accountなどが確認できます。消してますが、ホストやクライアントIPも出てきます。

クエリーができたので、これでアラートを作ります。

f:id:kkamegawa:20210407121336p:plain

クエリーエディターの脇にある新しいアラートルールをクリックします。

f:id:kkamegawa:20210407111930p:plain

アラートルールの作成画面が出てきます。Log Analyticsでは抽出対象時間を縛っていましたが、ここでは指定せずに単純に1件より多い件数で縛っています。

他にもIPアドレスで縛っているのであれば、そのIP以外とか指定したクライアント以外からのアクセスとか条件を追加すればいいでしょう。

f:id:kkamegawa:20210407111857p:plain

こんな風に直近24時間以内に条件に一致するアラートが検出できています。

f:id:kkamegawa:20210407111936p:plain

ディメンジョン、トリガーする違反数、評価期間を指定します。この辺はAzure Monitorそのものなので、問題ないですね。

f:id:kkamegawa:20210407111911p:plain

アクションを指定します。ない場合はアクショングループの作成から作成できます。

f:id:kkamegawa:20210407111916p:plain

全件抽出とかは重大なインシデントなので、重大度0でアラートルールを指定します。

これでOK…のはずです。

アクショングループの作成

ついでにアクショングループを作成するときです。別のブレードが開きます。

f:id:kkamegawa:20210407111903p:plain

アクショングループ名、表示名を指定します。

f:id:kkamegawa:20210407111907p:plain

通知先を指定します。ここではロールで指定できるので、管理者向けに通報が可能です。

Nested Virtualizationをサポートするクラウドについて

Nested Virtualizationってサポートされているよな?とサポートしたクラウドサービスについてまとめてみました。最近のOS(私が認識しているのはWindowsだけですが)はOSの機能として仮想化を使ってカーネル部分や秘密情報を保護することがあるし、例えばクラウドの開発環境で各種エミュレーターやWSL2が動けば便利です。

VMなので、各社それほど劇的に変わるとは思えないですが、一応2021/3/16時点の情報です。

Google

cloud.google.com

Linuxをデプロイした場合に限り、Nested Virtualizationをサポートします。Windowsのデプロイではサポートされません。

IBM

cloud.ibm.com

VPCのGen2でなおかつ、自分で有効化すれば使えるようですね。あと、ライブマイグレーションは使えないとのことです。

Alibaba

topic.alibabacloud.com

自分で有効化すれば使えるそうです。ドキュメントではKVMに準じるそうです。

AWS

aws.amazon.com

ベアメタルインスタンス以外では使えないようです。この点結構会社の人から相談を受けて「ベアメタルじゃないと使えないですね」と言って泣かれることが多いAWSです。

Oracle

blogs.oracle.com

docs.oracle.com

Oracle Linux 7.x以降であればサポートされているそうです。それ以外の環境はKVMのサポート状況に準じると。

Azure

docs.microsoft.com

DやEであればv3もしくはv4とついたインスタンスでサポートされます。aシリーズ(AMDプロセッサー)に関してはWindowsの場合Windows 10 20H2(ビルド19636以降)じゃないとNested Virtualizationサポートされないはずです。

techcommunity.microsoft.com

まとめ

意外とNested Virtualizationサポートしていますね。設定が必要なクラウドサービス多いけど、みんなが使うものじゃないから仕方ないですかね。

自宅でMCP試験を受けてみた

昨年のIgniteやBuildでもらったバウチャーの有効期限が近づいてきたので、MCPを受験しようと思ったものの、このCOVID-19環境下ではテストセンターに行く気にもなれず、意を決して自宅受験することにしました。いくつか自宅受験のブログも読みましたが、私のほしい情報がなかったので、自分でも書いてみます。ちなみに受けたのはAZ-104。毎日ポータル使って基本的な管理作業している人なら試験対策はいらないでしょう。

Learnのコンテンツも見たつもりですが、あれだけだとちょーっと足りないなぁと思います。

部屋の準備

www.pearsonvue.co.jp

ここにまとまっています。ひとりになれる部屋でかつ、机の上にメモ帳、筆記用具以外のものがない状態であれば、部屋の中にたくさんの本、ガジェットがあっても(もちろん手の届かないところへ移動)受験NGとは言われませんでした。

証明書とか部屋の写真撮影とかで地味に時間がかかるので、遅くとも前日までに机の上を片付けておきましょう。いわゆるクリーンデスクになっていれば大丈夫です。

今日は家族がいる日だったので、「私が部屋から出てくるまで、一切声をかけないで」とお願いしていました。子供が帰ってくるような時間帯だと「おかえり」とか言わないといけないので(発声NGです)、試験時間帯を充分選びましょう。

PC環境

事前準備でチェックできるので、ぜひやっておきましょう。安定したネットワーク回線が要求され、有線推奨されているので、有線でやりましたが、後の環境チェックの時に無線にしておけばよかったかと思いました。

外付けのモニターはNGで、繋いでいないモニターがあった場合、「モニターの電源コンセントを抜け」と言われます。3枚あるので大変でした。別マシン用のキーボードも机の下に片付けておきます。

今回ThinkPad X1 Extreme Gen1の4Kでやったのですが、絶対に4Kでやらない方がいいです。大きいモニタでも、試験のアプリがHighDPI対応していないせいで、文字がぼやけるわ、拡大されないわ、ひどい目に遭いました。ずーっと目を細めて睨めっこ。

試験センターでもWXGA程度の解像度でやっているので、WXGAか最悪でもFull HD程度に落とさないと辛いでしょう。真ん中にある監視用のカメラとマイクの画面が常時真ん中で見づらいと思ったんですが、試験の最後の方でマウスで移動できると知りました…。

試験前準備

日本語を選んでいたので、日本語ができる中国人のような名前の方とチャットで色々やりとりします。なれてないと何気に時間かかるので、チェックインOKとなる30分前からすぐに始めるのがいいです。

部屋と証明書の写真アップロード完了して、テストセンター側で確認できると、環境準備完了となります。その後、人間が実際に部屋の状態が写真と同じかチェックされます。部屋があまりに汚いと恥ずかしいw。その際、テストで使うPCで部屋の様子をゆっくり見せるのですが、PCに内蔵しているカメラを使ったので、15インチのPCでしかも有線状態なので、撮影しづらくて仕方がなかったです。解像度低くてもいいので、外付けのWebカメラ使った方がいいかもしれません。

試験中

  • FAQにも書いていますが、カメラのフレームから外れるとダメなので、トイレは事前にいっておきましょう。
  • 独り言もダメなので、考えるときに喋る癖がある人は気をつけましょう。何度かしゃべりそうになりました。
  • 考え事するときに手を口に当てる癖があるのですが、試験中にチャットで警告喰らいました。一本指で痒い所をかくくらいは何も言われませんでした。
  • フレームから顔が外れなければ足を組み替えるとか、手を膝に乗せるくらいは大丈夫みたい。
  • やってないけど、多分下を向いたらダメじゃないかな

試験問題

内容はもちろんかけませんが、普段からAzureポータルで権限やVMの管理している人なら多分対策なしでもいけるでしょう。

複数のセクションに別れていて、一つ進むと戻れません。二番目以降のセクションがあるの忘れていて、危うく時間配分間違える所でした。ゆっくり最初のセクション見直して、「これで終わりかー」と思ったら次が出てきて焦ったみたいな。問題少なくて助かりましたけど。

残り40分くらいかな?余りましたけど、715点でなんとか合格。9:45開始で終わったのはちょうど12時でした。

所感

試験受けるのはやっぱテストセンターの方が楽ですねぇ。ただ、現地まで移動もあるし、テストセンターは他の試験もやっていて、なかなか希望の枠取るのが難しい。

対してオンラインであれば割と融通きく時間が取れるし、何より現地に行かなくていいので、時間的には助かりますね。往復2時間くらいは使うでしょうし。会社行く途中とかにあればともかく、このご時世でわざわざ出るのはちょっとね。

今回はなかったですが、試験によってはキーボード入力しないといけないものもあります。他の試験は知らないですが、MCPに関しては、英語ベースで作られているので、キーボードが英語前提になっています。なので、テストセンターには英語キーボード用のマッピングシートが置かれていたりします。なれてないとなかなかストレスですが、個人のPCならばなれているので、そういう問題がないのもいいですね。

Azureのサブドメイン乗っ取りを防ぐための検証スクリプトを実行してみる

Azureからこんなメールが来ていて何事かと思いました。

Important security information regarding your organization's subdomain(s)

This email notification has been sent to each Global Administrator(s) and/or Technical Contact of your Azure Active Directory tenant. 

Our security team has identified specific Domain Name System (DNS) subdomains that belong to your organization's Azure Active Directory tenant, that have been left dangling (not mapped to an active Azure resource). We want you to be aware of this issue, as dangling DNS entries can pose a security risk. 

Summary of Issue: 
Dangling DNS starts when custom DNS from your domain's DNS zone is mapped to a DNS CNAME record of an Azure resource that is no longer provisioned, leaving the associated domain "dangling". This dangling DNS entry, also known as a dangling domain, leaves the domain vulnerable to a malicious action known as a subdomain takeover. When a subdomain takeover occurs, a malicious actor takes control of the domain which was previously associated with your deprovisioned Azure resource. By gaining control, malicious actors can intercept traffic intended for that endpoint and/or offer malicious contraband content from that endpoint. The potential impact may vary depending on the architecture of your application. 

ちょっと前話題になったこの件だと思います。

nakedsecurity.sophos.com

MSのセキュリティブログからも案内が出ています。

msrc-blog.microsoft.com

公式のdocsも出ています。

docs.microsoft.com

難しそうに見えるのですが、要はGitHubからPowerShellをダウンロードして実行して確認しましょう、ということなので、やってみます。

github.com

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Azure/Azure-Network-Security/master/Cross%20Product/Find%20Dangling%20DNS%20Records/Get-DanglingDnsRecords.ps1" -OutFile "Get-DanglingDnsRecords.ps1"

ダウンロードしたPowerShellをとりあえず実行してみます。実行するときにはGlobal Tenant Admin(テナント全体管理者)権限が必要になります。

 .\Get-DanglingDnsRecords.ps1 -FetchDnsRecordsFromAzureSubscription  

f:id:kkamegawa:20201202144705p:plain

とりあえず大丈夫っぽい。実行するときは現在の既定のサインイン情報を使うようで、実行時認証指定できない…のかな?おそらく事前にlogin-azaccountしていればいいのかなと思います。ぜひチェックしておきましょう。