アプリを保護する

アプリのセキュリティとプライバシー要件が維持されるように、必要に応じてアプリ プロジェクト、アプリのデプロイ、アプリのデータを保護します。

また、アプリをユーザーの権限で実行するのか、デベロッパーの権限で実行するのか(実行 ID)も検討する必要があります。

アプリ プロジェクトを保護する

アプリ プロジェクトは、App Maker で開発、共有、デプロイを行うアプリです。アプリ プロジェクトには、アプリの構築方法を記述します。

アプリ プロジェクトのオーナーを検討する

プロジェクトを作成した人物がアプリ プロジェクトのオーナーになります。プロジェクト オーナーは強い権限を持ちます。プロジェクト オーナーは、アプリ プロジェクトとアプリのデプロイメントのすべてを管理できます。セキュリティの設定に関係なく、プロジェクト管理者として、すべてのデプロイメントのデータにフルアクセスできます。 アプリ プロジェクトのオーナーを変更する方法は 2 つあります。

  1. アプリ プロジェクトのオーナーがアプリ プロジェクトの所有権を他のユーザーに譲渡する。これは、他のドライブ ファイルの場合と同様です。
  2. G Suite 管理者が所有権を譲渡する。

アプリ プロジェクトに対する編集アクセスを制限する

完全に信頼できるユーザー以外と自分のアプリ プロジェクトを共有しないでください。 アプリ編集者は次のものを変更できます。

  • アプリの UI
  • 権限
  • スクリプト
  • データに対するアクセス権

ドライブ、ドキュメント、スプレッドシートでファイルを共有する場合と同じ方法で、アプリ プロジェクトを特定のユーザー(Google アカウント)またはグループ(Google グループ)と共有できます。プロジェクトは、次のアクセスレベルで共有できます。

  • 編集可能 - 編集可能アクセス権のあるユーザーは、アプリを開発してアプリのデプロイメントを公開できます。また、アプリのすべてのデプロイメントのデータに制限なくアクセスできます。
  • 閲覧可能 - 閲覧可能アクセス権のあるユーザーは、アプリ プロジェクトに読み取り専用でアクセスできます。アプリのプレビューやデプロイメントの公開はできませんが、アプリのすべてのデプロイメントのデータに読み取りアクセス権でアクセスできます。

次の表を参考にして、ユーザーとグループに適切な権限を判断してください。

アクションプロジェクト オーナー編集権限閲覧権限
デプロイメントの一覧を表示する
デプロイメントを公開する
デプロイメントを編集する デプロイメント オーナーの場合 デプロイメント オーナーの場合
デプロイメントを再公開する デプロイメント オーナーの場合 デプロイメント オーナーの場合
デプロイメントを削除する デプロイメント オーナーの場合
データをデプロイメントにインポートする デプロイメント オーナーの場合 デプロイメント オーナーの場合
デプロイメントのデータをエクスポートする デプロイメント オーナーの場合 デプロイメント オーナーの場合

アプリ プロジェクト ファイルのエクスポート、共有、インポートを安全に行う

アプリ プロジェクトをアプリ プロジェクト ファイルにエクスポートできます。アプリ プロジェクト ファイルは共有することも、インポートすることもできます。

アプリ プロジェクト ファイルにはアプリの構成が記録されます。これには以下のものが含まれます。

  • データモデル
  • ユーザー インターフェース
  • スクリプト
  • 役割に関する情報(ただし、デプロイメントで定義されている役割のメンバーシップは除く)
  • インスタンス名(アプリがカスタム Cloud SQL データベースを使用している場合)

アプリのデータは含まれていません。データはデプロイメントに保存されます。

アプリ プロジェクト ファイルには、共有のアプリ プロジェクトほどセキュリティ上の懸念はありません。デベロッパーがアプリ プロジェクト ファイルをインポートすると、元のアプリ プロジェクトと視覚的、機能的に同等の新しいアプリが作成されます。ただし、インポートされたアプリは元のデータベースに接続しないため、セキュリティ設定にユーザー名やグループ名が含まれていません。

アプリ プロジェクトのセキュリティに関する推奨事項

  • 開発を始める前に、プロジェクト オーナーを誰にするか検討してください。
  • デベロッパーとユーザーのアクセス要件に基づいて、アプリに対するアクセスを制限してください。
  • アプリ プロジェクトとアプリ プロジェクト ファイルは信頼できるユーザーと共有し、それ以外のユーザーとは共有しないでください。
  • アプリを共有する場合、プロジェクト ファイルではなくアプリ プロジェクト ファイルを共有したほうが安全性は高くなります。
  • 信頼できる場所からアプリ プロジェクト ファイルをインポートし、それ以外のものはインポートしないでください。
  • 何をインポートするのか確認してください。アプリ プロジェクトでは、アプリのセキュリティとデータアクセスの側面を定義します。

