カレンダーダイレクト連携のセキュリティ・技術仕様
目次
このページは、カレンダーダイレクト連携の導入をご検討中のお客様の情報システム部門・情報セキュリティ部門向けに、連携の仕組み(データフロー)・取得するデータ項目・拡張機能の権限を一覧でまとめたものです。
連携の仕組みとデータフロー
カレンダーダイレクト連携は、次の2つの要素で構成されています。
| 構成要素 | 役割 |
|---|---|
| カレンダー同期(TimeCrowdサーバー) | カレンダーサービスのAPIから予定を取得し、TimeCrowdの作業履歴を自動作成・更新する |
| カレンダーダイレクト拡張機能(Chrome / Edge) | カレンダー画面上にカテゴリー・タスクの選択UIを表示し、予定へのタスク割り当てを行う |
カレンダー同期(TimeCrowdサーバー)
予定の同期はTimeCrowdのサーバーとカレンダーサービスのAPI間で行われます。拡張機能を経由せず、お使いのパソコンにも依存しません。
Googleカレンダーの場合はGoogle Calendar API、Outlookカレンダーの場合はMicrosoft Graph APIを、いずれも読み取り専用の権限で利用します。
- 連携設定時に、お使いのカレンダーサービスのアカウント認証(OAuth)で読み取り権限をTimeCrowdに付与します
- TimeCrowdサーバーが、直近の一定期間の予定を取得します
- 以降は、カレンダーサービスからの変更通知(Webhook)によりほぼ即時で反映されます。加えて、通知の取りこぼしに備えた定期的な再同期を行います
- 取得した予定から、TimeCrowdの作業履歴が自動作成・更新されます
カレンダーダイレクト拡張機能
カレンダーダイレクト拡張機能は、カレンダー画面(Googleカレンダー / Outlookカレンダー)にTimeCrowdのカテゴリー・タスク選択UIを埋め込むためのものです。
- カレンダー画面に表示されている予定の情報(予定の識別子・件名・日時)を読み取り、TimeCrowdのAPI(
timecrowd.net)へHTTPSで送信して、作業履歴の作成・更新やタスクの割り当てを行います - 通信先はTimeCrowdと対象カレンダーサービスのドメインです(権限一覧は後述)。このほか、エラー発生時のみ、原因調査のためエラー監視サービス(Airbrake)へエラー情報を送信します
- TimeCrowdへのログイン状態は、ブラウザーの標準的な仕組み(
timecrowd.netのログインセッション)を利用します。拡張機能がパスワードや認証情報そのものを保存・参照することはありません
取得・保存するデータ項目
カレンダーから取得する項目
| 項目 | 内容 |
|---|---|
| 件名 | 予定のタイトル。作業履歴のコメントとして保存されます |
| 開始日時・終了日時 | 作業履歴の開始・終了時刻になります |
| 予定種別 | 単発・繰り返しなどの区分 |
| 繰り返し親ID | 繰り返し予定の親予定の識別子 |
| 予定の作成日時 | |
| 公開区分 | 通常・個人・非公開・社外秘の区分 |
| 応答状態 | 承諾・仮承諾などの出欠応答 |
| 主催者フラグ | 自分が主催者かどうか |
| 予定を開くリンク | 予定をカレンダー上で開くためのURL |
| 終日フラグ | 終日予定かどうか(終日予定は連携対象外の判定に使用) |
| 削除フラグ | 予定が削除されたかどうか |
| 予定の識別子 | 予定とTimeCrowdの作業履歴を対応づけるためのID |
取得しない項目
以下の項目は取得・参照・保存のいずれも行いません。
- 予定の本文(会議の詳細説明)
- 参加者情報
- 場所
- Teams会議URLなどのオンライン会議URL
- 添付ファイル(本体・ファイル情報とも)
必要なAPI権限
連携時に要求する権限(OAuthスコープ)は以下のとおりです。いずれの場合も、カレンダーへの書き込み権限は要求しません。
Outlookカレンダーの場合(Microsoft Graph API)
| 権限 | 用途 |
|---|---|
| openid / email / profile | サインイン(アカウントの識別) |
| User.Read | サインインしたユーザーの基本プロフィールの読み取り |
| Calendars.Read | カレンダーの予定の読み取り(読み取り専用・委任) |
| offline_access | アクセストークンの更新(継続的な同期のため) |
Googleカレンダーの場合(Google Calendar API)
| 権限 | 用途 |
|---|---|
| email / profile | サインイン(アカウントの識別) |
| calendar.readonly | カレンダーの予定の読み取り(読み取り専用) |
カレンダーダイレクト拡張機能の権限一覧
カレンダーダイレクト拡張機能が要求する権限は以下のとおりです。
使用する権限(permissions)
| 権限 | 用途 |
|---|---|
| storage | TimeCrowdから取得した情報(チーム・カテゴリー・タスクの一覧、連携設定など)をブラウザー内にキャッシュとして保存します。保存先はお使いのブラウザー内のみで、外部には送信されません |
| scripting | 対象のカレンダー画面にのみ、タスク選択UIを表示するためのスクリプトを読み込みます |
アクセス先のサイト(host_permissions)
アクセスできるサイトは以下の6ドメインに限定されています。
https://timecrowd.net/https://calendar.google.com/https://outlook.live.com/https://outlook.office.com/https://outlook.office365.com/https://outlook.cloud.microsoft/
使用しない権限
以下の権限は要求・使用していません。
| 権限 | 補足 |
|---|---|
全サイトへのアクセス(https://*/* や <all_urls>) |
サイトへのアクセスは上記6ドメインのみです |
| cookies | Cookieの内容を読み取る権限は使用していません |
| tabs | タブ情報を横断的に取得する権限は使用していません |
| webRequest | 通信内容を監視・変更する権限は使用していません |
| clipboardRead / clipboardWrite | クリップボードを読み取ることはありません(エラー発生時に「コピー」ボタンを押した場合のみ、お問い合わせ用のエラー情報を書き込みます) |
配布・アップデート
- カレンダーダイレクト拡張機能はChrome Web Storeから配布しています。Microsoft EdgeにもChrome Web Storeからインストールできます
- アップデートはブラウザーの自動更新の仕組みで配信されます
外部サービスの仕様変更について
本機能はGoogleカレンダー・Outlookカレンダーという外部サービスの上で動作する性質上、各サービス側の仕様変更(画面構成やAPIの変更)により、一時的に機能の一部または全部がご利用いただけなくなる可能性があります。その場合は判明次第、最優先で改修対応を行いますが、外部サービスの変更に起因する動作を常時保証するものではない点、あらかじめご留意ください。