Google Cloudを運用する上で、Googleアカウントの管理は欠かせません。しかし、組織では、退職者やプロジェクトを離れたメンバーのアカウントが、使われないまま放置されていることがあります。
実は、こうした「休眠アカウント」はサイバー攻撃の格好の標的となり、不正アクセスの入り口として悪用される危険性があります。IAMの権限設定が複雑化し、どのアカウントがアクティブなのか把握しきれず、リスクに気づけないケースも少なくありません。
そこでこの記事では、不正ログインなどの不審なアクティビティを早期に検出できるよう、Googleアカウントの認証ログを取得・管理する方法を分かりやすく解説します!
ぜひ、最後までご覧いただけると嬉しいです!
不正アクセスの兆候とは
「Googleアカウントが不正アクセスされた!」
そんなニュースを目にしても、「自分には関係ない」と思っていませんか。もしそうなら、それは大きな間違いです。日々巧妙化するサイバー攻撃は、もはや他人事ではありません。あなたのGoogleアカウントも、いつの間にか攻撃者の標的になっているかもしれません。
では、なぜGoogleアカウントが狙われるのでしょうか。それは、Googleアカウントがあなたのデジタルライフの「鍵」となるからです。Gmailのメール内容、Google Driveに保存された個人情報や機密ファイル、Google Photosのプライベートな写真、YouTubeの視聴履歴、そしてクレジットカード情報まで紐付いているGoogle Payなど、数え上げればきりがありません。 Googleアカウントが乗っ取られることは、あなたのデジタルライフすべてが乗っ取られることに等しいのです。
想像してみてください。ある日突然、身に覚えのないメールがあなたのGmailから送られていたり、Google Driveに保存していたはずのファイルが消えていたり、あるいは見知らぬ場所からログイン通知が届いたりしたら…? それは、あなたのGoogleアカウントが不正アクセスの危機に瀕している、あるいはすでに被害に遭っている兆候かもしれません。
なぜ認証ログの確認で不正アクセスを防げるのか
前章で、あなたのGoogleアカウントがいかに多くの情報と紐付いており、不正アクセスがいかに深刻な被害をもたらすかをご理解いただけたかと思います。では、こうした見えない脅威に対し、私たちはどのように対処すればよいのでしょうか。その答えの一つが、認証ログの確認です。
「ログを確認する」と聞くと、難しく感じるかもしれません。しかし、認証ログは、あなたのGoogleアカウントに誰が、いつ、どこから、どのような方法でアクセスしたかという、まさにアクセスの履歴を記録したものです。この履歴を定期的に確認することは、不審な動きを早期に察知し、不正アクセスを未然に防ぐための強力な手段となります。
不正アクセスを早期発見する「タイムマシン」
不正アクセスは、多くの場合、最初はごく小さな、あるいは見過ごされがちな兆候から始まります。例えば、普段使わないデバイスからのログイン試行、身に覚えのない場所からのアクセス、あるいは短時間に何度もログインに失敗している記録などです。これらは単体では些細なことのように見えても、認証ログを継続的に確認することで、それらの兆候が「異常」として浮かび上がってきます。
認証ログは、まさにあなたのGoogleアカウントのセキュリティにおける「タイムマシン」のようなものです。過去のアクセス履歴を振り返ることで、不審なパターンや異常なログイン活動を特定できます。これにより、被害が拡大する前に、パスワードの変更や二段階認証の設定など、適切な対策を講じることが可能になります。
ログ分析で攻撃者の「足跡」を追う
攻撃者は、あなたのGoogleアカウントに侵入するために様々な手法を試みます。パスワードの総当たり攻撃、フィッシング詐欺による認証情報の窃取、マルウェア感染による情報漏洩など、その手口は多岐にわたります。しかし、どのような手法を用いたとしても、最終的にはGoogleアカウントへの「アクセス」を試みるため、その痕跡は必ず認証ログに残ります。
認証ログを分析することで、攻撃者がどのようなIPアドレスからアクセスを試みたのか、どのデバイスを使用したのか、どのような時間帯に活動していたのかなど、攻撃者の「足跡」を具体的に把握できます。これらの情報は、単に不正アクセスを防ぐだけでなく、将来的な攻撃に対する防御策を強化するための貴重なデータにもなります。
「認証ログの確認」は、決して専門家だけが行うべきことではありません。私たち一人ひとりが、自分のGoogleアカウントを守るためにできる、最も基本的で効果的な対策なのです。次の章では、Google アカウントの認証ログを取得する方法について説明します。
Google アカウントの認証ログを取得する方法
それでは、Google アカウントの認証ログを取得する方法を説明します。方法は、全部で4ステップです。
- Google アカウントの認証ログをGoogle Cloud Platformと共有
- Google Cloudでログバケットの作成
- 組織階層でログシンクの設定
- 動作確認
1つずつ詳しく説明します。
1. Google アカウントの認証ログをGoogle Cloud Platformと共有
まずは、Google アカウントの認証ログをGoogle Cloudのログと共有する設定を行います。Google アカウントの認証ログは、Cloud Identity(またはCloud Workspace)にも保存されますが、長期保存を行うのであれば、Google Cloud Platformに保存するのをおすすめします。
また、Cloud Identity(またはCloud Workspace)でGmailが利用できない場合、アラート発報に関するメール通知を行うことができませんので、Google Cloud Platformに共有しなければいけません。
Google Admin コンソール(admin.google.com)にログインします。

