承認済みビューの概要
承認済みビューは、Bigtable データに対するきめ細かなアクセス制御を行うテーブルの論理ビューです。承認済みビューは、特定のテーブルデータを含むように構成するテーブルのサブセットです。次に、テーブルへのアクセス権とは別に、承認済みビューへのアクセス権を付与します。
承認済みビューは、マルチテナント テーブルや、すべてのユーザーがアクセスできるわけではないデータがテーブルに含まれているその他のシチュエーションで役立ちます。他のデータベース サービスのビューとは異なり、Bigtable 承認済みビューを使用すると、読み取りと書き込みの両方のアクセスを制御できます。他のストレージ システムが「更新可能なビュー」または「フィルタされたエイリアス」と呼ばれるものと同じ方法で、何千もの承認済みビューをプログラムで作成できます。
このドキュメントでは、承認済みビューについて説明し、定義ファイルの例を示します。このドキュメントを読む前に、Bigtable ストレージ モデルについて理解しておく必要があります。手順については、承認済みビューの作成と管理をご覧ください。
承認済みビューの定義
承認済みビューを作成する場合は、次のいずれかのパラメータを使用して承認済みビューに含めるデータを指定することでビューを定義します。
- 行キーの接頭辞 -
examplepetstore1|
で始まるすべての行など - 列修飾子の接頭辞 - 指定された列ファミリー内の、修飾子が
order#
で始まるすべての列など - 列修飾子 - たとえば、指定した列ファミリーの
order-examplepetstore
列のみ - 行キー接頭辞と列修飾子を組み合わせたもの
複数の列ファミリーで同じ列修飾子が使用されており、その修飾子を持つすべての列をビューに含める場合は、ビューを定義するときに列修飾子と列ファミリーのすべての組み合わせを個別に指定する必要があります。
承認済みビューの定義に使用する行キーと列修飾子の値は、サービスデータとして扱われます。このため、機密情報を含む行キーまたは列修飾子の値を使用して承認済みビューを作成しないでください。サービスデータが取り扱われる方法については、Google Cloud のプライバシーに関するお知らせをご覧ください。
ファミリーまたはすべての行に列を含める
基になるテーブルの列ファミリーに追加した列が承認済みビューにも含まれるようにするには、空の文字列(""
)を列修飾子の接頭辞として指定する必要があります。たとえば、定義ファイルでは、ファミリー サブセットに "qualifierPrefixes": [""]
が含まれます。
同様に、テーブルのすべての行を含む承認済みビューを定義する場合は、行キーの接頭辞として空の文字列(""
)を指定します。定義ファイルでは、ビューのサブセットで "rowPrefixes": [""]
と記述されます。
定義ファイルの例
このセクションでは、承認済みビュー定義ファイルの 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"]
}
}
}