Azure研究サイト

Azure研究サイト

~理解しずらい情報をシンプルにお伝えします~

Azure構築のセキュリティ対策(アプリ開発寄り)


Azure構築(アプリ開発寄り)のセキュリティ対策を紹介します。
EasyAuth認証、VNet統合、マネージドID、環境変数、Zipデプロイ、KeyVault などの簡単な使い方となぜセキュリティ対策になるのかを簡潔に説明していきます。
 
Defender for cloud や Sentinel などは取り上げません。アプリ開発のAzure構築の参考になればと書いていますのでご理解下さい。

f:id:exemple:plain title=

EasyAuth認証

5分のAzure設定かつプログラムコードを変更することなく、アプリの認証画面を実現するための機能です。

◎ 使い方 ▽ EasyAuthは、AppService/Functions等にデプロイしたアプリに対して簡単にログイン認証を設定できる機能です。AzureポータルでAppService/Functions等の設定ページに移動して、「認証/承認」メニューでEasyAuthを有効にし、Azure ADやFacebook、Googleなどのプロバイダーを選択して設定します。

◎ なぜセキュリティ対策になるのか ▽ EasyAuthを使用することで、認証できたユーザーだけがAppService/Functions等のアプリにアクセスできるようになります。これにより、不正アクセスを防ぎ、アプリケーションのセキュリティを強化できます。

仮想ネットワーク (VNet統合)

Azureリソース同士の通信を暗号化 (VPN) 通信させたい場合に使います。ただ、仮想ネットワークを構築しないデフォルト状態でも、HTTPS通信は行われるのでご安心下さい。

◎ 使い方 ▽ AppService/Functions等を仮想ネットワークに参加させる (VNet統合する) ことで、特定のネットワークからのみアクセスを許可できます。AzureポータルでAppService/Functions等の設定ページに移動して「ネットワーク」メニューでVNet統合を設定します。

◎ なぜセキュリティ対策になるのか ▽ 仮想ネットワークに参加させる (VNet統合する) ことで、AppService/Functions等へのアクセスを特定のネットワークに限定できます。これにより、外部からの不正アクセスを防ぎ、内部ネットワーク内の安全な通信(内部IPでの通信)が行われます。

マネージドID

Azureリソース同士が通信できるようにするための、認証処理です。同じAzureリソース同士とはいえ、各リソースは独立しているので、Azureリソース同士が通信できるようにするための、事前認証処理を指します。事前に行っておくことで、都度認証する必要がなくなるメリットもあります。

◎ 使い方 ▽ マネージドIDを使用すると、AppService/Functions等のリソースが他のAzureリソースにアクセスするための認証情報を安全に管理できます。AzureポータルでAppService/Functions等の設定ページに移動し、「ID」メニューでシステム割り当てマネージドIDを有効にします。

◎ なぜセキュリティ対策になるのか ▽ マネージドIDを使用することで、AppService/Functions等が他のAzureリソースにアクセスするための資格情報や認証処理をコード内にハードコーディングする必要がなくなります。これにより、資格情報の漏洩リスクを減らせて、処理コストも減らせます。

環境変数

よくデータベースのID/パスワードをpropertiesファイルから読み込ませてアクセスメソッドに渡したりしますが、propertiesファイルを使う場合サーバ上に変更・再配置する必要があります。しかし、環境変数は、ポータル画面等で値を設定するのでプログラマ・開発者でなくても値を設定・変更できるメリットもあります。

◎ 使い方 ▽ AppService/Functions等の設定情報や機密情報を環境変数として管理します。AzureポータルでAppService/Functions等の設定ページに移動し、「構成」セクションでアプリケーション設定を追加します。

◎ なぜセキュリティ対策になるのか ▽ 環境変数を使用することで、機密情報をコード内にハードコーディングする必要がなくなります。これにより、機密情報の漏洩リスクを減らし、セキュリティを強化できます。また、設定情報を簡単に変更できるため、運用の柔軟性も向上します。パスワードを開発者にすら見せたくない場合は、KeyVaultと組合せたりします。

KeyVaultの使用

環境変数に似ていますが、環境変数はAppService/Functionsなどく特有の機能に対して、KeyVaultは他のAzureサービスにも汎用的に使えます。

◎ 使い方 ▽ KeyVaultを使用して、機密情報(APIキー、パスワード、証明書など)を安全に管理します。AppService/Functions等からKeyVaultにアクセスするためには、マネージドIDを使用して認証を行います。

◎ なぜセキュリティ対策になるのか ▽ KeyVaultを使用することで、機密情報を安全に保管し、アクセス制御を厳密に管理できます。これにより、機密情報の漏洩リスクを大幅に減らし、セキュリティを強化できます。また、KeyVaultを使用することで、機密情報のローテーションや監査も容易になります。

Zipデプロイ

Zipデプロイにしない場合は、プログラム・設定・データファイルなどがばらばらとAzureサーバにデプロイ (アップロード) されていきます。可能性はほぼないですが盗聴されるリスクがないとも言えなかったり、Azureサーバにデプロイ (アップロード) して後にファイルをいじれる状態になるので変更のリスクがないとも言えなかったりするので、それらのリスクを軽減できたりアプリロードから実行までの時間が早くなったりします。

◎ 使い方 ▽ Zipデプロイを使用すると、アプリケーションのコードと依存関係を一つのZIPファイルにまとめてデプロイできます。AzureポータルやAzure CLIを使用して、ZIPファイルをAppService/Functions等にデプロイします。セキュリティ観点以外は、アプリ起動時間が早くなります。

◎ なぜセキュリティ対策になるのか ▽ Zipデプロイを使用することで、デプロイプロセスが簡素化され、デプロイ時のエラーや不整合を減らすことができます。また、圧縮ファイルが扱われるため、セキュリティリスクを低減できます。

まとめ

これらのベストプラクティスを実践することで、Azure構築のセキュリティを高め、不正アクセスや機密情報の漏洩を防ぐことができます。これらの対策を実施して、安全なサーバーレスアプリケーションを構築しましょう。

ご意見・ご要望はこちらへ