

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

# S3 Tables 的存取管理
<a name="s3-tables-setting-up"></a>

在 S3 Tables 中，資源包含資料表儲存貯體及其包含的資料表。 AWS 帳戶 在該帳戶中建立資源 （資源擁有者） 和 AWS Identity and Access Management (IAM) 使用者的根使用者可以存取他們建立的資源。資源擁有者會指定可以存取資源的人員，以及允許其對資源執行的動作。Amazon S3 具有各種存取管理工具，可供您用來授權其他人存取 S3 資源。如果您已將資料表與 整合 AWS Lake Formation，您也可以管理資料表和命名空間的精細存取。下列主題為您提供 S3 Tables 的資源、IAM 動作和條件索引鍵概觀。這些主題也提供 S3 Tables 的資源型和身分型政策範例。

**Topics**
+ [

## Resources
](#s3-tables-resources)
+ [

## S3 Tables 的動作
](#s3-tables-actions)
+ [

## S3 Tables 的條件索引鍵
](#s3-tables-conditionkeys)
+ [

# S3 Tables 的 IAM 身分型政策
](s3-tables-identity-based-policies.md)
+ [

# 適用於 S3 Tables 的資源型政策
](s3-tables-resource-based-policies.md)
+ [

# AWS S3 Tables 的 受管政策
](s3-tables-security-iam-awsmanpol.md)
+ [

# 使用 SQL 語意授予存取權
](s3-tables-sql.md)
+ [

# 使用 Lake Formation 管理對資料表或資料庫的存取
](grant-permissions-tables.md)

## Resources
<a name="s3-tables-resources"></a>

S3 Tables 資源包含資料表儲存貯體及其包含的資料表。
+ 資料表儲存貯體 – 資料表儲存貯體是專為資料表和提供者而設計，與一般用途 S3 儲存貯體中的自我管理資料表相比，每秒交易量 (TPS) 和查詢輸送量更佳。資料表儲存貯體可提供與 Amazon S3 一般用途儲存貯體相同的耐用性、可用性、可擴展性和效能特性。
+ 資料表 – 資料表儲存貯體中的資料表會以 Apache Iceberg 格式儲存。您可以在支援 Iceberg 的查詢引擎中使用標準 SQL 來查詢這些資料表。

資料表和資料表儲存貯體的 Amazon Resource Name (ARNs) 包含`s3tables`命名空間、 AWS 區域、 AWS 帳戶 ID 和儲存貯體名稱。若要存取資料表和資料表儲存貯體並對這些項目執行動作，您必須使用下列 ARN 格式：
+ 資料表 ARN 格式：

  `arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-bucket/table/demo-tableID`

## S3 Tables 的動作
<a name="s3-tables-actions"></a>

在 IAM 身分型政策或資源型政策中，您能夠定義可針對 IAM 主體允許或拒絕哪些 S3 Tables 動作。資料表動作對應至儲存貯體和資料表層級 API 操作。所有動作都是唯一 IAM 命名空間的一部份：`s3tables`。

在政策中使用動作時，通常會允許或拒絕存取相同名稱的 API 操作。不過，在某些情況下，單一動作可控制對多個 API 操作的存取。例如，`s3tables:GetTableData` 動作包含 `GetObject`、`ListParts` 和 `ListMultiparts` API 操作的許可。

下列是資料表儲存貯體的支援動作。您可在 IAM 政策或資源政策的 `Action` 元素中指定以下動作。


| Action | Description | 存取層級 | 跨帳戶存取權 | 
| --- | --- | --- | --- | 
| s3tables:CreateTableBucket | 准許建立資料表儲存貯體 | Write | 否 | 
| s3tables:GetTableBucket | 准許擷取資料表儲存貯體 ARN、資料表儲存貯體名稱和建立日期。 | Write | 是 | 
| s3tables:ListTableBuckets | 准許列出此帳戶中的所有資料表儲存貯體。 | Read | 否 | 
| s3tables:CreateNamespace | 准許在資料表儲存貯體中建立命名空間 | Write | 是 | 
| s3tables:GetNamespace | 准許擷取命名空間詳細資料 | Read | 是 | 
| s3tables:ListNamespaces | 准許列出資料表儲存貯體上的所有命名空間。 | Read | 是 | 
| s3tables:DeleteNamespace | 准許刪除資料表儲存貯體中的命名空間 | Write | 是 | 
| s3tables:DeleteTableBucket | 准許刪除儲存貯體  | Write | 是  | 
| s3tables:PutTableBucketPolicy | 准許新增或取代儲存貯體政策 | Permissions Management | 否 | 
| s3tables:GetTableBucketPolicy | 授予擷取儲存貯體政策的許可權 | Read | 否 | 
| s3tables:DeleteTableBucketPolicy | 准許刪除儲存貯體政策 | Permissions Management | 否 | 
| s3tables:GetTableBucketMaintenanceConfiguration | 授予擷取資料表儲存貯體的維護組態的許可權 | Read | 是  | 
| s3tables:PutTableBucketMaintenanceConfiguration | 准許新增或取代資料表儲存貯體的維護組態 | Write | 是 | 
| s3tables:PutTableBucketEncryption | 授予新增或取代資料表儲存貯體的加密組態的許可權 | Write | 否 | 
| s3tables:GetTableBucketEncryption | 授予擷取定資料表儲存貯體的加密組態的許可權 | Read | 否 | 
| s3tables:DeleteTableBucketEncryption | 授予刪除資料表儲存貯體的加密組態的許可權 | Write | 否 | 

資料表支援下列動作：


| Action | Description | 存取層級 | 跨帳戶存取權 | 
| --- | --- | --- | --- | 
| s3tables:GetTableMaintenanceConfiguration | 授予擷取資料表的維護組態的許可權 | Read | 是 | 
| s3tables:PutTableMaintenanceConfiguration |  准許新增或取代資料表的維護組態 | Write | 是 | 
| s3tables:PutTablePolicy | 授予新增或取代資料表政策 | Permissions Management | 否 | 
| s3tables:GetTablePolicy | 授予擷取資料表政策的許可權 | Read | 否 | 
| s3tables:DeleteTablePolicy | 准許刪除資料表政策 | Permissions management | 否 | 
| s3tables:CreateTable | 准許在資料表儲存貯體上建立資料表 | Write | 是 | 
| s3tables:GetTable | 准許擷取資料表資訊 | Read | 是 | 
| s3tables:GetTableMetadataLocation | 准許擷取資料表根指標 (中繼資料檔案) | Read | 是  | 
| s3tables:ListTables | 准許列出資料表儲存貯體中的所有資料表 | Read | 是  | 
| s3tables:RenameTable | 准許變更資料表的名稱。 | Write | 是  | 
| s3tables:UpdateTableMetadataLocation | 准許更新資料表根指標 (中繼資料檔案) | Write | 是  | 
| s3tables:GetTableData | 准許讀取儲存在資料表儲存貯體中的資料表中繼資料和資料物件 | Read | 是 | 
| s3tables:PutTableData | 准許寫入儲存在資料表儲存貯體中的資料表中繼資料和資料物件 | Write | 是 | 
| s3tables:GetTableEncryption  | 授予擷取資料表的加密設定的許可權 | Write | 否 | 
| s3tables:PutTableEncryption  | 授予將加密新增至資料表的許可權 | Write | 否 | 
| s3tables:DeleteTable | 授予刪除資料表儲存貯體的資料表的許可權 | Write | 是 | 

若要執行資料表層級的讀取和寫入動作，S3 Tables 支援 Amazon S3 API 操作，例如 `GetObject` 和 `PutObject`。下表提供物件層級動作的清單。將讀取和寫入許可授予資料表時，您可以使用下列動作。


| Action | S3 物件 API | 
| --- | --- | 
| s3tables:GetTableData | GetObject, ListParts, HeadObject | 
| s3tables:PutTableData | PutObject, CreateMultipartUpload, CompleteMultipartUpload,  UploadPart, AbortMultipartUpload | 

例如，如果使用者具有 `GetTableData` 許可，則可以讀取與資料表相關聯的所有檔案，例如其中繼資料檔案、資訊清單、資訊清單清單檔案和 Parquet 資料檔案。

## S3 Tables 的條件索引鍵
<a name="s3-tables-conditionkeys"></a>

S3 Tables 支援 [AWS 全域條件內容索引鍵](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html)。

此外，S3 Tables 會定義下列可在存取政策中使用的條件索引鍵。


| 條件金鑰 | 說明 | Type | 
| --- | --- | --- | 
|  s3tables:tableName |  依資料表儲存貯體中的資料表名稱篩選存取權。您可以使用 `s3tables:tableName` 條件金鑰來寫入 IAM，或限制使用者或應用程式僅存取符合此名稱條件之資料表的資料表儲存貯體政策。  請務必注意，如果您使用 `s3tables:tableName` 條件索引鍵來控制存取，則變更資料表名稱可能會影響這些政策。 範例值："s3tables:tableName":"department\$1" | String | 
|  s3tables:namespace |  依資料表儲存貯體中建立的命名空間篩選存取權。 您可以使用 `s3tables:namespace` 條件索引鍵來寫入 IAM，或限制使用者或應用程式存取特定命名空間內之資料表的資料表儲存貯體政策。*範例值：*`"s3tables:namespace":"hr" ` 請務必注意，如果您使用 `s3tables:namespace` 條件索引鍵來控制存取權，則變更命名空間可能會影響這些政策。  | String | 
|  s3tables:SSEAlgorithm |  依用來加密資料表的伺服器端加密演算法來篩選存取權。 您可以使用 `s3tables:SSEAlgorithm` 條件金鑰來寫入 IAM、資料表或資料表儲存貯體政策，其會限制使用者或應用程式存取以特定加密類型加密的資料表。*範例值：*`"s3tables:SSEAlgorithm":"aws:kms" ` 請務必注意，如果您使用 `s3tables:SSEAlgorithm` 條件金鑰來控制存取權，則加密的變更可能會影響這些政策。  | String | 
|  s3tables:KMSKeyArn |  依用於加密資料表之 AWS KMS 金鑰的金鑰 ARN 篩選存取權 您可以使用 `s3tables:KMSKeyArn` 條件金鑰來寫入 IAM、資料表或資料表儲存貯體政策，其會限制使用者或應用程式存取以特定 KMS 金鑰加密的資料表。 請務必注意，如果您使用 `s3tables:KMSKeyArn` 條件金鑰來控制存取權，則變更 KMS 金鑰可能會影響這些政策。  | ARN | 

# S3 Tables 的 IAM 身分型政策
<a name="s3-tables-identity-based-policies"></a>

使用者和角色預設不具有建立或修改資料表和資料表儲存貯體的許可。他們也無法使用 s3 主控台 AWS Command Line Interface (AWS CLI) 或 Amazon S3 REST API 來執行任務。若要建立和存取資料表儲存貯體和資料表， AWS Identity and Access Management (IAM) 管理員必須將必要的許可授予 IAM 角色或使用者。若要了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《IAM 使用者指南》**中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

下列主題包含 IAM 身分型政策的範例。若要使用下列政策範例，請以您自己的資訊取代*使用者輸入預留位置*。

**Topics**
+ [

## 範例 1：允許建立和使用資料表儲存貯體的存取權
](#example-1-s3-tables-identity-based-policies)
+ [

## 範例 2：允許在資料表儲存貯體中建立和使用資料表的存取權
](#example-2-s3-tables-identity-based-policies)

## 範例 1：允許建立和使用資料表儲存貯體的存取權
<a name="example-1-s3-tables-identity-based-policies"></a>

**.**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowBucketActions",
            "Effect": "Allow",
            "Action": [
                "s3tables:CreateTableBucket",
                "s3tables:PutTableBucketPolicy",
                "s3tables:GetTableBucketPolicy",
                "s3tables:ListTableBuckets",
                "s3tables:GetTableBucket"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
        }
    ]
}
```

------

## 範例 2：允許在資料表儲存貯體中建立和使用資料表的存取權
<a name="example-2-s3-tables-identity-based-policies"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowBucketActions",
            "Effect": "Allow",
            "Action": [
                "s3tables:GetTableBucket",
                "s3tables:ListTables",
                "s3tables:CreateTable",
                "s3tables:PutTableData",
                "s3tables:GetTableData",
                "s3tables:GetTable",
                "s3tables:GetTableMetadataLocation",
                "s3tables:UpdateTableMetadataLocation",
                "s3tables:GetNamespace",
                "s3tables:CreateNamespace",
                "s3tables:ListNamespaces"
            ],
            "Resource": [
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket",
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/*"
            ]
        }
    ]
}
```

------

# 適用於 S3 Tables 的資源型政策
<a name="s3-tables-resource-based-policies"></a>

S3 Tables 可提供資源型政策，用於管理對資料表儲存貯體和資料表的存取：資料表儲存貯體政策和資料表政策。您可以使用資料表儲存貯體政策，授予資料表儲存貯體、命名空間或資料表層級的 API 存取許可。連結至資料表儲存貯體的許可能夠套用到儲存貯體中的所有資料表，或套用到儲存貯體中的特定資料表，具體情況取決於政策定義。您可以使用資料表政策來授予資料表層級的許可。

當 S3 Tables 收到請求時，會先驗證請求者是否具有必要的許可。其會評估所有相關存取政策、使用者政策和資源型政策，以決定是否授權請求 (IAM 使用者政策、IAM 角色政策、資料表儲存貯體政策和資料表政策)。例如，如果資料表儲存貯體政策授予使用者許可，以對儲存貯體 (包括 `DeleteTable`) 中的資料表執行所有動作，但個別資料表具有拒絕所有使用者 `DeleteTable` 動作的資料表政策，則使用者無法刪除資料表。

下列主題包含資料表和資料表儲存貯體政策的範例。若要使用這些政策，請以為您自己的資訊取代*使用者輸入預留位置*。

**注意**  
授予修改資料表許可的每個政策，都應包含供 `GetTableMetadataLocation` 存取資料表根檔案的許可。如需詳細資訊，請參閱[https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html)。
每次在資料表上執行寫入或刪除活動時，請在存取政策中包含 `UpdateTableMetadataLocation` 的許可。
建議您使用資料表儲存貯體政策來管控對儲存貯體層級動作的存取，並使用資料表政策來管控對資料表層級動作的存取。如果您想要跨多個資料表定義相同的許可集，則建議您使用資料表儲存貯體政策。

**Topics**
+ [

## 範例 1：資料表儲存貯體政策允許存取帳戶中儲存貯體的 `PutBucketMaintenanceConfiguration`
](#table-bucket-policy-1)
+ [

## 範例 2：資料表儲存貯體政策，可允許對 `hr` 命名空間中儲存的資料表的讀取 (SELECT) 存取
](#table-bucket-policy-2)
+ [

## 範例 3：允許使用者刪除資料表的資料表政策
](#table-bucket-policy-3)

## 範例 1：資料表儲存貯體政策允許存取帳戶中儲存貯體的 `PutBucketMaintenanceConfiguration`
<a name="table-bucket-policy-1"></a>

下列範例資料表儲存貯體政策允許 IAM `data steward` 透過允許存取 `PutBucketMaintenanceConfiguration` 來刪除帳戶中所有儲存貯體的未參考物件。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/datasteward"
            },
            "Action": [
                "s3tables:PutTableBucketMaintenanceConfiguration"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
        }
    ]
}
```

------

## 範例 2：資料表儲存貯體政策，可允許對 `hr` 命名空間中儲存的資料表的讀取 (SELECT) 存取
<a name="table-bucket-policy-2"></a>

下列範例資料表儲存貯體政策允許來自 AWS 帳戶 ID `123456789012` 的使用者 Jane 存取資料表儲存貯體中 `hr` 命名空間中儲存的資料表。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Jane"
            },
            "Action": [
                "s3tables:GetTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/*",
            "Condition": {
                "StringLike": {
                    "s3tables:namespace": "hr"
                }
            }
        }
    ]
}
```

------

## 範例 3：允許使用者刪除資料表的資料表政策
<a name="table-bucket-policy-3"></a>

下列範例資料表政策允許 IAM 角色 `data steward` 刪除資料表。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "DeleteTable",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/datasteward"
            },
            "Action": [
                "s3tables:DeleteTable",
                "s3tables:UpdateTableMetadataLocation",
                "s3tables:PutTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/tableUUID"
        }
    ]
}
```

------

# AWS S3 Tables 的 受管政策
<a name="s3-tables-security-iam-awsmanpol"></a>

 AWS 受管政策是由 AWS AWS 受管政策建立和管理的獨立政策旨在為許多常用案例提供許可，以便您可以開始將許可指派給使用者、群組和角色。

請記住， AWS 受管政策可能不會授予特定使用案例的最低權限許可，因為這些許可可供所有 AWS 客戶使用。我們建議您定義特定於使用案例的[客戶管理政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)，以便進一步減少許可。

您無法變更 AWS 受管政策中定義的許可。如果 AWS 更新受 AWS 管政策中定義的許可，則更新會影響政策連接的所有委託人身分 （使用者、群組和角色）。當新的 AWS 服務 啟動或新的 API 操作可供現有服務使用時， AWS 最有可能更新 AWS 受管政策。

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

## AWS 受管政策： AmazonS3TablesFullAccess
<a name="s3-tables-security-iam-awsmanpol-amazons3tablesfullaccess"></a>

您可將 `AmazonS3TablesFullAccess` 政策連接到 IAM 身分。此政策授予允許 Amazon S3 Tables 完整存取權的許可。如需此政策的詳細資訊，請參閱 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html)。

## AWS 受管政策： AmazonS3TablesReadOnlyAccess
<a name="s3-tables-security-iam-awsmanpol-amazons3readonlyaccess"></a>

您可將 `AmazonS3TablesReadOnlyAccess` 政策連接到 IAM 身分。此政策授予允許 Amazon S3 Tables 唯讀存取權的許可。如需此政策的詳細資訊，請參閱 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesReadOnlyAccess.html)。

## AWS 受管政策： AmazonS3TablesLakeFormationServiceRole
<a name="s3-tables-security-iam-awsmanpol-amazons3tableslakeformationservicerole"></a>

您可將 `AmazonS3TablesLakeFormationServiceRole` 政策連接到 IAM 身分。此政策授予許可，允許 AWS Lake Formation 服務角色存取 S3 Tables。 AWS KMS permissions 用於允許 Lake Formation 存取加密的資料表。如需此政策的詳細資訊，請參閱 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesLakeFormationServiceRole.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesLakeFormationServiceRole.html)。

## AWS 受管政策的 Amazon S3 Tables 更新
<a name="s3-tables-security-iam-awsmanpol-updates"></a>

檢視自 Amazon S3 S3 Tables AWS 受管政策更新的詳細資訊。


| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  Amazon S3 Tables 已更新 `AmazonS3TablesFullAccess`。  |  S3 Tables AWS已更新名為 的受管政策`AmazonS3TablesFullAccess`。此更新授予將角色傳遞至 S3 Tables 複寫服務的許可。  |  2025 年 12 月 2 日  | 
|  Amazon S3 Tables 已新增 `AmazonS3TablesLakeFormationServiceRole`。  |  S3 Tables 新增了名為 的新 AWS受管政策`AmazonS3TablesLakeFormationServiceRole`。此政策可授予權限，允許 Lake Formation 服務角色存取 S3 Tables。  | 2025 年 5 月 19 日 | 
|  Amazon S3 Tables 已新增 `AmazonS3TablesFullAccess`。  |  S3 Tables 新增了名為 的新 AWS受管政策`AmazonS3TablesFullAccess`。此政策授予允許 Amazon S3 Tables 完整存取權的許可。  | 2024 年 12 月 3 日 | 
|  Amazon S3 Tables 已新增 `AmazonS3TablesReadOnlyAccess`。  |  S3 Tables 新增了名為 的新 AWS受管政策`AmazonS3TablesReadOnlyAccess`。此政策授與允許對 Amazon S3 Tables 唯讀存取的許可。  | 2024 年 12 月 3 日 | 
|  Amazon S3 Tables 開始追蹤變更。  |  Amazon S3 Tables 開始追蹤其 AWS 受管政策的變更。  | 2024 年 12 月 3 日 | 

# 使用 SQL 語意授予存取權
<a name="s3-tables-sql"></a>

您可以在資料表和資料表儲存貯體政策中使用 SQL 語義，將許可權授予資料表。您可以使用的 SQL 語義範例為 `CREATE`、`INSERT`、`DELETE`、`UPDATE` 和 `ALTER`。下表提供與 SQL 語義相關聯的 API 動作清單，可供您做為將許可權授予使用者的參考。

S3 Tables 僅支援部分使用 SQL 語意的許可。例如，`CreateTable` API 只會在資料表儲存貯體中建立空資料表。您需要其他許可 (例如 `UpdateTableMetadata`、`PutTableData` 和 `GetTableMetadataLocation`)，才能設定資料表結構描述。這些額外許可同時表示您也授予使用者在資料表中插入資料列的存取權。如果您想要僅根據 SQL 語意來管控存取權，建議您使用 [AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html) 或與 S3 Tables 整合的任何第三方解決方案。


| 資料表層級活動 | IAM 動作 | 
| --- | --- | 
| SELECT | s3tables:GetTableData, s3tables:GetTableMetadataLocation | 
| CREATE | s3tables:CreateTable, s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation,  | 
| INSERT | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation | 
| UPDATE | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation | 
| ALTER,RENAME | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation, s3tables:RenameTable  | 
| DELETE,DROP | s3tables:DeleteTable, s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation  | 

**注意**  
要從資料表儲存貯體刪除資料表，需要 `s3tables:DeleteTable` 許可。此權限可讓您永久移除資料表，及其所有相關聯的資料和中繼資料。請小心使用此權限，因為刪除作業無法復原。

# 使用 Lake Formation 管理對資料表或資料庫的存取
<a name="grant-permissions-tables"></a>

如果您的資料表儲存貯體與使用 Lake Formation 的 AWS 分析服務整合，則 Lake Formation 會管理對資料表的存取，並要求每個 IAM 主體 （使用者或角色） 都有權執行動作。Lake Formation 會使用自己的許可模型 (Lake Formation 許可)，為資料目錄資源啟用精細的存取控制。

如需詳細資訊，請參閱《AWS Lake Formation 開發人員指南》**中的 [Lake Formation 許可概觀](https://docs.aws.amazon.com//lake-formation/latest/dg/lf-permissions-overview.html)。

 AWS Lake Formation中有兩種主要類型的權限：

1. 中繼資料存取權限可控制在 Data Catalog 中建立、讀取、更新和刪除中繼資料資料庫和資料表的能力。

1. 基礎資料存取權限可控制讀取和寫入資料目錄資源指向的基礎 Amazon S3 位置的能力。

Lake Formation 使用自己的許可模型和 IAM 許可模型的組合，控制對 Data Catalog 資源和基礎資料的存取：
+ 若要請求成功存取 Data Catalog 資源或基礎資料，則請求必須通過 IAM 和 Lake Formation 的許可權檢查。
+ IAM 許可控制對 Lake Formation 和 AWS Glue APIs存取，而 Lake Formation 許可控制對 Data Catalog 資源、Amazon S3 位置和基礎資料的存取。

Lake Formation 許可權僅適用於授予其獲授權的區域，且主體必須由資料湖管理員或其他具有必要權限的主體的授權，才能授予 Lake Formation 許可。

**注意**  
如果您是執行資料表儲存貯體整合的使用者，您已擁有資料表的 Lake Formation 許可。如果您是將存取資料表的唯一主體，您可以略過此步驟。您只需將資料表的 Lake Formation 許可權授予其他 IAM 主體。這可讓其他主體在執行查詢時存取資料表。如需詳細資訊，請參閱[授予資料表或資料庫的 Lake Formation 許可](#grant-lf-table)。

## 授予資料表或資料庫的 Lake Formation 許可
<a name="grant-lf-table"></a>

您可以對資料表儲存貯體中的資料表或資料庫授予主體 Lake Formation 許可，方式是透過 Lake Formation 主控台或 AWS CLI。

**注意**  
當您將 Data Catalog 資源的 Lake Formation 許可授予外部帳戶或直接授予另一個帳戶中的 IAM 主體時，Lake Formation 會使用 AWS Resource Access Manager (AWS RAM) 服務來共用資源。如果承授者帳戶與授予者帳戶位於相同的組織中，則承授者可立即使用共享資源。如果承授者帳戶不在同一個組織中， AWS RAM 會向承授者帳戶傳送邀請，請其接受或拒絕資源授權。然後，若要提供共用資源，承授者帳戶中的資料湖管理員必須使用 AWS RAM 主控台或 AWS CLI 接受邀請。如需有關跨帳戶資料共享的詳細資訊，請參閱《AWS Lake Formation 開發人員指南》**中的 [Lake Formation 中的跨帳戶資料共享](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-permissions.html)。

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

1. 在 開啟 AWS Lake Formation 主控台[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)，並以資料湖管理員身分登入。如需如何建立資料湖管理員的詳細資訊，請參閱《AWS Lake Formation 開發人員指南》**中的[建立資料湖管理員](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)。

1. 在導覽窗格中，選擇**資料許可**，然後選擇**授予**。

1. 在**授予許可**頁面的**主體**下，執行下列其中一項操作：
   + 針對 Amazon Athena 或 Amazon Redshift，選擇 **IAM 使用者和角色**，然後選取您用於查詢的 IAM 主體。
   + 針對 Amazon Data Firehose，選擇 **IAM 使用者和角色**，然後選取您已建立的服務角色以讓其串流至資料表。
   + 針對快速，選擇 **SAML 使用者和群組**，然後輸入快速管理員使用者的 Amazon Resource Name (ARN)。
   + 針對 AWS Glue Iceberg REST端點存取，選擇 **IAM 使用者和角色**，然後選取您為用戶端建立的 IAM 角色。如需詳細資訊，請參閱[為您的用戶端建立 IAM 角色](s3-tables-integrating-glue-endpoint.md#glue-endpoint-create-iam-role)

1. 在 **LF-標籤或型錄資源**下，選擇**已命名的的資料型錄資源**。

1. 對於**目錄**，選擇您在整合資料表儲存貯體時建立的子目錄，例如 `account-id:s3tablescatalog/amzn-s3-demo-bucket`。

1. 針對**資料庫**，選擇您建立的 S3 資料表儲存貯體命名空間。

1. (選用) 針對**資料表**選擇您在資料表儲存貯體中建立的 S3 資料表。
**注意**  
如果您要在 Athena 查詢編輯器中建立新資料表，請勿選取資料表。

1. 執行以下任意一項：
   + 如果您在上一個步驟中指定了資料表，請針對**資料表許可**選擇**超級**。
   + 如果您未在上一個步驟中指定資料表，請前往**資料庫許可**。對於跨帳戶資料共享，您無法選擇**超級**來授予其他主體資料庫的所有權限。反之，請選擇更精細的許可權，例如**描述**。

1. 選擇 **Grant** (授予)。

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

1. 請確定您以資料湖管理員身分執行下列 AWS CLI 命令。如需詳細資訊，請參閱《AWS Lake Formation 開發人員指南》**中的[建立資料湖管理員者](https://docs.aws.amazon.com//lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)。

1. 執行下列命令，將 S3 資料表儲存貯體中資料表的 Lake Formation 許可授予 IAM 主體，以存取資料表。若要使用此範例，請以您自己的資訊取代 *`user input placeholders`*。

   ```
   aws lakeformation grant-permissions \
   --region us-east-1 \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role"
       },
       "Resource": {
           "Table": {
               "CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket",
               "DatabaseName": "S3 table bucket namespace, for example, test_namespace",
               "Name": "S3 table bucket table name, for example test_table"
           }
       },
       "Permissions": [
           "ALL"
       ]
   }'
   ```

------