AzureにおけるFISC対応設計の考慮ポイントまとめ

#きっかけ
先日AzureにおけるFISC対応設計について社内セミナーに参加してきました。
AzureでFISC安全対策基準を満たすためのサービスと機能を紹介してもらいましたので、復習の意味も込めてまとめておきたいと思います。

〇こんな方におすすめ
・セキュリティ要件を要する案件に関わる方
・金融業種に関わる方 

#FISCの概要
FISCとは金融情報センター(The Center for Financial Industry Information Systems)のことで、1984年11月に設立された公益財団法人です。

FISCの活動の基本となるのは、金融情報システムに関連する諸問題(技術、利活用、管理態勢、脅威と防衛策等)の国内外における現状、課題、将来への発展性とそのための方策等についての調査研究です。調査研究活動は、会員企業からの派遣者を中心とするスタッフによって支えられており、内容の充実を図るため、国内外の金融機関、メーカー、決済機関、研究機関、学者、専門家等と活発に交流しています。

調査研究から得られた知見は、整理・分析・評価のプロセスを経て、『金融機関等コンピュータシステムの安全対策基準』を始めとする各種ガイドライン等や、調査レポートとして結実し、各種刊行物やセミナーを通じて社会に還元されています。

##FISC安全対策基準
金融機関等コンピュータシステムの安全対策基準(FISC安全対策基準)は前述の通りFISCの代表的な刊行物であり、金融機関等が実施すべきセキュリティ管理策について解説されています。
本書が対象とするセキュリティ管理策は広範囲にわたっており、物理的な管理策から技術的・運用的な管理策まで包括的に解説されています。金融機関のみならず、金融庁の検査官向けのマニュアルにおいて参考図書として紹介されるなど金融・決済領域において広く認知されています。

FISC安全対策基準は1985年12月に初版が刊行され、本記事執筆時（2020年7月）の最新版として、2018年3月に第9版が刊行されています。
第9版では、金融機関等における外部委託の進展やFinTechなどの新技術の活用を踏まえ、外部委託先の統制基準の整理・拡充が図られています。

##FISC安全対策基準とAzure
これに対して2018年5月にMicrosoftも対応を発表しています。
※詳細は以下を参照
https://news.microsoft.com/ja-jp/2018/05/15/blog-fisc-azure-o365/

#考慮すべきポイント　～項目別～
前置きが長くなりましたが、金融システムがパブリッククラウドを導入する際に、考慮すべき設計ポイントが多くあります。
FISC安全対策基準を例にとり、主要な設計の観点とそれを満たすためのAzureのサービス/機能をまとめました。
（随時更新中）

##IDとパスワードの考え方
多要素認証
→Azure Multi-Factor Authentication (Azure MFA)

アプリケーションへのアクセス制御
→条件付きアクセス制御

ユーザーの権限設定
→RBAC
　サブスクリプションのサービス管理者が各ユーザーに適切なロールを割り当てる

AADのID保護
→Azure AD Identity Protection

特権アクセスの管理と制限
→PIM、Just-In-Time特権アクセス


##アクセス履歴の管理
AADには大まかに4種類のログがある。

・サインインログ
Azure AD 認証ログ
-利用ケース
ユーザーのサインインパターンを確認
アプリケーションの利用率（外部レポートと連携）
利用ブラウザ/OSの確認
セキュリティインシデントの調査
失敗したサインインの調査

・監査ログ
Azure ADの管理操作
-利用ケース
セルフサービスパスワードリセットの登録状況
ポリシーの変更を調査
PIMの昇格イベントの調査
ユーザーのプロビジョニング状況の確認

・AAD IPログ
Identity Protection ログ
リスクのフラグ付きユーザーとして注意すべき狙われたアカウントがリストアップされる
リスクイベントとしてリスクの具体的な検知結果が表示される

・PIMログ
Privileged Identity Protection ログ


##データの暗号化と鍵の管理
###Azure上のデータ暗号化技術まとめ（レイヤー別）
・ドキュメントや非構造化データ
Azure Information Protection (AIP) or 3rd パーティソリューション
・アプリケーションレイヤー
BYO Encryption (NET ライブラリ, 持ち込み, etc)
・Azureの各サービスの暗号化
　• SQL Transparent Data Encryption（透過的データ暗号化）, Always Encrypted
　• HDInsight Encryption
　• Azure Backup Encrypted at Rest, Encrypted VM support
・仮想マシン/OS
　• ServerSide Encryption
　• Azure Disk Encryption - <BitLocker [Windows], DM-Crypt[Linux]>　鍵の管理はKeyVault
　• Partner Volume Encryption – <CloudLink® SecureVM,Vormetric, etc.>
　• BYO Encryption – 持ち込みなど
・ストレージ
Azure Storage Service Encryption – <AES-256, Block,Append, and page Blobs>　鍵の管理はMicrosoft側 or KeyVault