アプリを保護する

アプリの保護はセキュリティの中核部分となります。

アプリをユーザーまたはデベロッパーとして実行する

App Maker は、アプリのサーバー部分を実行するときに特定のアカウントを使用します(アプリユーザーのアカウントまたはアプリを公開しているデベロッパーのアカウントを使用します)。App Maker は、アプリがサーバー スクリプトを実行するときにアカウントを使用します。また、Google Apps Script サービス(G Suite サービス、スクリプト サービス、Google の拡張サービス)に対する API 呼び出しを行うときにもアカウントを使用します。

詳しくは、ユーザーまたはデベロッパーとして実行するをご覧ください。

組み込みの管理者役割を使用する

組み込みの管理者役割は、ユーザーが作成できる役割と異なります。

対象 管理者役割 その他の役割
組み込み

アプリ プロジェクトに他の役割を追加します。
モデル作成時のデフォルトのデータ セキュリティ

App Maker は、レコードに対するすべての操作のモデル権限を「管理者のみ」に設定します。

このデフォルトは、レコードの関連付けにも適用されます(アクセス権限が継承されます)。


別のモデル権限を設定するまで、モデル権限は「管理者のみ」のままです。

アクセス権を「役割」に変更し、他の役割を追加できます。
デフォルトのページ セキュリティ

デフォルトのアクセス権は「すべてのユーザー」です。
モデル、リレーション、ページに役割ベースのセキュリティの追加
(App Maker のモデルとページエディタ)
モデル、リレーション、ページに役割ベースのセキュリティの追加
(スクリプトとバインディング式)
役職 / ジョブタスクの管理者に有効
(たとえば、ジョブタスクが異なる複数の部署の管理者)
異なる管理者がすべてのアプリの機能とデータに同じ方法でアクセスする必要がある場合のみ。
アプリのプレビュー App Maker はユーザーを管理者役割に追加します。
プレビューは管理者役割のみで、アプリのオーナーがその役割の唯一のメンバーになります。

権限をテストするには、アプリケーションのデプロイメントを公開し、役割のメンバーシップを指定する必要があります。
アプリの公開 アプリのデプロイメントを初めて公開するときに、App Maker はアプリの発行者を管理者役割に追加します。

デプロイメントの公開中または公開後に、管理者役割のメンバーシップを変更できます。
デプロイメントの公開中または公開後に、他の役割のメンバーシップを指定できます。

役割を定義して使用する

役割とは、役割ベースのアクセス制御を実装するために使用するユーザーのセットを意味します。このセットには、個々の Google アカウントや Google グループを入れることができます。

役割を使用すると、次の操作を行うことができます。

  • アプリのデプロイメントのデータにアクセスできるユーザーを指定する。詳しくは、データを保護するをご覧ください。
  • 特定のページにアクセスし、特定の UI 要素を表示できるユーザーのセットを指定する。詳しくは、UI を保護するをご覧ください。
  • サーバー スクリプトでデータへのアクセスを制御する。役割は、アクセス権を使用してユーザー アクセスを制御する方法の 1 つです。これ以外に、スクリプト権限オーナー権限という方法があります。役割の権限を使用しない場合は、役割を追加する必要はありません。

