森田 嶺

知らないと怖い、GASのセキュリティリスク。情シスが押さえるべきポイント

知らないと怖い、GASのセキュリティリスク。情シスが押さえるべきポイントサムネイル画像

Google Apps Script (以下、GAS) は、Google アカウントがあれば、すぐにでも始められるローコード・プラットフォームです。サーバーレスで動作するため、ユーザーがインフラ環境を用意する必要はありません。Google CloudにはCloud RunやCloud Functions等、様々なサーバーレスサービスが存在しますが、手軽さを考えると(もちろん要件によりますが)私が一番最初にチョイスするのはGASが多いかもしれません。また、JavaScriptでコードが書けるため、Webで調べれば、基本的な構文はすぐに学習することができます。GASは初めてプログラミングを始める方にとっても、丁度良いプラットフォームであるとも言えます。

そういったGASの特徴は、プログラミング専門家ではない従業員でも、自身の業務改善ツールを容易に作成できるという、いわば「プログラミングの民主化」とも言える大きなメリットをもたらします。

しかし、この手軽さの裏には、見過ごすことのできないセキュリティリスクが潜んでいます。GASはその便利さ故に、権限の取り扱い、コードの安全性、アクセス制御の不備といった複数のリスク要因を孕んでいます 。

本記事では、情報システム部門の担当者様が、GASの活用に際して直面しうるセキュリティリスクと考えられる対策方法について解説します。

GASの潜在的な脅威とは何か

GASを組織で活用する場合の、潜在的なリスクはどのようなものがあるでしょうか。考えられるリスクを以下表にまとめてみました。

潜在的リスク

概要

過剰なアクセス許可

GAS実行者が持つ権限によって起こり得るリスク

認証情報の不適切な管理

外部サービスとの連携で利用するAPIキーの不適切な管理による起こるリスク

外部ライブラリとの依存関係

外部で公開されているライブラリを組み込むことで起こりえるリスク

利用者の教育不足

GASの利用者への教育不足によって発生するヒューマンエラーリスク

まずは、どのようなリスクがあるのかを全体像を把握していただき、次章からは各リスクの詳細を説明します。

過剰なアクセス許可によるリスク

GASのセキュリティを考える上で最も基本的ながら重要なのが、権限管理の問題です。GASは、スクリプトを実行するユーザーのGoogleアカウント権限で動作します。これは、スクリプトがユーザー本人と同等の操作を行えることを意味します。

そのため、スクリプトに必要以上の広範な権限(過剰な権限)を与えてしまうと、意図しないデータの削除、改ざん、あるいは外部への情報漏洩といった重大なインシデントに繋がる可能性があります 。例えば、メール送信権限を持つGASに悪意のあるコードや意図しない不具合のあるコードが仕込まれていた場合、ユーザーの知らぬ間に大量の迷惑メールを送信したり、機密情報を含むメールを外部に送信したりする事態も起こり得ます 。  

また、GASスクリプトや、それが関連付けられているGoogleドキュメント、スプレッドシート、スライドなどのコンテナファイルは、Google Workspaceの共有機能を介して、作成者以外のユーザーとも容易に共有し、共同で利用することが可能です。この共有機能はコラボレーションを促進する一方で、アクセス権の設定を誤ると、意図しない第三者によるスクリプトへのアクセスや悪用を許し、深刻な情報漏洩に繋がる危険性があります 。特に、機密情報を含むスプレッドシートを操作するGASを、不適切なアクセス制限のまま広範囲に公開してしまった場合、スクリプトを通じて間接的に機密情報が漏洩する可能性があります 。  

認証情報の不適切な管理

GASは、Google Workspace内のサービス連携に留まらず、外部の様々なWeb APIやクラウドサービスと連携することで、その活用範囲を大幅に広げることができます。例えば、Slackへの自動通知 、外部の会計システムとのデータ連携 、あるいはCRMシステムとの顧客情報同期など、多岐にわたる連携が可能です。これらの外部サービス連携を実現する際に不可欠となるのが、APIキーやクライアントシークレット、アクセストークンといった認証情報です。これらの認証情報の取り扱いは、GASのセキュリティを確保する上で極めて重要なポイントとなります。  

