

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# データフィルタリングの制限事項
<a name="data-filtering-notes"></a>

Data Catalog テーブルに対する Lake Formation 許可を付与するときは、クエリ結果、および Lake Formation と統合されたエンジン内の特定のデータへのアクセスを制限するためのデータフィルタリング仕様を含めることができます。Lake Formation は、列レベルのセキュリティ、行レベルのセキュリティ、およびセルレベルのセキュリティを実現するために、データフィルタリングを使用します。ソースデータにネストされた構造が含まれている場合は、ネストされた列にデータフィルターを定義して適用できます。

## 列レベルのフィルタリングに関する注意点と制限
<a name="column-filtering-notes"></a>

列フィルタリングを指定する方法は 3 つあります。
+ データフィルターの使用。
+ シンプルな列フィルタリングまたはネストされた列フィルタリングの使用。
+ タグの使用。

シンプルな列フィルタリングは、包含または除外する列のリストを指定するだけです。Lake Formation コンソール、 API、 の両方が、単純な列フィルタリング AWS CLI をサポートしています。例については、「[Grant with Simple Column Filtering](granting-table-permissions.md#simple-column-filter-example)」を参照してください。

以下の注意点と制限が列フィルタリングに適用されます。
+ AWS Glue 5.0 以降では、Apache Hive および Apache Iceberg テーブルに対してのみ、Lake Formation を介したきめ細かなアクセスコントロールがサポートされています。
+ grant オプションと列フィルタリングを伴う `SELECT` を付与するには、除外リストではなく、包含リストを使用する必要があります grant オプションを使用しない場合は、包含リストまたは除外リストのどちらでも使用することができます。
+ テーブルに対する `SELECT` を列フィルタリングと共に付与するには、テーブルに対する grant オプション付きの `SELECT` を、行制限なしで付与されている必要があります。すべての行にアクセスできる必要があります。
+ grant オプションと列フィルタリングを伴う `SELECT` をアカウント内のプリンシパルに付与する場合、そのプリンシパルは、別のプリンシパルへの付与時に、同じ列、または付与列のサブセットに対する列フィルタリングを指定する必要があります。grant オプションと列フィルタリングを伴う `SELECT` を外部アカウントに付与する場合、外部アカウントのデータレイク管理者は、そのアカウント内の別のプリンシパルに、すべての列に対する `SELECT` を付与することができます。ただし、すべての列に対する `SELECT` があるとしても、そのプリンシパルに表示されるのは外部アカウントに付与された列のみになります。
+ パーティションキーに列フィルタリングを適用することはできません。
+ テーブル内の列のサブセットに対する `SELECT` 許可を持つプリンシパルに、そのテーブルに対する `ALTER`、`DROP`、`DELETE` または `INSERT` 許可を付与することはできません。テーブルに対する `ALTER`、`DROP`、`DELETE` または `INSERT` 許可を持つプリンシパルについては、列フィルタリングを伴う `SELECT` 許可を付与しても、効果はありません。

以下の注意点と制限が、ネストされた列フィルタリングに適用されます。
+  データフィルターでは 5 レベルのネストされたフィールドを含めたり除外したりできます。  
**Example**  

  Col1.Col1\_1.Col1\_1\_1.Col1\_1\_1\_1.Col1\_1\_1\_1\_1
+  パーティション列内のネストされたフィールドに列フィルタリングを適用することはできません。
+  テーブルスキーマに、データフィルター内のネストされたフィールド表現と同じパターンを持つ最上位の列名 ("customer"."address") が含まれている場合 (最上位の列名 `customer` とネストされたフィールド名 `address` を持つネストされた列は、データフィルターで `"customer"."address"` として指定されます)、最上位の列とネストされたフィールドは両方とも包含/除外リストの同じパターンを使用するため、最上位の列またはネストされたフィールドへのアクセスを明示的に指定することはできません。これはあいまいであり、最上位の列を指定しているのか、ネストされたフィールドを指定しているのか、Lake Formation は解決できません。
+ 最上位の列またはネストされたフィールドの名前に 1 つの二重引用符が含まれている場合、データセルフィルターの包含リストと除外リスト内のネストされたフィールドへのアクセスを指定するときに、2 つ目の二重引用符を含める必要があります。  
**Example**  

  二重引用符を使用したネストされた列名の例 — `a.b.double"quote`  
**Example**  

  データフィルター内のネストされた列表現の例 — ` "a"."b"."double""quote"`

## セルレベルのフィルタリングの制限
<a name="cell-filtering-notes.title"></a>

行レベルおよびセルレベルのフィルタリングに関しては、以下の注意点と制限に留意してください。
+  セルレベルのセキュリティは、ネストされた列、ビュー、リソースリンクではサポートされません。
+ 最上位の列でサポートされているすべての式は、ネストされた列でもサポートされます。ただし、ネストされた行レベルの式を定義するときは、パーティション列の下のネストされたフィールドを参照**しない**でください。
+  Athena エンジンバージョン 3 または Amazon Redshift Spectrum を使用すると、すべてのリージョンでセルレベルのセキュリティを利用できます。他のサービスでは、セルレベルのセキュリティは、[サポートされるリージョン](supported-regions.md) に記載されているリージョンでのみ利用できます。
+  `SELECT INTO` ステートメントはサポートされません。
+ `array` および `map` データ型は、行フィルター式ではサポートされていません。`struct` データ型はサポートされています。
+ テーブルに定義できるデータフィルターの数に上限はありませんが、テーブルあたり 1 つのプリンシパルに対してデータフィルター 100 個という上限があります。
+ 行フィルター式があるデータフィルターを適用するには、すべてのテーブル列に対する grant オプション付きの `SELECT` を持っている必要があります。付与が外部アカウントに行われた場合、この制限は外部アカウントの管理者には適用されません。
+ プリンシパルがグループのメンバーであり、プリンシパルとグループの両方に行のサブセットに対する許可が付与されている場合、プリンシパルの有効な行の許可は、プリンシパルの許可とグループの許可を合わせたものになります。
+ 行レベルおよびセルレベルのフィルタリングでは、テーブルの以下の列名が制限されています。
  + ctid
  + oid
  + xmin
  + cmin
  + xmax
  + cmax
  + tableoid
  + insertxid
  + deletexid
  + importoid
  + redcatuniqueid
+ 述語を持つ他のフィルター式と同時に全行フィルター式をテーブルに適用する場合は、全行フィルター式が他のすべてのフィルター式に優先します。
+ 行のサブセットに対するアクセス許可が外部 AWS アカウントに付与され、外部アカウントのデータレイク管理者がそのアカウントのプリンシパルにそれらのアクセス許可を付与する場合、プリンシパルの有効なフィルター述語は、アカウントの述語とプリンシパルに直接付与された述語の共通部分です。

  例えば、アカウントに述語 `dept='hr'` を持つ行の許可があり、プリンシパルに `country='us'` の許可を別途付与された場合、プリシパルは `dept='hr'` と `country='us'` の行にのみアクセスすることができます。

セルレベルのフィルタリングの詳細については、「[Lake Formation でのデータフィルタリングとセルレベルのセキュリティ](data-filtering.md)」を参照してください。

行レベルのセキュリティポリシーで Amazon Redshift Spectrum を使用してテーブルをクエリする際の考慮事項と制限については、「Amazon Redshift データベースデベロッパーガイド」の「[RLS ポリシーを使用する際の考慮事項](https://docs.aws.amazon.com/redshift/latest/dg/t_rls_usage.html)」を参照してください。