

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

# 基礎資料存取控制
<a name="access-control-underlying-data"></a>

當整合 AWS 的服務請求存取由 控制存取的 Amazon S3 位置中的資料時 AWS Lake Formation，Lake Formation 會提供臨時登入資料來存取資料。

若要讓 Lake Formation 控制對 Amazon S3 位置基礎資料的存取，請向 Lake Formation *註冊*該位置。

註冊 Amazon S3 位置後，您可以開始授予下列 Lake Formation 許可：
+ 指向該位置的資料目錄資料表`DELETE)`上的資料存取許可 `SELECT`(`INSERT`、 和 。
+ 該位置上的資料位置許可。

Lake Formation 資料位置許可可控制建立指向特定 Amazon S3 位置之 Data Catalog 資源的能力。資料位置許可可為資料湖內的位置提供額外的安全層。當您將 `CREATE_TABLE`或 `ALTER`許可授予委託人時，您也會授予資料位置許可，以限制委託人可以建立或修改中繼資料表的位置。

Amazon S3 位置是儲存貯體下的儲存貯體或字首，但不是個別的 Amazon S3 物件。

您可以使用 Lake Formation 主控台、 API 或 ，將資料位置許可授予委託人 AWS CLI。授予的一般形式如下：

```
grant DATA_LOCATION_ACCESS to principal on S3 location [with grant option]
```

如果您包含 `with grant option`，承授者可以將許可授予其他委託人。

請記住，Lake Formation 許可一律會與 AWS Identity and Access Management (IAM) 許可搭配使用，以進行精細存取控制。對於基礎 Amazon S3 資料的讀取/寫入許可，IAM 許可的授予方式如下：

當您註冊位置時，您可以指定 IAM 角色來授予該位置的讀取/寫入許可。Lake Formation 在將臨時登入資料提供給整合 AWS 服務時，會擔任該角色。典型角色可能附加了下列政策，其中註冊的位置是儲存貯體 `awsexamplebucket`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        }
    ]
}
```

------

Lake Formation 提供一個服務連結角色，您可以在註冊期間用來自動建立像這樣的政策。如需詳細資訊，請參閱[使用 Lake Formation 的服務連結角色](service-linked-roles.md)。

因此，註冊 Amazon S3 位置會授予該位置所需的 IAM `s3:`許可，其中許可是由用來註冊位置的角色所指定。

**重要**  
避免註冊已啟用**申請者付款**的 Amazon S3 儲存貯體。對於向 Lake Formation 註冊的儲存貯體，用於註冊儲存貯體的角色一律會被視為申請者。如果儲存貯體是由另一個 AWS 帳戶存取，則如果角色屬於與儲存貯體擁有者相同的帳戶，則會向儲存貯體擁有者收取資料存取費用。

對於基礎資料的讀取/寫入存取，除了 Lake Formation 許可之外，主體還需要 `lakeformation:GetDataAccess` IAM 許可。有了此許可，Lake Formation 就會授與要求存取資料所需的臨時憑證。

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

****  

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

------

 在上述政策中，您必須將 Resource 參數設定為 '\$1' （全部。不支援為此許可指定任何其他資源。此組態可確保 Lake Formation 可以有效率地管理整個資料湖環境中的資料存取。

**注意**  
Amazon Athena 要求使用者擁有 `lakeformation:GetDataAccess`許可。其他整合服務需要其基礎執行角色才能擁有 `lakeformation:GetDataAccess`許可。

此許可包含在 的建議政策中[Lake Formation 角色和 IAM 許可參考](permissions-reference.md)。

總而言之，若要讓 Lake Formation 主體能夠讀取和寫入具有 Lake Formation 許可所控制存取的基礎資料：
+ 向 Lake Formation 註冊包含資料的 Amazon S3 位置。
+ 建立指向基礎資料位置之 Data Catalog 資料表的主體必須具有資料位置許可。
+ 讀取和寫入基礎資料的主體必須在資料目錄資料表上具有指向基礎資料位置的 Lake Formation 資料存取許可。
+ 當基礎資料位置向 Lake Formation `lakeformation:GetDataAccess` 註冊時，讀取和寫入基礎資料的委託人必須具有 IAM 許可。

**注意**  
如果您可以透過 IAM 或 Amazon S3 政策存取 Amazon S3 API 或主控台，Lake Formation 許可模型不會阻止透過 Amazon S3 API 或主控台存取 Amazon S3 位置。您可以將 IAM 政策連接至主體以封鎖此存取。

**有關資料位置許可的詳細資訊**  
資料位置許可會管理 Data Catalog 資料庫和資料表上建立和更新操作的結果。規則如下：
+ 委託人必須在 Amazon S3 位置上具有明確或隱含的資料位置許可，才能建立或更新指定該位置的資料庫或資料表。
+ 明確許可`DATA_LOCATION_ACCESS`是使用 主控台、API 或 授予 AWS CLI。
+ 當資料庫具有指向已註冊位置的位置屬性、主體具有資料庫的`CREATE_TABLE`許可，且主體嘗試在該位置或子位置建立資料表時，就會授予隱含許可。
+ 如果將資料位置許可授予委託人，則委託人在所有子位置都有資料位置許可。
+ 主體不需要資料位置許可，即可對基礎資料執行讀取/寫入操作。具備 `SELECT`或 `INSERT`資料存取許可就已足夠。資料位置許可僅適用於建立指向位置的 Data Catalog 資源。

考慮下圖中顯示的案例。

![\[資料夾階層和兩個資料庫，資料庫 A 和 B，其中資料庫 B 指向客戶服務資料夾。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/location-permissions-example.png)


在這張圖中：
+ Amazon S3 儲存貯體 `Products`、 `Finance`和 `Customer Service` 已向 Lake Formation 註冊。
+ `Database A` 沒有位置屬性，且`Database B`具有指向儲存`Customer Service`貯體的位置屬性。
+ 使用者在兩個資料庫`CREATE_TABLE`上`datalake_user`都有 。
+ `datalake_user` 使用者僅獲得儲存`Products`貯體上的資料位置許可。

以下是使用者`datalake_user`嘗試在特定位置的特定資料庫中建立目錄資料表時的結果。


**`datalake_user` 嘗試建立資料表的位置**  

| 資料庫和位置 | 成功或失敗 | Reason | 
| --- | --- | --- | 
| 資料庫 A 位於 Finance/Sales | 失敗 | 沒有資料位置許可 | 
| 資料庫 A 位於 Products | 成功 | 具有資料位置許可 | 
| 資料庫 A 位於 HR/Plans | 成功 | 位置未註冊 | 
| 資料庫 B 位於 Customer Service/Incidents | 成功 | 資料庫的位置屬性位於 Customer Service | 

如需詳細資訊，請參閱下列內容：
+ [將 Amazon S3 位置新增至您的資料湖](register-data-lake.md)
+ [Lake Formation 許可參考](lf-permissions-reference.md)
+ [Lake Formation 角色和 IAM 許可參考](permissions-reference.md)