最も避けるべきは、これらの機密情報をスクリプトのソースコード内に直接記述する、いわゆる「ハードコーディング」です 。ハードコーディングされた認証情報は、スクリプトファイルの閲覧権限を持つ者であれば誰でも容易に内容を確認できてしまいます。また、スクリプトをバージョン管理システム(Gitなど)で管理している場合、誤って認証情報が含まれたままリポジトリにコミットしてしまうと、意図せず広範囲に漏洩するリスクがあります。  

外部ライブラリと依存関係のリスク

GASでは、他の開発者が作成したスクリプトを「ライブラリ」として自身のプロジェクトにインポートし、その機能を手軽に再利用することができます。これにより、開発効率を大幅に向上させることが可能ですが、外部ライブラリの利用には慎重な検討が必要です。Googleの公式ドキュメントにおいても、外部ライブラリの読み込みは極力避けることが推奨されています 。  

外部ライブラリを利用する際に考慮すべき主なリスクは以下の通りです。

主なリスク

説明

ライブラリ自体の脆弱性

インポートするライブラリのコード内にセキュリティ上の脆弱性が含まれている可能性があります。
もしライブラリに脆弱性が存在すれば、それを利用している自身のスクリプトもその影響を受けることになります。

サプライチェーンリスク

ライブラリが、さらに別の第三者が作成したライブラリに依存している場合(依存関係の連鎖)、
その依存先のライブラリに脆弱性が存在すれば、間接的にリスクを負うことになります。

信頼性の問題

ライブラリの開発者が信頼できる人物や組織であるか、また、ライブラリが継続的にメンテナンスされ、セキュリティアップデートが提供されているかといった点も重要です。
メンテナンスが放棄されたライブラリを使い続けることは、将来的に新たな脆弱性が発見された場合に対応できないリスクを抱えることになります。

意図しない動作や情報収集

悪意を持って作成されたライブラリや、開発者の意図しない形で個人情報や機密情報を収集するようなコードが含まれている可能性もゼロではありません。
特に、認証情報(クライアントシークレットやAPIキーなど)を扱う機能を提供するライブラリの場合、そのライブラリが内部でどのように認証情報を処理し、保管しているかが不透明な場合、大きなリスクとなり得ます 。

GASにおける外部ライブラリの利用は、ある意味でブラックボックス化した他者のコードを自社のGoogle Workspace環境内で実行することに等しいと言えます。ライブラリのソースコードが公開されていたとしても、その全ての行を詳細に精査し、セキュリティ上の問題を完全に排除することは現実的に困難な場合が多いと思います。また、一度ライブラリを導入すると、そのライブラリのアップデート状況や新たに見つかる脆弱性情報に対して、継続的に注意を払い、必要に応じて対応していく体制が求められます。このような監視体制が整っていない場合、組織は未知のリスクを抱え続けることになりかねません。

利用者の教育不足によるリスク

GASを組織で利用する際、利用者の教育不足は重大なリスクを引き起こす可能性があります。たとえば、スクリプトに対する基本的な理解が不十分なまま運用されると、誤ったコードの実行により業務データの破損や消失が発生する恐れがあります。また、アクセス権限の設定を誤ることで、機密情報が社外に漏洩するリスクも高まります。  

Web上で公開されているソースコードを容易に利用できるため、ヒューマンエラーの温床になりやすい性質があります。

情シスが講じるべきGASのセキュリティ対策

GASに潜む様々なセキュリティリスクに対処し、その利便性を安全に享受するためには、情報システム部門が主導して多角的な対策を講じる必要があります。ここまでのリスクに対する説明を踏まえて、具体的な対策のポイントを解説します。

ガバナンス体制の確立と開発ガイドラインの策定

GASの利用が組織内で広がる中で、無秩序な状態を防ぎ、セキュリティを確保するための最初のステップは、明確なガバナンス体制の確立と、それに伴う開発ガイドラインの策定です。人間が運用する以上、ガイドラインで完全にリスクを封じ込めることはできませんが、インシデントの発生確率は大幅に下げることができると考えています。

GASの利用、開発、展開に関する明確なポリシー定義

