

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Lake Formation 中的資料篩選和儲存格層級安全性
資料篩選和儲存格層級安全性

當您授予資料目錄資料表的 Lake Formation 許可時，您可以包含資料篩選規格，以限制對與 Lake Formation 整合之查詢結果和引擎中特定資料的存取。Lake Formation 使用資料篩選來實現資料欄層級安全性、資料列層級安全性和儲存格層級安全性。如果您的來源資料包含巢狀結構，您可以在巢狀資料欄上定義和套用資料篩選條件。

透過 Lake Formation 的資料篩選功能，您可以實作以下層級的資料安全。

**資料欄層級安全**  
對資料目錄資料表授予具有資料欄層級安全性 （資料欄篩選） 的許可，可讓使用者僅檢視其在資料表中可存取的特定資料欄和巢狀資料欄。考慮在大型多區域通訊公司的多個應用程式中使用的`persons`資料表。使用欄篩選授予資料目錄資料表的許可可以限制不在 HR 部門工作的使用者查看個人身分識別資訊 (PII)，例如社會安全號碼或出生日期。您也可以定義安全政策，並僅授予對巢狀資料欄部分子結構的存取權。

**資料列層級安全性**  
對資料目錄資料表授予具有資料列層級安全性 （資料列篩選） 的許可，可讓使用者僅檢視其在資料表中可存取的特定資料列。篩選是根據一或多個資料欄的值。您可以在定義資料列篩選條件表達式時包含巢狀資料欄結構。例如，如果通訊公司的不同區域辦公室有自己的 HR 部門，您可以將 HR 員工可以看到的人員記錄限制為僅限其區域中員工的記錄。

**儲存格層級安全性**  
儲存格層級安全性結合了資料列篩選和資料欄篩選，可提供高度彈性的許可模型。如果您使用儲存格層級安全性將資料表的資料列和資料欄檢視為網格，則可以限制存取兩個維度中的任何位置的網格個別元素 （儲存格）。也就是說，您可以根據資料列限制對不同資料欄的存取。這由下圖說明，其中限制的資料欄會著色。

