1:はじめに
近年、電子メールやSNSを悪用したフィッシング詐欺が急増しています。
本稿では、Google が提供するセキュリティ製品である Web Risk API を利用し、アプリケーションやサービス内で危険な URL を検知する仕組みを構築する方法を解説します。
2:Web Risk APIの概要
Web Risk は、Google が継続的に更新している「安全ではないウェブリソースのリスト」と照合することで、クライアントアプリケーションが URL の安全性を確認できるエンタープライズ向けのセキュリティサービスです。
本 API を用いて、以下の主要な脅威タイプの URL を検出可能です。
- MALWARE (悪意のあるソフトウェア)
- SOCIAL_ENGINEERING (ソーシャルエンジニアリング、フィッシング詐欺など)
- UNWANTED_SOFTWARE (不審または迷惑なソフトウェア)
3:Web Risk の利用形態
Web Risk API には、主に目的に応じた 2つの利用方法があります。
3.1. Lookup API (推奨/手軽な方法) クライアントがチェックしたい URL を直接 Web Risk サーバーに送信し、サーバー側で安全性を判定して結果を即座に返却する方法です。
利点: 実装がシンプルで、迅速に URL の安全性を確認できます。今回の実装例で採用している方式です。
注意点: チェックごとに API コールが発生するため、大量の URL を扱う場合、コスト効率を考慮する必要があります。
3.2. Update API (大規模運用向け) クライアントが、リスクのある URL をハッシュ化したリストを定期的にダウンロードし、ローカルデータベースに保存する方式です。
利点: URL のチェックの大部分をローカルで完結できるため、API コール回数が大幅に削減され、運用コストの最適化につながります。
注意点: 実装が複雑になり、ローカルデータベースの管理が必要になります。
4:事前準備と認証設定
4.1. 必要な Gem のインストール 以下のコマンドを実行し、Web Risk 用のクライアントライブラリをインストールします。
gem install google-cloud-web_risk

4.2. サービスアカウント認証の設定 Google Cloud のクライアントライブラリは、サービスアカウントを用いた認証を推奨しています。
- JSON 秘密鍵ファイルの取得: Google Cloud Console でサービスアカウントを作成し、その JSON 形式の秘密鍵ファイルをダウンロードしてください。

- 環境変数の設定: ダウンロードしたファイルの絶対パスを、環境変数 GOOGLE_APPLICATION_CREDENTIALS に設定します。
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/secret-key.json"
これにより、アプリケーションコードに機密情報を記述することなく、認証を完了できます。
5:実装コード例 (Lookup API)
事前準備が完了したら、Lookup API を用いた URL チェック機能を Ruby で実装します。
require "google/cloud/web_risk"
require "google/cloud/web_risk/v1"
def search_uri(uri, threat_type)
web_risk_service_client = Google::Cloud::WebRisk.web_risk_service
request = Google::Cloud::WebRisk::V1::SearchUrisRequest.new(
uri: uri,
threat_types: [threat_type]
)
begin
response = web_risk_service_client.search_uris(request)
if response.threat && !response.threat.threat_types.empty?
puts "URI: #{uri}"
puts "⚠️ このURLは危ないです:"
response.threat.threat_types.each do |threat|
puts " - #{threat}"
end
else
puts "URI: #{uri}"
puts "✨ このURLは安全です。"
end
rescue Google::Cloud::Error => e
puts "❌ エラー: #{e.message}"
end
end
uri_to_check = "http://testsafebrowsing.appspot.com/s/malware.html"
threat_type = :MALWARE
search_uri(uri_to_check, threat_type)
実行結果(例)

6:まとめ
Web Risk API は、アプリケーションのセキュリティレベルを向上させるための強力なツールです。アプリケーション内での不審なリンクのフィルタリングや、ユーザーへの注意喚起に活用することで、フィッシング詐欺による被害を未然に防ぐことができます。
運用においては、Lookup API の手軽さと Update API のコスト効率を比較し、サービス規模に応じた最適な利用形態を選択することが重要です。