まず、組織としてGASの利用に関する基本方針を定めることが不可欠です。これには、誰がスクリプトを作成し、管理するのか、変更履歴はどのように管理するのか、どのような目的での利用を許可し、どのような利用を禁止するのかといった、具体的なルールが含まれます 。

シャドーIT対策の観点からも、セキュリティに関する全社的なガイドラインを策定し、従業員への教育を通じてその内容を周知徹底することが重要です。 

コーディング標準の導入

GASスクリプトを開発する際の具体的な技術的基準となる、コーディング標準の導入も効果的かもしれません。これは、開発者が安全なスクリプトを作成するための指針となるものです。  以下に例を提示します。

カテゴリ

主要項目

説明/目的

権限管理

OAuthスコープの最小化

過剰な権限付与によるリスク(情報漏洩、不正操作)を低減する

APIキー等の認証情報の安全な保管

ハードコーディングを避け、Properties ServiceやSecret Managerを適切に利用する

データ処理

入力値検証の徹底

不正なデータや予期しない形式のデータによる誤動作や脆弱性(XSS等)を防止する

機密データの取り扱い注意

個人情報や機密情報を含むデータを扱う際のマスキングや暗号化、ログ出力への配慮

エラーハンドリング

try-catchによる網羅的な例外処理

予期せぬエラー発生時にスクリプトが異常終了するのを防ぎ、原因究明や復旧を容易にする

エラー発生時の適切な通知・ログ記録

エラー発生を迅速に検知し、対応できるようにする

コード品質

JSLint等、静的コード解析ツールの利用

コーディング規約違反や潜在的なバグを早期に発見し、コードの品質を維持する

コメント規約(JSDoc等)の遵守と可読性の確保

コードの理解を助け、メンテナンス性を向上させる

マジックナンバーの禁止、定数・設定値の外部化

コードの可読性とメンテナンス性を高め、設定変更を容易にする

パフォーマンス

API呼び出し回数の最適化、バッチ処理の活用

Googleサービスの割り当て制限(実行時間、APIコール数)を超過するのを防ぎ、処理効率を上げる

レビュープロセス

定期的なコードレビューの実施

開発者間での知識共有を促進し、脆弱性や設計上の問題点を早期に発見・修正する

外部ライブラリ

利用時のリスク評価と承認プロセスの導入

信頼性の低いライブラリや脆弱性を含むライブラリの利用によるリスクを低減する

このようなガイドラインも、それが開発者に理解され、実際に遵守されなければ意味がありません。そのためには、技術的なルール作りだけでなく、組織全体としてのセキュリティ意識の醸成が不可欠です。 

Google Workspace管理コンソールを活用した統制

Google Workspaceの管理コンソールは、情報システム部門がGASの利用を統制し、セキュリティを維持するための強力なツールです。組織レベルのアクセスの制御、監査ログの活用を通じて、組織内のGAS利用状況を可視化し、潜在的なリスクを低減することができます。

組織レベルのアクセス制御

情報システム部門は、Google Workspace管理コンソールから、GASを利用する組織を制御することができます。管理コンソールにアクセスしたら、左メニューから[アプリ]-[Google Workspace]-[ドライブとドキュメントの設定]-[Google Apps Script]を選択してください。GASの設定ページが表示されたら、組織レベルでGASのアクセス制御を実施することができます。  

 

監査ログの活用と監視体制の構築

GASの利用状況や潜在的なセキュリティインシデントを早期に発見するためには、管理コンソールが提供する監査ログ機能を活用した監視体制の構築が有効です。管理コンソールの「レポート」セクション内にある「監査と調査」から「ドライブのログイベント」を選択し、ドキュメントの種類として「Google スクリプト」でフィルタリングすることで、GASに関連する様々なアクティビティログ(例:スクリプトの作成、編集、実行、共有設定の変更など)を確認することができます 。  

また、「レポート」セクションの「アプリレポート」内にある「アプリ スクリプト」の項目では、組織内でGASを積極的に利用しているユーザー数や、実行回数の多いスクリプトといった統計情報を把握することも可能です 。これらの情報は、GASの利用実態を理解し、潜在的なリスク領域を特定する上で役立ちます。   