サイドバーから「アカウント→アカウント設定」を選択します。

「法とコンプライアンス」を選択します。

「共有オプション」を選択します。

「有効」を選択し、「保存」を選択します。

「Google Cloud Platformの共有オプション」が「有効」になっていることを確認します。

以上で、Google アカウントの認証ログをGoogle Cloudのログと共有する方法は終わりになります。
2. Google Cloudでログバケットの作成
次は、Google Cloudでログシンクの設定を行います。ログシンクでCloud Storageに保存すると、長期にログを安価に保存することができます。逆に、リアルタイム診断などを行いたい場合は、BigQueryに取り込むことで可能になります。
今回は、Cloud StorageにGoogle アカウント認証用長期保存のためのログバケットを作成します。
まずは、Google Cloudコンソール(console.cloud.google.com)にログインします。

検索窓からCloud Storageを検索するか、サイドバーからCloud Storageのバケットを選択し、「作成」を選択します。

ログバケット名は、任意で入力します。ログバケットは、世界中でユニークにする必要があります。その後、「続行」を選択します。

データの保存場所を選択します。今回は、シングルリージョンで「asia-northeast1(東京)」にしています。選択後、「続行」を選択します。

ストレージクラスを選択します。今回は、コスト面を考えてNearlineを選択していますが、頻繁にアクセスする場合は、「Standard」、あまりアクセスしない場合は、「Coldline」や「Archive」を選択します。

アクセス制御の設定をします。不特定多数のユーザーにバケットをアクセスさせない場合、「パブリックアクセスを禁止する」をオンにします。また、オブジェクトレベルのアクセス制御を行わない場合、「均一」を選択します。選択後、「続行」を選択します。

オブジェクト データの保護を設定します。オブジェクトを削除した後、何日間、そのオブジェクトを復旧できる予備期間として設定するかです。初期設定は、7日間です。今回は、初期設定にしています。
上記設定は、期間がたつとオブジェクトを復旧することはできなくなりますが、コンプライアンス用にオブジェクトの削除を制限したい場合、「保持(コンプライアンス用)」を使用します。この設定を有効にすると、指定した期間が経過しないとオブジェクトを削除できなくなります。データの改ざんを防ぐためにも、この設定を有効にすることをおすすめします。今回は、5年で設定しています。

最後に、データ暗号化の設定をします。今回は、Google が管理する暗号鍵を使用します。選択の確認後、「作成」を選択します。

「パブリック アクセスの防止」に関する確認メッセージが表示されます。「確認」を選択します。

正常にバケットが作成されたかを確認します。

以上で、Google Cloudでログバケットの作成は終わりになります。
3. 組織階層でログシンクの設定
次は、ログシンクの設定を行います。Google アカウントの認証ログの場合、ログシンクは、プロジェクト階層ではなく、組織階層で行う必要があります。
まずは、組織を選択します。

検索窓から「ログルーター」を検索して開くか、サイドバーから開きます。その後、「シンクを作成」を選択します。

シンク名を任意で入力し、「次へ」を選択します。

シンクサービスの選択で「Cloud Storageバケット」を選択します。

