こんにちは、佐藤です。第4回はオンプレミスでは必要なかったセキュリティのポイントをご紹介します。
そもそもシステムのセキュリティとは?
セキュリティは「守る対象」と攻撃経路を含む「驚異」との掛け合わせに対して対策が必要になります。
そのため、守る対象が減ればそれだけ必要な対策が減り、コストや運用負担が軽減できますので、最大のセキュリティ対策はシステムをシンプルに保つとも言えるかもしれません。例えばPaaSを利用してOSやミドルウェアの対策をクラウドに任せる、ネットワーク構成をシンプルにして守る境界点を少なくするというイメージです。
今回はクラウドに移行したシステムがオンプレミスではなかった「守る対象」と「驚異」について紹介し、Azureでの具体的な対策方法について紹介していきます。
IDと権限の管理
クラウドはインターネットからアクセスし、簡単にサーバーを作成したり、ファイアウォールの設定変更を行ったりできますが、反面、ユーザ権限やネットワークのセキュリティ設定に穴があると重大なセキュリティインシデントを引き起こします。
ここで重要になるのが、Azureへアクセスする「IDと権限の管理」です。これはサーバーやアプリケーションにアクセスするためのIDと権限ではなく、Azureの管理ポータル、またはCLIなどからAzure上のリソースを制御するためのものです。IDと権限が十分に設計、設定されていないとどんなにアプリケーションやデータベースのセキュリティ対策が行われていても、簡単に重要なデータを盗まれてしまったり、改ざんされるリスクがあります。特にゼロトラストが基本となっている今日のシステムでは強すぎる権限を与えない、ログは必ず残し追跡できる仕組みを実装しておくのが重要です。
AzureでのID管理はAzure AD、権限はRBAC(Role Based Access Control)で制御します。
また、IDが乗っ取られないよう多要素認証や接続元IP Addressをしぼっておくというのも有効です。特に権限の強い管理者アカウントはしっかりと対策を入れておくことをおすすめします。
- 多要素認証
- 接続元IP Address
- Just-in-Time
- 強固なパスワードポリシー
- 定期的なパスワード変更の強制
など
同時に、だれが(Who)が、いつ(When)、何を(What)、どこから(Where)操作したかのログについてはActivity Logとして既定で保存されていますが、保存期間が限られているためLog Analyticsに保存しておくと良いでしょう。保存期間を伸ばせるだけでなく、様々な条件文をクエリで記載して検索できる、定義した条件を定期的に確認してアラートを発砲する、などの機能も利用できますので、怪しい挙動があった場合には調査、検知できるようにしておくと安心です。
PaaSでのネットワーク制御
PaaSは既定ではプライベートネットワークであるVnetに所属しないサービスがほとんどです。PaaSを利用することのメリットは大きいのですが、ネットワークセキュリティの観点ではIaaSやオンプレミスにはなかった検討が必要になります。具体的にはシステムのセキュリティ要件で「サーバーやデータベースへのアクセスはプライベートネットワークを経由すること」のような記載があった場合、PaaSではVnetに接続させる必要があります。
例えば、Web AppからVnet内にある仮想マシンにプライベートネットワークでアクセスしたいという要件があったとします。Web Appは既定ではグローバルIP Addressを持ち、Outbound通信もグローバルネットワークでのアクセスを前提としたサービスですが、Vnet Integration(Vnet統合)という機能を利用することでこの要件を満たすことができます。
Vnet IntegrationはOutbound通信をプライベートネットワークに制限する機能ですが、Inbound通信はPrivate Link/Private Endpointを利用します。
例えば、Vnet内にある仮想マシンからSQL DatabaseやBlobにプライベートネットワークでアクセスしたいという要件などです。
このとき、SQL DatabaseやBlob側の設定でグローバルアドレスからの通信は拒否するようファイアウォールの設定を変更しておく必要があります。
PaaSでのアプリケーション制御
Web AppやBlobなどPaaSのサービスにはOS、ミドルウェアには利用者はアクセスできないため、オンプレミスやIaaSの仮想マシンで利用していたエージェントタイプのセキュリティ対策はどうすればよいでしょうか?
例えば、エージェント型のIDSを入れたい、マルウェアが仕込まれたファイルを検知したい、などの場合です。細かな要件には対応できない場合もあるのですが、要件が合えばMicrosoft Defender for 〜の利用が有効です。最近名前が変わっているのですが、以前はAzure Defender for 〜と呼ばれていたものです。守る対象となるサービスにより様々なプランが用意されています。
- Microsoft Defender for servers
- Microsoft Defender for App Service
- Microsoft Defender for Storage
- Microsoft Defender for SQL
- Microsoft Defender for Kubernetes
- コンテナー レジストリ用 Microsoft Defender
- Microsoft Defender for Key Vault
- Microsoft Defender for Resource Manager
- Microsoft Defender for DNS
例えば、Web Appで構成されたWebサービスのアプリケーションでIDSの要件があったとします。Azure Firewallを導入するのもよいのですが、高価なためシステムによってはそこまで必要ないという場合もあります。こういった時はMicrosoft Defender for App Serviceを利用することで、脅威を検出することができます。ただし、IPS(検知した驚異に対してブロック)が必要な場合はこちらでは機能が足りていないため、Azure FirewallやCiscoなどのNVA(Network Virtual Appliance)の利用を検討してください。
また、Blobにマルウェアが仕込まれたファイルが無いかを検知したい場合は、Microsoft Defender for Storageが有効です。こちらもチェックを行うタイミングを任意にスケジュールできない、検知のロジックをチューニングできないなど仕様制限がありますので、実際利用を検討する際は仕様が要件に合うか確認しましょう。
参照:https://docs.microsoft.com/ja-jp/azure/defender-for-cloud/defender-for-storage-introduction
Azureでセキュリティを考慮する際に外せないサービス
最後にAzureを利用する上で重要なセキュリティサービスをご紹介します。
- Microsoft Defender for Cloud
Azure Security Center と Azure DefenderがMicrosoft Defender for Cloudという名前に変わり、統合的なセキュリティ管理を行うソリューションになっています。
具体的にはセキュリティの状態をスコア化する評価、推奨対策事項のレポートやJust-in-time(必要な時に必要な権限を付与する機能)による保護、前述のMicrosoft Defender for App Serviceなどの機能による防御が行えます。
参照:https://docs.microsoft.com/ja-jp/azure/defender-for-cloud/defender-for-cloud-introduction
- Managed ID
例えば、仮想マシンからBlobにアクセスする際、Blobへのクレデンシャル情報(ID、PWなど)をVMが知っている必要があります。この情報がアプリケーション内で持っているとコードが何らかの理由で流出した際、第三者がBlobにアクセスできる可能性があります。もちろんBlob側でネットワークプレイヤーでアクセス制御をしておけばリスクは軽減できますが、そもそもクレデンシャル情報が流出しない仕組みを仕込んでおくことが重要です。
Managed IDはVMにBlobにアクセスするための権限を付与することができ、アプリケーションが直接クレデンシャル情報をしらなくてもBlobにアクセスできる仕組みです。対応しているAzureサービスは限られていますが、利用できるサービスではManaged IDを有効化してアクセスするのがよいでしょう。
まとめ
今回はオンプレミスでは必要なかったクラウドならではのセキュリティのポイントをご紹介しました。オンプレミスで培ったセキュリティ対策に加え、クラウドで追加される「守る対象」を保護し、効率的な対策を導入することで安心してシステムを運用することができます。
セキュリティ対策はどこまでやっても完璧ということはありません。また、限られた予算・人員で運用する必要がありますので抜け漏れが無い様、「守る対象」と「驚異」を整理し、優先度を決めた上で合理的に対策していきましょう。
近年のAzureはセキュリティ機能が日々アップデートされ進化がとても早いです。Azureの公式サイトのアップデート情報やBlog記事を定期的に確認して、活用できるアップデートをキャッチしていきましょう!