認証情報(APIキー等)の安全な管理方法

GASが外部サービスと連携する際に使用するAPIキーやアクセストークンといった認証情報は、攻撃者にとって価値の高い標的です。これらの情報が漏洩すると、連携先のサービスへの不正アクセスや情報窃取に繋がるため、その管理には細心の注意を払う必要があります。

ハードコーディングの回避

認証情報を管理する上での最も基本的な原則は、ソースコード内に直接記述する「ハードコーディング」を絶対に避けることです 。ハードコーディングされた認証情報は、スクリプトファイルの閲覧権限を持つ者であれば誰でも容易にその内容を知ることができ、バージョン管理システムに誤ってコミットされた場合には、意図せず広範囲に漏洩するリスクがあります。 

プロパティサービスの利用と注意点 

ハードコーディングの代替手段として、GASが提供するプロパティサービスを利用する方法があります。これにより、認証情報をスクリプトプロパティやユーザープロパティに保存し、コードと分離することができます 。  

以下にプロパティサービスの種類について説明します。要件に応じて、各サービスを使い分けてください。

プロパティサービスの種別

説明

スクリプトプロパティ

スクリプトファイル自体に紐づくプロパティで、そのスクリプトの編集権限を持つユーザーであれば誰でも値の参照や変更が可能です 。比較的簡単に利用できますが、編集権限を持つ共同開発者が多い場合や、アカウント侵害のリスクを考慮すると、機密性の高い情報の保管には注意が必要です 。

ユーザープロパティ

スクリプトを実行するユーザーごとに個別に保存されるプロパティです。原則として、そのプロパティを作成したユーザー自身しかアクセスできません 。しかし、スクリプトの編集権限を持つ他者がコードを改変し、特定のユーザーがスクリプトを実行した際にそのユーザープロパティの値をログに出力させるなどの方法で、間接的に情報を窃取するリスクは残ります。

プロパティサービスは手軽な選択肢ですが、特にスクリプトの編集権限を持つユーザーによる意図的または偶発的な漏洩リスクを完全に排除することはできません。

利用者へのセキュリティ教育の徹底

技術的な対策や管理体制の整備と並行して、GASを開発する従業員および利用するエンドユーザー双方に対するセキュリティ教育を徹底することは、人的要因に起因するリスクを低減する上で極めて重要です。

セキュアコーディング、権限意識のトレーニング

まず、GASスクリプトを開発する可能性のある従業員に対しては、セキュアコーディングの原則に関するトレーニングを提供する必要があります。これには、入力データの検証、適切なエラー処理、アクセス権の最小化といった基本的なプラクティスに加え 、ユーザーのレベルによっては、SQLインジェクションやクロスサイトスクリプティング(XSS)といった一般的なウェブアプリケーションの脆弱性に対する対策知識もトレーニングが必要です。

また、GAS特有の注意点、例えば実行時間制限やAPIの割り当て制限、プロパティストアの適切な利用方法などについても教育することが効果的です 。組織としてセキュアコーディングに関するポリシーを策定し、それに基づいた継続的なトレーニングを実施することが、開発者全体のセキュリティスキル向上に繋がります 。  

不審なアクティビティ報告の重要性

万が一、セキュリティインシデントが発生した場合や、その兆候を発見した場合に、従業員が速やかに情報システム部門やセキュリティ担当窓口に報告できる体制を整え、その重要性を周知することも大切です。セキュリティ事故が発生した際に迅速に報告するルールを社内規定に盛り込む 、あるいは内部通報制度を整備し、従業員が安心して相談・報告できる環境を提供することが、被害の拡大防止や早期解決に繋がります 。  

トレーニングは定期的に実施することが重要

GASに関するセキュリティ教育は、一度きりの研修で終わらせるべきではありません。サイバー攻撃の手法は日々進化し、Google WorkspaceやGASの仕様も変更される可能性があるため、教育内容も定期的に見直し、最新の情報に基づいてアップデートしていく必要があります 。また、教育内容は対象者の役割や知識レベルに応じて最適化することが効果的です。例えば、開発者にはより技術的で詳細なセキュアコーディング規約や安全な開発文化の醸成 について、一般ユーザーにはフィッシング詐欺の具体的な手口 や権限承認の際に注意すべき点 を平易に解説するなど、それぞれの立場に合わせた教育があると良いでしょう。  