###SQLデータベースのデータ保護機能
・行レベルセキュリティ
 ユーザーはポリシー管理者が設定したポリシーで許可された行データにしかアクセスできません
・動的データマスキング
 データマスキングはテーブルと列レベルで定義されたポリシーに基づいて、クエリー結果にリアルタイムに反映されます
 様々な機密データカテゴリー(例: クレジットカード番号、社会保障番号、など) に対して、複数のマスキング関数(例: 全体、部分) を設定できます
・Advanced Data Security
 データベースの潜在的な脆弱性を検出、追跡、修復できるサービスを簡単に構成可能
 データベース内の機密データの自動的な検出、分類、ラベル付け、レポートを行います
 データベースにアクセスしたりデータベースを悪用したりしようとする、通常とは異なる、害を及ぼす可能性のある試行を示す異常なアクティビティを検出します

##ネットワーク環境

●Azure ネットワークのベストプラクティス– Hub & Spoke
ネットワークもセグメンテーションが重要
全体で共有するHubVNETと各システムのあるSpokeVNETの構成をAzureは推奨
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641192/7033f1b4-3020-9eae-31e4-ee36ac5a1ccb.png)
• Hub VNET
　ExpressRoute と接続するゲートウェイやファイアウォール、AD/DNS など
• Spoke VNET
　各システムを設置、Hub VNET とVNET Peering を使って接続

●ネットワークアクセス制限
・Hub VNET
Azure Firewall、ネットワーク仮想アプライアンス(NVA)、
ユーザー定義ルートを使用したカスタムルーティングポリシー、
NSGを使用してトラフィックを制御
・Spoke VNET
PaaSにプライベートリンク接続

●Azure上の通信の暗号化
 Azure 内の通信の暗号化は容易(SSLの利用)
 Azure 各サービスはTLS 1.2
 各PaaSも暗号化対応
 オンプレミスとの接続にはVPNを利用
 アプリケーションは暗号化が前提となるプロトコルで実装する



##不正プログラムの防御、セキュリティ機能

●AzureSecurity Centerによる管理
アンチマルウェアのインストール漏れやマルウェア検知を通知
Microsoft Endpoint Protectionの状況もここで集中監視できる
セキュリティポリシーに従い、各リソースの推奨事項を継続的にチェックすること


##バックアップとリストア
●災害対策
・Azure Site Recovery
Azureやオンプレの仮想マシンや物理サーバをAzure上の別リージョンか別のオンプレサイトに複製し、災害時の切替をサポートする

Azure→Azure
オンプレ→Azure
オンプレ→オンプレ

・Azure Backup
Azureやオンプレの仮想マシンおよびファイルを、Azure上のストレージにバックアップ
VMやシステム全体のDRとして利用する場合はRTO等の要件に応じて前述のASRも検討するのがよい

・データベースサービスのバックアップ


##モニタリング、監視
●Azure Monitor
・機能
Application Insights を使用して、アプリケーションと依存関係の問題を検出して診断します。
Azure Monitor for VMs と Azure Monitor for Containers を使用して、インフラストラクチャの問題を相関付けます。
トラブルシューティングや詳細な診断のために、Log Analytics を使用して監視データをドリルダウンします。
スマート アラートや自動化されたアクションにより、大規模な運用をサポートします。
Azure のダッシュボードとブックにより視覚化を作成します。

Azure Monitor Logs（旧名称：Log Analytics）
VM、オンプレサーバー、Azureサービスの各種ログ、AADのサインインログなどをまとめて収集分析するサービス

●Azureが出力する情報（ログとメトリック）
Activity Logs:リソースに対して外部から実行された書き込み操作で、いつ誰が行ったかを記録するもの
Diagnostic Logs（診断ログ）:各リソースが出力するログ
Metrics:各リソースが出力する数値的に計測された値

●情報の保存先
前述のActivity Logs、Diagnostic Logs、Metricsでそれぞれ異なる。
（詳細）

また、ログの出力先により、利用シナリオが異なる
（詳細）

##ガバナンス
Azure Governance Services
クラウドリソースがコンプライアンス準拠していることを保証するネイティブプラットフォーム

●Azure Policy

●Azure Management Groups

●Azure Blueprints

●Azure Resource Graph

●Azure Cost Management
クラウドの使用状況やリソースコストを分析し、クラウド支出を最適化



#所感
●管理系機能の設計が多くなりがち
システムが複雑になるほどログ周りに手がかかる
VMにこだわりすぎてもユーザー、OS、ミドルウェア管理が発生
→適度なPaaS利用が理想的

以下のようなID 管理の基本原則を徹底するなど運用面でのルールも重要。
・一つのアカウントを複数人で使用しない
・一人に対して複数のアカウントを払い出さない
(AAD の招待機能を活用する)
・Azure SQL 論理サーバーにログインするとき、AAD 認証を使用する
・VM にログインするとき、ローカルアカウントを(極力) 使用しない
(Azure AD ログインVM 拡張機能を使用する)