

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

# 許可範例案例
<a name="security-permissions-example-scenario"></a>

下列案例有助於示範如何設定許可，以安全存取 中的資料 AWS Lake Formation。

Shirley 是資料管理員。她想要為公司 AnyCompany 設定資料湖。目前，所有資料都存放在 Amazon S3 中。John 是行銷經理，需要客戶購買資訊的寫入存取權 （包含在 中`s3://customerPurchases`)。行銷分析師 Diego 今年夏天加入 John。John 需要能夠在不涉及 Shirley 的情況下，授予 Diego 對資料執行查詢的存取權。

Mateo 需要財務部門的存取權，才能查詢會計資料 （例如 `s3://transactions`)。他想要查詢財務團隊使用之資料庫 (`Finance_DB`) 資料表中的交易資料。他的經理 Arnav 可以讓他存取 `Finance_DB`。雖然他不應該修改會計資料，但他需要能夠將資料轉換為適合預測的格式 （結構描述）。此資料會存放在他可以修改的個別儲存貯體 (`s3://financeForecasts`) 中。

若要摘要：
+ Shirley 是資料湖管理員。
+ John 需要 `CREATE_DATABASE`和 `CREATE_TABLE`許可，才能在 Data Catalog 中建立新的資料庫和資料表。
+ John 還需要他所建立資料表的 `SELECT``INSERT`、 和 `DELETE`許可。
+ Diego 需要資料表的`SELECT`許可才能執行查詢。

AnyCompany 的員工會執行下列動作來設定許可。為了清楚起見，此案例中顯示的 API 操作會顯示簡化的語法。

1. Shirley 向 Lake Formation 註冊包含客戶購買資訊的 Amazon S3 路徑。

   ```
   RegisterResource(ResourcePath("s3://customerPurchases"), false, Role_ARN )
   ```

1. Shirley 授予 John 存取包含客戶購買資訊的 Amazon S3 路徑。

   ```
   GrantPermissions(John, S3Location("s3://customerPurchases"), [DATA_LOCATION_ACCESS]) )
   ```

1. Shirley 授予 John 建立資料庫的許可。

   ```
   GrantPermissions(John, catalog, [CREATE_DATABASE]) 
   ```

1. John 建立資料庫 `John_DB`。John 會自動擁有該資料庫的`CREATE_TABLE`許可，因為他建立了該資料庫。

   ```
   CreateDatabase(John_DB)
   ```

1. John 建立`John_Table`指向 的資料表`s3://customerPurchases`。因為他建立了資料表，所以他對其擁有所有許可，並且可以授予許可。

   ```
   CreateTable(John_DB, John_Table)
   ```

1. John 允許他的分析師 Diego 存取資料表 `John_Table`。

   ```
    GrantPermissions(Diego, John_Table, [SELECT])
   ```

1. John 允許他的分析師 Diego 存取 `s3://customerPurchases/London/`。由於 Shirley 已註冊 `s3://customerPurchases`，因此其子資料夾會向 Lake Formation 註冊。

   ```
    GrantDataLakePrivileges( 123456789012/datalake, Diego, [DATA_LOCATION_ACCESS], [], S3Location("s3://customerPurchases/London/") )
   ```

1. John 允許他的分析師 Diego 在資料庫 中建立資料表`John_DB`。

   ```
    GrantDataLakePrivileges( 123456789012/datalake, Diego, John_DB, [CREATE_TABLE], [] )
   ```

1. Diego `John_DB` 在 的 中建立資料表，`s3://customerPurchases/London/`並自動取得 `ALTER`、`DROP`、`INSERT`、 `SELECT`和 `DELETE`許可。

   ```
    CreateTable( 123456789012/datalake, John_DB, Diego_Table )
   ```