このような継続的かつ対象者に最適化された教育プログラムを通じて、組織全体のセキュリティリテラシーを底上げし、技術的な防御策を補完する強力な「人間のファイアウォール」を形成することが、GASを安全に活用するための重要なポイントになると思います。

 

まとめ

GASは、Google Workspace環境における業務自動化やアプリケーション開発を飛躍的に効率化する強力なツールです。その手軽さ故に、専門的な開発者でなくとも業務改善を実現できる可能性を秘めており、多くの組織でその活用が進んでいます。しかし、その強力な機能性、Googleサービスへの広範なアクセス能力、そして開発の自由度の高さは、権限管理の不備、不適切なアクセス制御、認証情報の管理ミス、外部ライブラリへの依存といった、深刻なセキュリティリスクと表裏一体です。これらのリスクを認識せず、あるいは軽視したままGASの利用を野放しにすることは、機密情報の漏洩、不正アクセス、システム障害といった重大なインシデントを引き起こす可能性があります。GASの恩恵を安全に享受するためには、情報システム部門による継続的かつ積極的なセキュリティ管理が絶対条件であることを再確認する必要があります。

一方で、情報システム部門は、GASを単なるリスク要因として一方的に排除しようとするのではなく、その計り知れない潜在能力を組織の生産性向上のために最大限に引き出しつつ、同時にその利用に伴うリスクを許容可能なレベルにまで低減するための「ガードレール」を戦略的に整備するという視点を持つことも必要だと考えています。

本記事で説明した対策を実施し、常に新たな脅威や技術動向に関する情報収集を怠らず、自社のセキュリティ体制を継続的に見直し、強化していくことが、未来にわたってGASを安全かつ有効に活用していくためのキーになるのではないでしょうか。

森田 嶺
森田 嶺
大学卒業後、 AWS や Google Cloud 等、主にクラウドを基盤とした新規サービス開発の経験を経て、YOSHIDUMIに入社。Google ドライブ拡張サービス「Cmosy」「共有ドライブマネージャー」等、 Google Cloud を活用した自社サービスの開発に従事。現在、 Google 等が提供する生成AIを活用したサービスを開発中。
ぶっちゃけどうなの? 経験者が語るグループウェア移行の落とし穴セミナー

13:00-14:00 オンライン

ぶっちゃけどうなの? 経験者が語るグループウェア移行の落とし穴セミナー

詳細はこちら

データはすべてドライブへ!Google ドライブ運用まるわかりセミナー

14:00-15:00 オンライン

データはすべてドライブへ!Google ドライブ運用まるわかりセミナー

詳細はこちら

Google Workspace ユーザー必見! AppSheet & Google Apps Script 連携で実現する業務改善セミナー

14:00-15:00 オンライン

Google Workspace ユーザー必見! AppSheet & Google Apps Script 連携で実現する業務改善セミナー

詳細はこちら

非エンジニア歓迎!基礎から活用シーンまで学べる! AppSheet を使った現場 DX 入門セミナー

14:00-15:00 オンライン

非エンジニア歓迎!基礎から活用シーンまで学べる! AppSheet を使った現場 DX 入門セミナー

詳細はこちら

Gemini と NotebookLM でビジネスを加速! ~ Google Workspace との連携で実現する、生産性向上と DX 推進~

14:00-15:00 オンライン

Gemini と NotebookLM でビジネスを加速! ~ Google Workspace との連携で実現する、生産性向上と DX 推進~

詳細はこちら

まだ AI 導入で消耗してる?2025 年最新「生成 AI 標準搭載」Gemini vs Copilot 徹底比較

14:30-15:00 オンライン

まだ AI 導入で消耗してる?2025 年最新「生成 AI 標準搭載」Gemini vs Copilot 徹底比較

詳細はこちら

オンラインセミナー開催中

お申込みはこちらをCheck!

関連する他の記事をよむ