Google Workspace2026-06-28

【セキュリティ】B2B取引における機密ファイルの自動受け渡し:Google Drive API + サービスアカウントの実装ガイド


個人アカウントでのファイル共有に潜むセキュリティホール

B2Bビジネスにおいて、見積書、NDA(秘密保持契約書)、設計書などの機密ファイルを社外の取引先やパートナー企業と共有する機会は日常的です。しかし、多くの現場では、**「社員個人のGoogleアカウントから、その都度手動でフォルダを作成して社外メンバーのメールアドレスを招待する」**という運用が行われています。

この運用方法には、以下のような重大なガバナンスリスクが潜んでいます。

  1. アクセス権の消し忘れ: 取引終了後や担当者の退職後も、フォルダへの共有設定が残ったままになり、情報漏洩に繋がる。
  2. 権限設定の誤り: 閲覧専用(Viewer)で共有すべきファイルを、誤って編集権限(Editor)やリンクを知っている全員への一般公開設定で共有してしまう。
  3. 監査ログの不在: 誰がどのファイルを持ち出したか、ダウンロードしたかのログが管理できず、ISMS(ISO27001)などの情報セキュリティ監査で重大な指摘を受ける。

これらの課題を解決するためには、個人アカウントではなく**Google Cloudのサービスアカウント(プログラム専用のID)**を使用して、システムの裏側でフォルダの作成やアクセス制限の付与・削除をすべて自動制御(Touchless化)するスキームの導入が必要です。


2. 課題解決のビフォー・アフター

項目 手作業によるフォルダ共有(Before) サービスアカウント+API管理(After)
共有の作成 人間の手で「共有ボタン」から操作(ミス発生) プログラムにより適切なアクセスレベルが瞬時に付与
アクセス有効期限 削除忘れが常態化し、外部に放置 指定期間(例: プロジェクト終了日)経過後に自動で権限剥奪
オーナーシップ 退職した個人のドライブにファイルが残る 会社の組織アカウント(共有ドライブ)が管理し回収不要
監査トレース 誰がファイルを共有したか追跡不能 APIログから「いつ・誰に・どの権限で」がすべて監査可能

3. 具体的な実装例:期限付き共有フォルダの自動作成と招待

サービスアカウントを利用して、特定の取引先メールアドレスに対して閲覧権限を付与したフォルダを自動生成する、Google APIs(TypeScript)の実装コード例です。

import { google } from "googleapis";

// サービスアカウントによる認証の設定
const SCOPES = ["https://www.googleapis.com/auth/drive"];
const auth = new google.auth.GoogleAuth({
  credentials: {
    client_email: process.env.GOOGLE_CLIENT_EMAIL,
    private_key: process.env.GOOGLE_PRIVATE_KEY?.replace(/\\n/g, "\n"),
  },
  scopes: SCOPES,
});

const drive = google.drive({ version: "v3", auth });

export async function createSecurePartnerFolder(partnerEmail: string, projectName: string) {
  try {
    // 1. 共有ドライブまたは指定フォルダ配下に、新規フォルダを作成
    const fileMetadata = {
      name: `【HadayaLab共有】${projectName}`,
      mimeType: "application/vnd.google-apps.folder",
      parents: [process.env.SHARED_ROOT_FOLDER_ID!],
    };

    const folderResponse = await drive.files.create({
      requestBody: fileMetadata,
      fields: "id, webViewLink",
    });

    const folderId = folderResponse.data.id!;
    console.log(`Folder created: ${folderId}`);

    // 2. パートナー企業のアドレスに対して「閲覧者(Reader)」権限を付与
    await drive.permissions.create({
      fileId: folderId,
      requestBody: {
        role: "reader",
        type: "user",
        emailAddress: partnerEmail,
      },
      fields: "id",
    });

    console.log(`Permission granted to: ${partnerEmail}`);
    return {
      folderId,
      link: folderResponse.data.webViewLink,
    };
  } catch (error) {
    console.error("Secure B2B file transfer failed:", error);
    throw error;
  }
}

4. HadayaLabの安全なB2Bデータ連携パッケージ

HadayaLabでは、ISMS/ISO27001やSOC2などの国際セキュリティ基準を維持しながら、他社とのファイル連携を自動化する仕組みの構築をサポートしています。

  • 自動フォルダ・アクセス制御: 取引のステータス変更(契約締結・終了など)に応じて、Google Driveのフォルダを自動生成・権限自動剥奪。
  • アップロードファイルのマルウェア・整合性検証: 共有フォルダにアップされたファイルをAIが自動検知し、データ形式の破損がないか判定。
  • ** tamper-proof なファイル提出パイプライン**: 変更が不可能なリードオンリーの監査データとして、提出記録をバックアップ。

「取引先とのファイル受け渡しが多く、手動での権限管理に限界を感じている」「セキュリティ審査に耐えうる安全なデータ共有基盤がほしい」という企業様は、ぜひHadayaLabのセキュアファイル連携設計をご相談ください。