![\[網格會顯示 5 列和 6 欄。資料列和資料欄具有 Col1, Col2, Row1, Row2 等標頭。具有下列座標的網格儲存格會著色：R3,C1; R3,C2; R3,C3; R5,C1; R5;C2; R5,C5; R5,C6。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/cells-diagram.png)


繼續人員資料表的範例，您可以在儲存格層級建立*資料篩選條件*，如果資料列的國家/地區資料欄設定為 "UK"，則限制對街道地址資料欄的存取，但如果資料列的國家/地區資料欄設定為 "US"，則允許存取街道地址資料欄。

篩選條件僅適用於讀取操作。因此，您只能使用篩選條件授予 `SELECT` Lake Formation 許可。

**巢狀資料欄上的儲存格層級安全性**  
Lake Formation 可讓您在巢狀資料欄上定義和套用具有儲存格層級安全性的資料篩選條件。不過，Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 等整合分析引擎支援對具有資料列和資料欄層級安全性的 Lake Formation 受管巢狀資料表執行查詢。

如需限制的詳細資訊，請參閱[資料篩選限制](data-filtering-notes.md)。

**Topics**
+ [

## Lake Formation 中的資料篩選條件
](#data-filters-about)
+ [

# 資料列篩選條件表達式中的 PartiQL 支援
](partiql-support.md)
+ [

# 使用儲存格層級篩選查詢資料表所需的許可
](row-filtering-prereqs.md)
+ [

# 管理資料篩選條件
](managing-filters.md)

## Lake Formation 中的資料篩選條件
資料篩選條件

您可以建立*資料篩選條件*，來實作資料欄層級、資料列層級和儲存格層級安全性。當您授予資料表的 `SELECT` Lake Formation 許可時，請選取資料篩選條件。如果您的資料表包含巢狀資料欄結構，您可以透過包含或排除子資料欄來定義資料篩選條件，並在巢狀屬性上定義資料列層級篩選條件表達式。



每個資料篩選條件都屬於 Data Catalog 中的特定資料表。資料篩選條件包含下列資訊：
+ 篩選器名稱
+ 與篩選條件相關聯的資料表目錄 IDs 
+ 資料表名稱
+ 包含資料表的資料庫名稱
+ 資料欄規格 – 要包含或排除在查詢結果中的資料欄和巢狀資料欄 （含`struct`資料類型） 的清單。
+ 資料列篩選條件表達式 – 指定要包含在查詢結果中的資料列的表達式。在某些限制下，表達式具有 PartiQL 語言中 `WHERE`子句的語法。若要指定所有資料列，請在主控台中選擇存取資料列層級存取下**的所有資料**列，或在 API 呼叫`AllRowsWildcard`中使用 。 ****

  如需資料列篩選條件表達式中所支援內容的詳細資訊，請參閱 [資料列篩選條件表達式中的 PartiQL 支援](partiql-support.md)。

您取得的篩選層級取決於資料篩選條件的填入方式。
+ 如果您指定「所有資料行」萬用字元並提供資料列篩選條件運算式，則只會建立資料列層級安全性 (資料列篩選)。
+ 當您包含或排除特定資料欄和巢狀資料欄，並使用全列萬用字元指定「所有資料列」時，您只會建立資料欄層級的安全性 （資料欄篩選）。
+ 如果包含或排除特定資料行並提供資料列篩選條件運算式，則會建立儲存格層級安全性 (儲存格篩選)。

下列 Lake Formation 主控台的螢幕擷取畫面顯示執行儲存格層級篩選的資料篩選條件。對於針對`orders`資料表的查詢，它會限制對 `customer_name`欄的存取，而查詢結果只會傳回包含 'pharma' `product_type`欄的資料列。

![\[資料篩選條件視窗包含這些垂直排列的欄位：資料篩選條件名稱；目標資料庫；目標資料表；具有選項的選項按鈕群組 存取所有欄、包含欄和排除欄；選取欄 （下拉式清單）；資料列篩選條件表達式 （多行文字方塊）。選取排除資料欄選項，選取 customer_name 資料欄進行排除，且資料列篩選條件表達式欄位包含 'product_type='pharma'。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/data-filter-sample-pharma.png)


請注意，使用單引號括住字串常值 `'pharma'`。

您可以使用 Lake Formation 主控台來建立此資料篩選條件，也可以將下列請求物件提供給 `CreateDataCellsFilter` API 操作。

```
{
     "Name": "restrict-pharma",
     "DatabaseName": "sales",
     "TableName": "orders",
     "TableCatalogId": "111122223333",      
     "RowFilter": {"FilterExpression": "product_type='pharma'"},
     "ColumnWildcard": {
         "ExcludedColumnNames": ["customer_name"]
     }
}
```

您可以視需要為資料表建立任意數量的資料篩選條件。若要這樣做，您需要資料表上具有授予選項的`SELECT`許可。根據預設，Data Lake 管理員具有在該帳戶中的所有資料表上建立*資料篩選條件*的許可。您通常只會在將資料表的許可授予委託人時，使用可能的資料篩選條件子集。例如，您可以為`orders`資料表建立第二個資料篩選條件，這是row-security-only的資料篩選條件。請參閱上述螢幕擷取畫面，您可以選擇**存取所有資料欄**選項，並包含 的資料列篩選條件表達式`product_type<>pharma`。此資料篩選條件的名稱可以是 `no-pharma`。它會限制對資料`product_type`欄設定為 'pharma' 的所有資料列的存取。

此資料篩選條件的 `CreateDataCellsFilter` API 操作請求物件如下。

```
{
     "Name": "no-pharma",
     "DatabaseName": "sales",
     "TableName": "orders",
     "TableCatalogId": "111122223333",      
     "RowFilter": {"FilterExpression": "product_type<>'pharma'"},
     "ColumnNames": ["customer_id", "customer_name", "order_num"
          "product_id", "purchase_date", "product_type", 
          "product_manufacturer", "quantity", "price"]
}
```

然後，您可以將`orders`資料表`SELECT`上的`restrict-pharma`資料篩選條件授予管理使用者，將`orders`資料表`SELECT`上的`no-pharma`資料篩選條件授予非管理使用者。對於醫療保健領域中的使用者，您可以在`orders`資料表`SELECT`上授予 ，以完整存取所有資料列和資料欄 （無資料篩選條件），或者使用另一個限制對定價資訊的存取的資料篩選條件。

 在資料篩選條件中指定資料欄層級和資料列層級安全性時，您可以包含或排除巢狀資料欄。在下列範例中，使用合格的資料欄名稱 （以雙引號包裝） 指定對 `product.offer` 欄位的存取。這對於巢狀欄位很重要，以避免資料欄名稱包含特殊字元時發生錯誤，並維持與最上層資料欄層級安全定義的回溯相容性。

```
{
     "Name": "example_dcf",
     "DatabaseName": "example_db",
     "TableName": "example_table",
     "TableCatalogId": "111122223333",      
     "RowFilter": { "FilterExpression": "customer.customerName <> 'John'" },
     "ColumnNames": ["customer", "\"product\".\"offer\""]
}
```

**另請參閱**  
[管理資料篩選條件](managing-filters.md)

# 資料列篩選條件表達式中的 PartiQL 支援


您可以使用 PartiQL 資料類型、運算子和彙總的子集來建構資料列篩選條件表達式。Lake Formation 不允許篩選表達式中的任何使用者定義或標準 partiQL 函數。您可以使用比較運算子來比較資料欄與常數 （例如 `views >= 10000`)，但無法比較資料欄與其他資料欄。

 資料列篩選條件表達式可以是簡單表達式或複合表達式。表達式的總長度必須小於 2048 個字元。

**簡單表達式**  
簡單表達式的格式如下：` <column name > <comparison operator ><value >`
+ **資料欄名稱**

  它可以是頂層資料欄、分割區欄或資料表結構描述中存在的巢狀資料欄，且必須屬於下列[支援的資料類型](#row-filter-supported-datatypes)內容。
+ **比較運算子**

   以下是支援的運算子： `=, >, <, >=, <=, <>,!=, BETWEEN, IN, LIKE, NOT, IS [NOT] NULL`
+  所有字串比較和`LIKE`模式比對都區分大小寫。您無法在分割區資料欄上使用 IS 【NOT】 NULL 運算子。
+ **資料欄值**

   資料欄值必須符合資料欄名稱的資料類型。

**複合表達式**  
複合表達式的格式為：`( <simple expression >) <AND/OR >(<simple expression >)`。您可以使用邏輯運算子 進一步組合複合表達式`AND/OR`。

## 支援的資料類型


參考包含不支援資料類型之 AWS Glue Data Catalog 資料表的資料列篩選條件將導致錯誤。以下是資料表資料欄和常數支援的資料類型，其會對應至 Amazon Redshift 資料類型：
+ `STRING, CHAR, VARCHAR`
+ `INT, LONG, BIGINT, FLOAT, DECIMAL, DOUBLE`
+ `BOOLEAN`
+  `STRUCT` 

如需 Amazon Redshift 中資料類型的詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的[資料類型](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html)。

## 資料列篩選條件表達式


**Example**  
以下是具有資料欄之資料表的有效資料列篩選條件表達式範例： ` country (String), id (Long), year (partition column of type Integer), month (partition column of type Integer)`  
+ `year > 2010 and country != 'US'`
+ `(year > 2010 and country = 'US') or (month < 8 and id > 23)`
+ `(country between 'Z' and 'U') and (year = 2018)`
+ `(country like '%ited%') and (year > 2000)`

**Example**  
以下是具有巢狀資料欄之資料表的資料列篩選表達式的有效範例： `year > 2010 and customer.customerId <> 1 `  
 定義巢狀資料列層級表達式時，不應參考分割區資料欄下的巢狀欄位。

字串常數必須以單引號括住。

## 保留的關鍵字


如果您的資料列篩選條件表達式包含 PartiQL 關鍵字，您會收到剖析錯誤，因為資料欄名稱可能與關鍵字衝突。發生這種情況時，請使用雙引號逸出資料欄名稱。預留關鍵字的一些範例包括「first」、「last」、「asc」、「missing」。如需預留關鍵字清單，請參閱 PartiQL 規格。

## PartiQL 參考


如需 PartiQL 的詳細資訊，請參閱 [https://partiql.org/](https://partiql.org/)。

# 使用儲存格層級篩選查詢資料表所需的許可


需要下列 AWS Identity and Access Management (IAM) 許可，才能對具有儲存格層級篩選的資料表執行查詢。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:StartQueryPlanning",
                "lakeformation:GetQueryState",
                "lakeformation:GetWorkUnits",
                "lakeformation:GetWorkUnitResults"
            ],
            "Resource": "*"
        }
    ]
}
```

------

如需 Lake Formation 許可的詳細資訊，請參閱 [Lake Formation 角色和 IAM 許可參考](permissions-reference.md)。

# 管理資料篩選條件


若要實作資料欄層級、資料列層級和儲存格層級的安全性，您可以建立和維護資料篩選條件。每個資料篩選條件都屬於 Data Catalog 資料表。您可以為資料表建立多個資料篩選條件，然後在授予資料表的許可時使用一或多個資料篩選條件。您也可以在具有`struct`資料類型的巢狀資料欄上定義和套用資料篩選條件，讓使用者只能存取巢狀資料欄的子結構。

您需要具有授予選項的`SELECT`許可，才能建立或檢視資料篩選條件。若要允許帳戶中的主體檢視和使用資料篩選條件，您可以授予其`DESCRIBE`許可。

**注意**  
Lake Formation 不支援對從另一個帳戶共用的資料篩選條件授予`Describe`許可。

您可以使用 AWS Lake Formation 主控台、 API 或 () AWS Command Line Interface 來管理資料篩選條件AWS CLI。

如需資料篩選條件的相關資訊，請參閱 [Lake Formation 中的資料篩選條件](data-filtering.md#data-filters-about)

# 建立資料篩選條件


您可以為每個 Data Catalog 資料表建立一或多個資料篩選條件。

**建立 Data Catalog 資料表的資料篩選條件 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以資料湖管理員、目標資料表擁有者或擁有目標資料表 Lake Formation 許可的主體身分簽署。

1. 在導覽窗格中的資料**目錄**下，選擇**資料篩選條件**。

1. 在**資料篩選條件**頁面上，選擇**建立新篩選條件**。

1. 在**建立資料篩選條件**對話方塊中，輸入下列資訊：
   + 資料篩選條件名稱 
   + 目標資料庫 – 指定包含資料表的資料庫。
   + 目標資料表 
   + 資料欄層級存取 – 將此設定為**存取所有資料欄**，以僅指定資料列篩選。選擇**包含資料**欄或**排除資料欄**以指定資料欄或儲存格篩選，然後指定要包含或排除的資料欄。

     巢狀資料欄 – 如果您要在包含巢狀資料欄的資料表上套用篩選條件，您可以明確指定資料篩選條件中巢狀結構資料欄的子結構。

     當您將 SELECT 許可授予此檔案伺服器上的委託人時，執行下列查詢的委託人只會看到 的資料，`customer.customerName`而不會看到 的資料`customer.customerId`。

     ```
     SELECT "customer" FROM "example_db"."example_table";
     ```  
![\[Column-level access settings with options to include specific columns and filter rows.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/nested-column-filter.png)

      當您授予資料`customer`欄的許可時，委託人會收到資料欄的存取權，以及資料欄 (`customerName` 和 ) 下的巢狀欄位`customerID`。
   + 資料列篩選條件表達式 – 輸入篩選條件表達式以指定資料列或儲存格篩選。如需支援的資料類型和運算子，請參閱 [資料列篩選條件表達式中的 PartiQL 支援](partiql-support.md)。選擇**存取所有資料列**，以授予存取所有 的權限。

     您可以在資料列篩選條件表達式中包含巢狀資料欄的部分資料欄結構，以篩選包含特定值的資料列。

     當委託人被授予具有資料列篩選條件表達式 的資料表許可`Select * from example_nestedtable where customer.customerName <>'John'`，且**資料欄層級**存取設定為**存取所有資料欄**時，查詢結果只會顯示 `customerName <>'John'`評估為 true 的資料列。

   下列螢幕擷取畫面顯示實作儲存格篩選的資料篩選條件。在對`orders`資料表的查詢中，它會拒絕存取資料`customer_name`欄，並只顯示資料`product_type`欄中具有「製藥」的資料列。  
![\[資料篩選條件視窗包含這些垂直排列的欄位：資料篩選條件名稱；目標資料庫；目標資料表；具有選項的選項按鈕群組 存取所有欄、包含欄和排除欄；選取欄 （下拉式清單）；資料列篩選條件表達式 （多行文字方塊）。選取排除資料欄選項，選取 customer_name 資料欄進行排除，且資料列篩選條件表達式欄位包含 'product_type='pharma'。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/data-filter-sample-pharma.png)

1. 選擇 **Create filter (建立篩選條件)**。

**在巢狀欄位上使用儲存格篩選條件政策建立資料篩選條件**

 本節使用以下範例結構描述，示範如何建立資料儲存格篩選條件：

```
[
    { name: "customer", type: "struct<customerId:string,customerName:string>" },
    { name: "customerApplication", type: "struct<appId:string>" },
    { name: "product", type: "struct<offer:struct<prodId:string,listingId:string>,type:string>" },
    { name: "purchaseId", type: "string" },
]
```

1. 在**建立資料篩選條件**上，頁面輸入資料篩選條件的名稱。

1.  接著，使用下拉式清單選擇資料庫名稱和資料表名稱。

1. 在**資料欄層級存取**區段中，選擇包含的資料欄，然後選取巢狀資料欄 (`customer.customerName`)。

1. 在**資料列層級存取**區段中，選擇**存取所有資料列**選項。

1. 選擇 **Create filter (建立篩選條件)**。

   當您授予此篩選條件的`SELECT`許可時，委託人可以存取 `customerName`資料欄中的所有資料列。

1. 接著，為相同的資料庫/資料表定義另一個資料篩選條件。

1. 在**資料欄層級存取**區段中，選擇包含的資料欄，然後選取另一個巢狀資料欄 (`customer.customerid`)。

1. 在**資料列層級存取**區段中，選擇**篩選資料列**，然後輸入**資料列篩選表達**式 (`customer.customerid <> 5`)。

1. 選擇 **Create filter (建立篩選條件)**。

   當您授予此篩選條件的`SELECT`許可時，委託人會收到 中所有資料列的存取權`customerName`，以及資料`customerId`欄中值為 5 的儲存格以外的`customerId`欄位。

# 授予資料篩選條件許可


您可以將資料篩選條件的 `SELECT`、 `DESCRIBE`和 `DROP` Lake Formation 許可授予委託人。

一開始，只有您可以檢視為資料表建立的資料篩選條件。若要讓另一個主體檢視資料篩選條件，並使用資料篩選條件授予 Data Catalog 許可，您必須：
+ 使用授予選項將資料表`SELECT`上的 授予委託人，並將資料篩選條件套用至授予。
+ 將資料篩選條件的 `DESCRIBE`或 `DROP`許可授予委託人。

您可以將 `SELECT`許可授予外部 AWS 帳戶。然後，該帳戶中的資料湖管理員可以將該許可授予帳戶中的其他主體。授予外部帳戶時，您必須包含授予選項，外部帳戶的管理員才能進一步將許可串聯至其帳戶中的其他使用者。授予您帳戶中的委託人時，使用授予選項進行授予是選用的。

您可以使用 AWS Lake Formation 主控台、 API 或 AWS Command Line Interface () 授予和撤銷資料篩選條件的許可AWS CLI。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟 Lake Formation 主控台，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中的**許可**下，選擇**資料湖許可**。

1. 在**許可**頁面上**的資料許可**區段中，選擇**授予**。

1. 在**授予資料許可**頁面上，選擇要授予許可的委託人。

1. 在 LF 標籤或目錄資源區段中，選擇**具名資料目錄資源**。然後選擇您要授予許可的資料庫、資料表和資料篩選條件。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. 在**資料篩選條件許可**區段中，選擇您要授予所選委託人的許可。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-perms-on-filters.png)

------
#### [ AWS CLI ]
+ 輸入`grant-permissions`命令。`DataCellsFilter` 為`resource`引數指定 ，並為`Permissions`引數指定 `DROP` `DESCRIBE`或 ，並選擇性地為`PermissionsWithGrantOption`引數指定 或 。

  下列範例`DESCRIBE`使用授予選項授予 `datalake_user1`使用者`restrict-pharma`，該選項屬於 AWS 帳戶 1111-2222-3333 中`sales`資料庫中的`orders`資料表。

  ```
  aws lakeformation grant-permissions --cli-input-json file://grant-params.json
  ```

  以下是檔案 的內容`grant-params.json`。

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------

# 授予資料篩選條件提供的資料許可


資料篩選條件代表資料表中的資料子集。若要提供資料存取權給委託人，需要將`SELECT`許可授予這些委託人。透過此許可，委託人可以：
+ 在與其帳戶共用的資料表清單中檢視實際的資料表名稱。
+ 在共用資料表上建立資料篩選條件，並授予使用者對這些資料篩選條件的許可。

------
#### [ Console ]

**授予 SELECT 許可**

1. 前往 Lake Formation 主控台中的**許可**頁面，然後選擇**授予**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/permissions-grant-action.png)

1. 選取您要提供存取權的主體，然後選取**具名資料目錄資源**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. 若要提供篩選條件所代表資料的存取權，請選擇**資料篩選條件許可**下的**選取**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-data-filter-perms-step3.png)

------
#### [ CLI ]

輸入`grant-permissions`命令。`DataCellsFilter` 為資源引數指定 ，並為`SELECT`許可引數指定 。

下列範例`SELECT`使用 授予選項授予資料篩選條件 `datalake_user1`上的使用者`restrict-pharma`，該選項屬於 中`sales`資料庫中的 `orders`資料表 AWS 帳戶 `1111-2222-3333`。

```
aws lakeformation grant-permissions --cli-input-json file://grant-params.json 
```

以下是檔案 的內容`grant-params.json`。

```
{
    "Principal": {
        "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
    },
    "Resource": {
        "DataCellsFilter": {
            "TableCatalogId": "111122223333", 
            "DatabaseName": "sales", 
            "TableName": "orders", 
            "Name": "restrict-pharma"
        }
    },
    "Permissions": ["SELECT"]
}
```

------

# 檢視資料篩選條件


您可以使用 Lake Formation 主控台 AWS CLI或 Lake Formation API 來檢視資料篩選條件。

若要檢視資料篩選條件，您必須是 Data Lake 管理員或擁有資料篩選條件所需的許可。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟 Lake Formation 主控台，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中的資料**目錄**下，選擇**資料篩選條件**。

   此頁面會顯示您有權存取的資料篩選條件。  
![\[資料篩選條件頁面使用下列資料欄顯示可用的資料篩選條件：篩選條件名稱、資料表、資料庫和資料表目錄 ID。螢幕擷取畫面顯示具有下列值的單一資料篩選條件：test-df、Cloudtrailtest_cloudtrail、lakeformation_cloudtrail、已修訂的帳戶 ID。在資料表上方有四個按鈕 （從左到右）：重新整理/重新載入、檢視 （灰色）、刪除 （灰色） 和「建立新篩選條件」。還有一個搜尋欄位，這是空的。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/list-data-filters.jpg)

1. 若要檢視資料篩選條件詳細資訊，請選擇資料篩選條件，然後選擇檢視。隨即出現新視窗，其中包含資料篩選條件詳細資訊。  
![\[「檢視資料篩選條件」視窗會顯示所選資料篩選條件的其他資訊。顯示的資訊包括名稱、資料庫、資料表、資料欄層級存取設定、資料列篩選條件表達式和資料欄。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/list-data-filters-details.jpg)

------
#### [ AWS CLI ]

輸入`list-data-cells-filter`命令並指定資料表資源。

下列範例列出`cloudtrailtest_cloudtrail`資料表的資料篩選條件。

```
aws lakeformation list-data-cells-filter --table '{ "CatalogId":"123456789012", 
"DatabaseName":"lakeformation_cloudtrail", "Name":"cloudtrailtest_cloudtrail"}'
```

------
#### [ API/SDK ]

使用 `ListDataCellsFilter` API 並指定資料表資源。

下列範例使用 Python 列出`myTable`資料表的前 20 個資料篩選條件。

```
response = client.list_data_cells_filter(
    Table = {
        'CatalogId': '111122223333',
        'DatabaseName': 'mydb',
        'Name': 'myTable'
    },
    MaxResults=20
)
```

------

# 列出資料篩選條件許可


您可以使用 Lake Formation 主控台來檢視資料篩選條件上授予的許可。

若要檢視資料篩選條件的許可，您必須是 Data Lake 管理員或具有資料篩選條件所需的許可。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟 Lake Formation 主控台，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中的**許可**下，選擇**資料許可**。

1. 在**資料許可**頁面上，按一下或點選搜尋欄位，然後在**屬性**功能表中選擇**資源類型**。

1. 在**資源類型**功能表中，選擇**資源類型：資料儲存格篩選條件**。

   列出您在 上擁有許可的資料篩選條件。您可能需要水平捲動，才能查看**許可**和**可授予**資料欄。  
![\[資料許可頁面會顯示具有下列資料欄的許可表：主體、資源類型、資料庫、資料表、資源、目錄和許可。資源類型欄會在所有四列中顯示「資料儲存格篩選條件」。第一列和第二列的許可為 Describe、Drop 和 Select。第三列的許可是 Describe。資料表上方有一個清除篩選條件按鈕和一個圖磚，指出目前的搜尋是資源類型：資料儲存格篩選條件。以上是搜尋 （文字） 欄位，以上則是重新整理、撤銷和授予按鈕。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/data-permissions-cell-filters.png)

------
#### [ AWS CLI ]
+ 輸入`list-permissions`命令。`DataCellsFilter` 為`resource`引數指定 ，並為`Permissions`引數指定 `DROP` `DESCRIBE`或 ，並選擇性地為`PermissionsWithGrantOption`引數指定 或 。

  下列範例會列出資料篩選條件 上具有授予選項的`DESCRIBE`許可`restrict-pharma`。結果僅限於帳戶 1111-2222-3333 中`sales`資料庫的委託人`datalake_user1`和`orders`資料表所授予 AWS 的許可。

  ```
  aws lakeformation list-permissions --cli-input-json file://list-params.json
  ```

  以下是檔案 的內容`grant-params.json`。

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------