役割を追加する

  1. App Maker を開き、アプリ プロジェクトに移動します。
  2. [Settings]( [App settings] の順にクリックします。
  3. [Security] [Access Roles] の順に移動し、役割の名前を入力します。

役割の使い方

役割を定義し、以下の条件に従ってユーザーとグループを追加します。

  • 職種
  • 組織内のユーザーが実行できるタスク
  • 組織内のユーザーがアクセスしなければならないデータ

たとえば、従業員として自分の連絡先情報を編集する場合もあれば、マネージャーとして休暇申請を承認する場合もあります。財務部門のメンバーであれば、売掛金と買掛金の閲覧が可能でなけれなりません。

アプリ プロジェクトで役割を作成しますが、そのメンバーはアプリのデプロイメントで指定します。これにより、役割のメンバーシップを変えてアプリの複数のバージョンを公開できます(たとえば、テスト用のバージョンと本番環境のバージョン)。公開したアプリの場合、アプリを再公開しなくても役割のメンバーシップを変更できます。

役割を使用してアプリのセキュリティを制御するには:

  1. 職種、担当者が行うタスク、データアクセスに関する要件に基づいて、アプリに最適な役割を判断します。
  2. 役割を追加します
  3. レコードに対する操作を保護します
  4. モデル間のリレーションを保護します
  5. ページを保護します
  6. サーバー スクリプトを保護します
  7. (省略可)UI 要素の表示を制御します
  8. アプリを公開して、役割にメンバーを追加します

アクセス権を設定する

特定のユーザーに特定のデータや UI の特定の部分へのアクセスを許可するには、アクセス権を設定する必要があります。アクセス権を設定すると、次のことを制御できます。

  • ユーザーがアクセスできるデータと、ユーザーに許可するアクセスのタイプ。
  • ユーザーが閲覧できるページ。
  • ウィジェットの表示。たとえば、テストを実施できるように、管理者役割にはユーザーのページから管理者用ページへのリンクを表示します。

アクセス権を適用できる場所

  • データモデルの場合は、作成、読み込み、保存、削除の各操作に対するレコード アクセス。[Advanced] ボックスをオンにすると、作成、読み込み、保存、削除の操作別にアクセス権を設定できます。[Advanced] ボックスをオフにすると、すべての操作に同じアクセス権が設定されます。
  • リレーションの両端にあるデータモデル(またはモデル)のレコードを関連付ける機能
  • アプリの UI のページへのアクセス

アクセス権の種類

アクセス権限により、アプリを実行できるユーザーに、特定のデータやアプリの UI の特定のページに対するアクセスを許可できます。デプロイメントの設定でアプリケーションのアクセス権を設定すると、アプリを実行できるユーザーを制限できます。

特に断りのない限り、レコード操作(作成、読み込み、保存、削除)、リレーション(特に、リレーションで管理されるレコードの関連付け)、ページに対するアクセス権をすべて選択できます。

権限説明
管理者のみ アプリのデプロイメントの設定で管理者役割に追加されたユーザーのみがアクセスできます。
データモデルを作成すると、App Maker はレコードの操作とリレーションに対するデフォルトの権限として「管理者のみ」を使用します。これにより、アプリに適したデータ セキュリティを実装するまで、ある程度のデータ セキュリティが提供されます。
すべてのユーザー 組織の全員がアプリを実行できる場合は、すべてのユーザーにアクセスが許可されます。それ以外の場合は、アプリのデプロイメントを実行できるユーザーだけにアクセスが許可されます。デプロイメントの設定でアプリケーションのアクセス権を設定すると、アプリを実行できるユーザーを指定できます。
役割 指定された役割のメンバーだけにアクセスが許可されます。アプリ プロジェクトに役割を追加します。アプリのデプロイメントの設定でユーザーを役割に追加します。
スクリプト サーバーの認証スクリプトでアクセス権が付与されたユーザーにのみアクセスが許可されます。このタイプのアクセス権を選択したときに表示されるスクリプト エディタでスクリプトを記述します。
所有者または役割 レコード操作の場合、レコードの所有者または指定された役割のメンバーだけにアクセスが許可されます。App Maker は、ユーザーのメールアドレスとレコードのフィールドの内容と照合し、ユーザーがレコードの所有者かどうかを判断します。どのフィールドを使用するかは、ユーザーが指定します。
継承 リレーションの場合、リレーションの両端でデータモデルにレコードを保存できるユーザーに、レコードの関連付けが許可されます。

1 つのアプリで複数の権限タイプを使用できます。同じ種類のインスタンスに異なるタイプを使用することもできます。たとえば、一般に公開しても問題のないデータを含むデータモデルの場合、すべてのレコード操作のアクセス権に「すべてのユーザー」を設定できますが、同じアプリ内でも、個人を特定できる情報を含むデータモデルのアクセス権には「役割」または「スクリプト」を使用します。

デフォルトのアクセス権を使用する

アプリの次の部分には App Maker がデフォルトの権限を付与します。

  • モデル - 管理者のみ。データソースを介したモデルレコードへのアクセスを管理者役割のメンバーに制限します。
  • リレーション - 継承。リレーションの両端にあるデータモデル(またはモデル)のレコードを保存できるユーザーに、リレーションで制御されるレコードの関連付けを許可します。
  • ページ - すべてのユーザー。誰でもページを閲覧できます。

アクセス権の例

テンプレートとサンプルでは次のようなアクセス権を使用しています。

  • レコードの所有権に基づくアクセス - フォーラム サンプルを使用すると、フォーラムを作成し、フォーラムにメッセージを投稿できます。フォーラムを作成したユーザーがそのフォーラムのオーナーになります。フォーラム データモデルのレコードに onCreate イベントが発生すると、レコードの Owner フィールドにユーザーのメールアドレスが設定されます。保存と削除アクションにオーナー アクセス権が設定され、オーナーにのみフォーラムの編集と削除が許可されます。

  • 管理者用ページ - スターター アプリマテリアル ギャラリーのテンプレートには、Admin というページがあります。このページでは、「管理者のみ」権限を使用してページへのアクセスを管理者役割のメンバーに制限しています。役割のメンバーシップは、デプロイメントを編集して定義します。

データを保護する

データの保護は、アプリのセキュリティの中核部分となります。個人を特定できる情報(PII)など、機密情報や重要なデータを扱わないアプリがある場合でも、アプリのすべてのデータを保護する必要があります。

データを保護するセキュリティ対策

  1. ユーザーまたはデベロッパーとしてアプリを実行する(アプリのデプロイメントを公開したユーザーとして実行する) - アプリのユースケースに適した実行 ID を選択します。これにより、次のことが決まります。

    • Google ドライブ ユーザーのどのファイルにアクセスできるか - アプリ発行者のファイルとデータか、または自分のファイルとデータか。

    • どの G Suite データユーザーがアクセスできるか - アプリ発行者のファイルとデータか、自分のファイルとデータか。

    • Google Apps Script サービスに対する API 呼び出しの ID(メールの送信やカレンダー エントリの作成などを行う場合の ID)。

  2. モデル内のレコードに対する操作を保護する - レコード操作(作成、保存、読み込み、削除)に対する役割、スクリプト、オーナーのアクセス権を使用します。これにより、モデル内のレコードに対する特定の操作を特定のユーザーに許可できます。レコードに対するすべての操作タイプに 1 つのアクセス権を設定することも、異なるアクセス権を設定することもできます。

  3. モデルのリレーションを保護する - リレーションには継承、役割、スクリプトのアクセス権(またはその組み合わせ)を使用します。これにより、リレーションの両端のレコードの関連付けを特定のユーザーに許可できます。

推奨事項

  • データの保護を UI のセキュリティに依存しない - UI のセキュリティ対策(ページの保護と UI 要素の表示制御)ではデータを保護できません。UI のセキュリティ対策は、UI を使用できるユーザーを制限しているだけです。
  • データの保護にクライアント スクリプトやアプリケーション起動スクリプトを使用しない - クライアント スクリプトは本質的に安全なものではありません。スクリプトを使用したセキュリティはサーバー上で実行する必要があります。データを保護するための詳細と手順については、こちらをご覧ください。

UI を保護する

アプリを保護するときに、ページや UI 要素(ウィジェットまたはウィジェットの一部)を保護することもできます。UI のセキュリティにより、ユーザーが表示できる対象や、スクリーン リーダーで聞くことができる内容が決まります。

App Maker を使用すると、次の方法でアプリの UI を保護できます。

  • ページを保護する - ページにセキュリティを適用して、ユーザーが表示できるページを制御します。プロパティ エディタ()の [Security] で、各ページに役割またはスクリプトのアクセス権を適用します。
  • UI 要素を保護する - visible プロパティを使用して、ページ上のどの要素をユーザーに表示するかを制御します。visible プロパティは、ウィジェットと複合ウィジェットの一部に使用できます。プロパティ エディタ()の [Display] で、true(表示)または false(非表示)に解決されるバインディング式を UI 要素に定義します。

UI を保護するための詳細と手順については、こちらをご覧ください。

サーバー スクリプトを保護する

アプリが重要なデータや機密情報にアクセスする場合、サーバー スクリプトを保護する必要があります。たとえば、サーバー スクリプトで、データが要求されているユーザーがセッション内のアクティブ ユーザーかどうかを確認できます。App Maker は、実行されるサーバー スクリプトのアクセス権を自動的に確認しません。

サーバー スクリプトを保護するには、次のいずれか、または両方を行います。

デプロイメントを保護する

アプリのデプロイメントはユーザーが実行するアプリです。アプリのデプロイメントは、アプリ プロジェクトからいくつかのセキュリティ対策を継承します。

デプロイメントを保護するため、以下のことを指定します。

推奨事項

  • アプリのデプロイメントのオーナーを検討する - デプロイされたアプリの場合、アプリのオーナーではなく、アプリの発行者がデプロイメントのオーナーになります。アプリのオーナーはデプロイメントの所有権を取得できます。
  • アプリの正しいリビジョンを公開または再公開する - アプリのリビジョンにタグを付けて、どのリビジョンかすぐにわかるようにします。
  • アプリを公開する前と公開した後に徹底したテストを実施する - ユーザーと権限を変えてアプリをテストします。UI のセキュリティが迂回されていないかどうかもテストします。

アプリのデプロイを実行できるユーザーを指定する

デフォルトでは、組織内のすべてのユーザーがアプリのデプロイを実行できます。

ホワイトリストを作成すると、アプリのデプロイを実行できるユーザーを限定できます(Google アカウントまたは Google グループを指定します)。アプリを実行できないユーザーには、アプリにアクセスできないことを知らせるメッセージが表示されます。

特定のユーザーがアプリのデプロイメントを実行できるようにするには:

  1. App Maker を開き、アプリ プロジェクトに移動します。
  2. [Settings]()、[Deployments] の順にクリックします。
  3. デプロイメントの行で [Edit] をクリックします。
  4. [Application access] で、[Only allow access to specific users] を選択します。
  5. 特定のユーザー(Google アカウント)、グループ(Google グループ)、またはその両方のメールアドレスを入力します。
  6. [Save] をクリックします。App Maker がデプロイメントを自動的に再公開します。

役割にメンバーを追加する

役割のアクセス権を使用してデータまたはページを保護するには、役割にメンバーを追加する必要があります。個人(Google アカウント)、グループ(Google グループ)、またはその両方のメールアドレスを指定します。

役割にメンバーを追加するには:

  1. App Maker を開き、デプロイメントから Google スプレッドシートにデータをエクスポートするアプリに移動します。
  2. [Settings]( [Deployments] の順にクリックします。
  3. 役割にメンバーを追加するデプロイメントのテーブル エントリで、[Edit] をクリックします。
  4. [Users with role access] セクションに、特定のユーザー(Google アカウント)またはグループ(Google グループ)のメールアドレスを入力します。
  5. [Save] をクリックします。App Maker がアプリのデプロイメントを再公開します。再公開されたデプロイメントで、役割のメンバーシップが変更されています。

アプリをプレビューする

プレビューには次のセキュリティ機能があります。

  • プレビューの URL は非公開 - プレビューできるのは、アプリをプレビューするデベロッパーだけです。他のユーザーがプレビューの URL を使用してデプロイメントをプレビューすることはできません。
  • プレビューで専用のデータを使用 - Cloud SQL のデータがプレビューされます。複数のデベロッパーが共有のアプリ プロジェクトをプレビューする場合、デベロッパーごとに異なるプレビューが作成され、それぞれ独自のデータが使用されます。デベロッパーがデータを追加していない場合、データは表示されません。

アプリを公開する

アプリを公開すると、他のユーザーがアプリを実行できるようになります。ただし、アプリを実行できるユーザーには制限があります。ユーザーを実行できるアプリとユーザーが参照できるデータは、アプリのデベロッパーが追加したセキュリティ対策によって異なります。

セキュリティ上の予防策として、データ セキュリティが設定されていない公開アプリの場合、レコード操作に対する初期のアクセス権は「管理者のみ」に設定されています。

データのインポートとエクスポート

App Maker では、デプロイメントを公開したユーザーに、デプロイメントへのデータのインポートと、デプロイメントからのデータのエクスポートが許可されます。これらのアクションはいずれもセキュリティ上のリスクを伴います。たとえば、個人を特定できる情報(PII)など、重要な情報や機密情報がデータに含まれている場合があります。

  • データのインポート - App Maker アプリのデプロイメントで Google スプレッドシートからモデルにデータをインポートすると、すべてのデータがデプロイメントにインポートされます。Google スプレッドシートに機密情報や重要なデータが含まれている場合、これらの情報もアプリのデプロイメントにインポートされます。
  • データのエクスポート - App Maker アプリのモデルからデータをエクスポートすると、すべてのデータが Google スプレッドシートにエクスポートされます。モデルに機密情報や重要なデータが含まれている場合、これらの情報もスプレッドシートにエクスポートされます。