アプリデータを保護する

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

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

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

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

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

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

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

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

推奨事項

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

レコードに対する操作を保護する

アプリ内でデータ セキュリティが必要なモデルの場合、レコードの作成、読み込み、保存または削除ができるユーザーを指定します。これにより、バインディングとクライアント スクリプトでレコードへのアクセスが保護されます。レコード操作の保護には、管理者のみ、すべてのユーザー、役割、スクリプト、オーナーのアクセス権を使用できます。

たとえば、すべての従業員に他の従業員の連絡先情報の検索を許可し、従業員レコードの作成、編集、削除は人事部門の管理者に制限できます。

セキュリティ設定ですべてのアクセスが拒否されていても、アプリの管理者はすべてのレコードにアクセスできます。

すべての操作に同じアクセス権を使用する

  1. App Maker を開き、アプリに移動します。

  2. 左側のサイドバーで、操作を保護するモデルをクリックします。

  3. [Security] タブをクリックして、[Advanced] ボックスをオフにします。

  4. [Model Permissions] で、適用するアクセス権を選択します。管理者のみすべてのユーザー役割スクリプトオーナーまたは役割を選択します。

  5. 役割、スクリプト、オーナーに関する追加情報を指定します。

    • 役割 - 各役割について、[Add Role] をクリックして、リストから既存の役割を選択します。新しい役割を作成する必要がある場合は、[Manage Roles] をクリックします。

    • スクリプト - スクリプト エディタで、サーバー認証スクリプトを入力するか貼り付けます。

    • オーナー - バインディング ピッカーからフィールドを選択します。

    • オーナーまたは役割 - バインディング ピッカーからフィールドを選択します。1 つ以上の役割を追加してください。

  6. [Save] をクリックして、変更を確定します。

作成、読み込み、保存、削除の操作ごとに異なるアクセス権を使用する

  1. App Maker を開き、アプリに移動します。
  2. 左側のサイドバーで、操作を保護するモデルをクリックします。
  3. [Security] タブをクリックして、[Advanced] ボックスをオンにします。
  4. [Create]、[Load]、[Save] または [Delete] で、適用するアクセス権を選択します。管理者のみすべてのユーザー役割スクリプトまたはオーナーを選択します。
  5. 役割、スクリプト、オーナーに関する追加情報を指定します。

    • 役割 - 各役割について、[Add Role] をクリックして、リストから役割を選択します。新しい役割を作成する必要がある場合は、[Manage Roles] をクリックします。

    • スクリプト - スクリプト エディタで、サーバー認証スクリプトを入力するか貼り付けます。

    • オーナー - バインディング ピッカーからフィールドを選択します。

    • オーナーまたは役割 - バインディング ピッカーからフィールドを選択します。1 つ以上の役割を追加してください。

  6. [Save] をクリックして、変更を確定します。

  7. 他の種類の操作についても、手順 4〜6 を繰り返します。

モデル間のリレーションを保護する

モデルに機密データが含まれている場合は、そのリレーションを保護する必要があります。リレーションを保護できないと、アクセスが許可されていないユーザーにデータが表示される可能性があります。

管理者以外のユーザーがリレーションのあるレコードをリクエストするたびに、App Maker はレコードの読み込み権限を確認します。ユーザーがすべてのモデルにアクセスできない場合、クエリは拒否されます。また、管理者以外のユーザーがリレーションの関連付けを変更しようとすると、App Maker は変更を許可する前にリレーションの権限を確認します。

リレーションの保護には、管理者のみ、すべてのユーザー、役割、スクリプト、継承のアクセス権を使用できます。

  • 継承された権限 - リレーションの両端にレコードを保存できるユーザーは、リレーション全体でレコードの関連付けを行うことができます。たとえば、Employee レコードを Department レコードに関連付けることができます。
  • オーナー権限 - リレーションにはフィールドがないため、リレーションに直接使用することはできません。一方のリレーション エンドで保存操作にオーナー アクセス権を使用すると、レコードの関連付けは、そのリレーション エンドのオーナー アクセス権で制御されます。保存操作のオーナー アクセス権は、両方のリレーション エンドに指定できます。

例:

  1. HRAdmins 役割を作成し、この役割を Employee モデルと Department モデル間のリレーションのセキュリティに追加します。
  2. アプリのデプロイメントを編集して、メンバーを HRAdmins 役割に追加します。

    • HRAdmins 役割のメンバーは、Employee モデルのレコードを Department モデルのレコードに関連付けることができます。

    • 他のユーザーはこれらのレコードを関連付けることができません。

リレーションを保護する

  1. App Maker を開き、アプリに移動します。
  2. 左側のサイドバーで、リレーションを保護するモデルをクリックします。
  3. [Relation Permissions] で、保護するリレーションを見つけます。
  4. 適用するアクセス権を選択します。管理者のみすべてのユーザー役割スクリプト、または継承を選択します。
  5. 役割とスクリプトの追加情報を入力します。
    • 役割 - 各役割について、[Add Role] をクリックして、リストから役割を選択します。役割を選択する前に、役割を追加する必要があります。
    • スクリプト - スクリプト エディタで、サーバー認証スクリプトを入力するか貼り付けます。
  6. [Save] をクリックして、変更を確定します。

レコードの所有権に基づいてデータを保護する

フォーラム サンプルを使用すると、ユーザーはフォーラムを作成し、フォーラムにメッセージを投稿できます。フォーラムを作成したユーザーがそのフォーラムのオーナーになります。

オーナー アクセス権を使用するには:

  1. データモデルで、レコード オーナーのメールアドレスを含むフィールドを追加します。たとえば、Owner という名前の文字列フィールドを追加します。
  2. データモデルのセキュリティで、レコード操作(作成、保存、読み込み、削除)にオーナー アクセス権を選択し、これらの操作をレコード オーナーにのみ許可します。リレーションの場合、オーナー アクセス権を直接使用することはできません。一方のリレーション エンドで保存操作にオーナー アクセス権を使用すると、レコードの関連付けは、そのリレーション エンドのオーナー アクセス権で制御されます。保存操作のオーナー アクセス権は、両方のリレーション エンドに指定できます。

  3. レコードの Owner フィールドの値にユーザーのメールアドレスを設定します。たとえば、レコードの onCreate イベントに設定します。フォーラム サンプルのフォーラム データモデルの場合、保存と削除アクションにオーナー アクセス権が設定され、オーナーにのみフォーラムの編集と削除が許可されます。