承認済みビューの概要

承認済みビューは、Bigtable データに対するきめ細かなアクセス制御が可能なテーブルの論理ビューです。承認済みビューは、特定のテーブルデータを含むように構成するテーブルのサブセットです。次に、テーブルへのアクセス権とは別に承認済みビューへのアクセス権を付与します。

承認済みビューは、マルチテナント テーブルや、すべてのユーザーがアクセスできるわけではないデータがテーブルに含まれているその他のシチュエーションで役立ちます。他のデータベース サービスのビューとは異なり、Bigtable の承認済みビューを使用して、読み取りと書き込みの両方のアクセスを制御できます。他のストレージ システムが「更新可能なビュー」または「フィルタされたエイリアス」と呼ばれるものと同じ方法で、何千もの承認済みビューをプログラムで作成できます。

このドキュメントでは、承認済みビューについて説明し、定義ファイルの例を示します。このドキュメントを読む前に、Bigtable ストレージ モデルを理解しておく必要があります。手順については、承認済みビューを作成して管理するをご覧ください。

承認済みビューの定義

承認済みビューを作成する場合は、次のいずれかのパラメータを使用して承認済みビューに含めるデータを指定することでビューを定義します。

  • 行キーの接頭辞 - examplepetstore1| で始まるすべての行など
  • 列修飾子の接頭辞 - 指定された列ファミリー内の、修飾子が order# で始まるすべての列など
  • 列修飾子 - 指定された列ファミリー内の order-examplepetstore 列のみなど
  • 行キー接頭辞と列修飾子を組み合わせたもの

複数の列ファミリーで同じ列修飾子が使用されており、その修飾子を持つすべての列をビューに含める場合は、ビューを定義するときに列修飾子と列ファミリーのすべての組み合わせを個別に指定する必要があります。

承認済みビューの定義に使用する行キーと列修飾子の値は、サービスデータとして扱われます。そのため、機密情報を含む行キーまたは列修飾子の値を使用して承認済みビューを作成しないでください。サービスデータが取り扱われる方法については、Google Cloud のプライバシーに関するお知らせをご覧ください。

ファミリーの列またはすべての行の列を含める

基になるテーブルの列ファミリーに追加した列が承認済みビューにも含まれるようにするには、空の文字列("")を列修飾子の接頭辞として指定する必要があります。たとえば、定義ファイルには、ファミリー サブセットに "qualifierPrefixes": [""] が含まれます。

同様に、テーブルのすべての行を含む承認済みビューを定義する場合は、行キーの接頭辞として空の文字列("")を指定します。定義ファイルでは、ビューのサブセットで "rowPrefixes": [""] と記述されます。

過度に複雑な承認済みビューを回避するため、Bigtable では最大 10 個の個別の修飾子接頭辞を指定できます。つまり、承認済みビューでは、修飾子の合計数が 10 個以下であれば、10 個の修飾子接頭辞を持つ 1 つの列ファミリー、1 つの修飾子接頭辞を持つ 10 個の列ファミリー、またはその間の任意の組み合わせを指定できます。

ベスト プラクティスとして、キーは JSON オブジェクトごとに 1 回だけ指定します。列ファミリー名などのキーを複数回指定すると、キーの最後のエントリがキーの以前のエントリを上書きします。

定義ファイルの例

このセクションでは、承認済みビュー定義ファイルの JSON 形式の例を示します。

次に、行キー接頭辞が examplepetstore1# のすべての行を含む承認済みビューの定義ファイルの例を示します。

    {
      "subsetView":
      {
        "rowPrefixes": ["examplestore1#"],
        "familySubsets":
        {
          "customer":
          {
            "qualifiers":["address"],
            "qualifierPrefixes":["tel"]
          }
        }
      },
      "deletionProtection": true
    }

次に、order 列ファミリーの skus 列と customer 列ファミリーのすべての列を含む承認済みビューの定義ファイルの例を示します。

    {
      "subsetView": {
      "familySubsets": {
        "order": {
          "qualifiers": ["skus"]
        }
      }
        "familySubsets": {
          "key": "customer"
          "qualifierPrefixes": [""]
        }
      }
    }

以下は、承認済みビューの定義ファイルの例です。この承認済みビューには、行キー接頭辞が examplepetstore1# である行内の order 列ファミリーの skus 列のデータのみを含みます。

    {
      "subsetView": {
        "rowPrefixes": ["examplepetstore1#"]
        "familySubsets": {
          "order": {
            "qualifiers": ["skus"]
          }
        }
      }
    }

以下は、order 列ファミリーの skus 列と agents 列、および pet_id 列ファミリーの dogcatbird 列のデータのみを含む承認済みビューの定義ファイルの例です。

    {
      "subsetView": {
        "rowPrefixes": ["examplepetstore1#"]
        "familySubsets": {
          "order": {
            "qualifiers": ["skus", "agents"]
          "pet_id": {
            "qualifiers": ["dog", "cat", "bird"]
          }
          }
        }
      }
    }

次のステップ