1. 導入:なぜIPアドレス制限が重要なのか
現代のDevOps環境において、SaaSやクラウドサービスを利用した開発は当たり前となりました。しかし、利便性の裏側で常に懸念されるのが「不正アクセス」のリスクです。パスワード漏洩などの事故が起きた際、攻撃者は世界中どこからでも社内リソースにアクセスできてしまいます。そこで有効なのが「IPアドレス制限」です。特定の信頼できるネットワーク(社内オフィスやVPNゲートウェイなど)からのみアクセスを許可することで、物理的な境界外からの侵入を未然に防ぐ、防衛の要となる技術です。
2. 基礎知識:IPアドレス制限とは
IPアドレス制限とは、リクエスト元のグローバルIPアドレスを検証し、ホワイトリストに含まれている場合のみ通信を許可する仕組みです。
・グローバルIPアドレス: インターネット上で一意に識別されるアドレスです。
・ホワイトリスト方式: 許可するIPアドレスのみを事前に登録し、それ以外をすべて拒否する設定手法です。
・動的IPアドレスの課題: 一般的なオフィス回線はIPアドレスが変動することがあります。制限を導入する際は、固定IPアドレス(固定IPオプション)を使用するか、VPN経由での固定化を検討する必要があります。
3. 実装/解決策:nginxを用いたIPアドレス制限
実務では、アプリケーション側で実装するよりも、フロントエンドのWebサーバー(nginxなど)で制御するのが効率的です。これにより、アプリケーションの負荷を軽減し、認証前段階で不正アクセスを遮断できます。
以下に、特定のIPアドレス(例:社内ネットワーク)のみ許可するnginxの設定例を示します。
4. サンプルプログラム:nginx.confの設定例
server {
listen 80;
server_name example.com;
location / {
# 1. 許可する社内ネットワークのIPアドレスを指定(CIDR表記も可)
allow 192.168.1.0/24;
# 2. 上記以外の全てのアクセスを拒否
deny all;
# 3. 許可されたアクセスに対するプロキシ設定
proxy_pass http://backend_app;
# 4. ログへの記録(監査のため重要)
access_log /var/log/nginx/access.log combined;
}
}
5. 応用・注意点:現場で陥りやすい罠
実務でIPアドレス制限を導入する際、以下のポイントに注意してください。
・プロキシ環境の考慮: AWSのALB(Application Load Balancer)やCloudflareなどのCDNを経由している場合、nginxが受け取るIPアドレスは「ロードバランサーのIP」になってしまいます。この場合、リクエストヘッダーの「X-Forwarded-For」を確認する必要があります。`set_real_ip_from` ディレクティブを使用して、正しいクライアントIPを特定するように設定してください。
・保守運用の罠: ネットワーク構成変更時にIPアドレスの更新を忘れると、チーム全員がアクセスできなくなる「締め出し」が発生します。必ず緊急時のアクセス用バックアップ経路(特定の管理端末のみ許可するなど)を確保しておくことが、DevOpsエンジニアとして重要なリスク管理です。
・設定の自動化: 数十拠点ある場合は手動管理は不可能です。TerraformなどのIaC(Infrastructure as Code)ツールを用いて、IPリストを外部変数化し、CI/CDパイプライン経由でデプロイする運用をお勧めします。

コメント