「Cloud Storage バケット」で「プロジェクトのCloud Storage バケットを使用する」を選択します。

サイドバーから、先程作成したCloud Storageのバケットを選択します。すると、「シンクの宛先」に先ほど作成したCloud Storageバケットが選択され、「シンクサービスの選択」が「その他のリソース」になります。Google Cloudでは、同階層にないリソースを選択する場合、「その他のリソース」になります。「次へ」を選択します。

「シンクに含めるログの選択」では、「このOrganizationにより取り込まれたログのみを含める」を選択し、包含フィルタの作成には、以下を入力します。
organizations/組織番号/logs/cloudaudit.googleapis.com%2Fdata_access
OR
organizations/組織番号/logs/cloudaudit.googleapis.com%2Factivity
なお、organizations/の以下は、自Google Cloudの組織番号を入力してください。プロジェクトの選択画面や「リソースの管理」で確認することができます。
この2つの設定について説明します。
[organizations/組織番号/logs/cloudaudit.googleapis.com%2Fdata_access
]は、Google アカウント(ユーザー)が、どのデータにアクセスしたかが分かります。
[organizations/組織番号/logs/cloudaudit.googleapis.com%2Factivity
]は、どのGoogle アカウントがログインを試行したかがわかります。
ORを使用しているのは、両方のログを収集することで、認証からデータアクセスまでの一連の行動を漏れなく監視し、セキュリティインシデントの調査や監査に備えることができるからです。

「シンクに含めないログ」は設定しません。最後に「シンクを作成」を選択します。

以上で、組織階層でログシンクの設定は終わりになります。
4. 動作確認
正常に設定されると、以下のようにログバケットにログが保存されます。

実際の認証ログは、以下になります。一部マスキングしています。
[principalEmail]や[callerIp]情報から、誰がどのIPアドレスからログインを試みたかが分かります。また、[eventName]によってログインの成功・失敗を確認できるため、複数回失敗している場合は、不正ログインの可能性があると判断できます。
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "*********************@hajimenoit.com"
},
"requestMetadata": {
"callerIp": "*********************",
"requestAttributes": {},
"destinationAttributes": {}
},
"serviceName": "login.googleapis.com",
"methodName": "google.login.LoginService.loginSuccess",
"resourceName": "organizations/*********************",
"metadata": {
"activityId": {
"uniqQualifier": "*********************",
"timeUsec": "*********************"
},
"@type": "type.googleapis.com/ccc_hosted_reporting.ActivityProto",
"event": [
{
"eventId": "*********************",
"eventName": "login_success",
"parameter": [
{
"label": "LABEL_OPTIONAL",
"name": "login_type",
"type": "TYPE_STRING",
"value": "reauth"
},
{
"type": "TYPE_STRING",
"multiStrValue": [
"password"
],
"label": "LABEL_REPEATED",
"name": "login_challenge_method"
},
{
"boolValue": false,
"type": "TYPE_BOOL",
"name": "is_suspicious",
"label": "LABEL_OPTIONAL"
},
{
"value": "*********************",
"type": "TYPE_STRING",
"label": "LABEL_OPTIONAL",
"name": "dusi"
}
],
"eventType": "login"
}
]
}
},
"insertId": "*********************",
"resource": {
"type": "audited_resource",
"labels": {
"method": "google.login.LoginService.loginSuccess",
"service": "login.googleapis.com"
}
},
"timestamp": "*********************",
"severity": "NOTICE",
"logName": "organizations/*********************/logs/cloudaudit.googleapis.com%2Fdata_access",
"receiveTimestamp": "*********************"
}
以上で、動作確認の説明は終わりになります。
まとめ
今回は、下記3点について説明しました。
- 不正アクセスの兆候とは
- なぜ認証ログの確認で不正アクセスを防げるのか
- Google アカウントの認証ログを取得する方法
組織においてGoogleアカウントの認証ログを管理することは、不正ログインなどのセキュリティインシデントを早期に発見するために非常に有効です。認証ログには、接続元のIPアドレスやログインの成功/失敗といった情報が記録されており、これらをもとに不正アクセスの有無を確認することができます。
しかし、実際にこうした設定を行っている企業はごくわずかです。本ブログでは、その設定方法を紹介していますので、ぜひ参考にして、Googleアカウントの認証ログの取得と管理に取り組んでみてください。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!