

# S3 表类数据存储服务的访问管理
<a name="s3-tables-setting-up"></a>

在 S3 表类数据存储服务中，资源包括表存储桶及其包含的表。默认情况下，创建资源的 Amazon Web Services 账户的根用户（资源拥有者）和该账户中具有必要权限的 Amazon Identity and Access Management（IAM）用户可以访问他们创建的资源。资源拥有者指定还有谁可以访问该资源以及支持他们对该资源执行哪些操作。Amazon S3 具有各种访问管理工具，您可以使用这些工具向其他人授予对您的 S3 资源的访问权限。如果已将表与 Amazon Lake Formation 集成，则还可以管理对表和命名空间的精细访问权限。以下主题概述了 S3 表类数据存储服务的资源、IAM 操作和条件键。它们还提供了 S3 表类数据存储服务的基于资源和基于身份的策略的示例。

**Topics**
+ [资源](#s3-tables-resources)
+ [S3 表类数据存储服务的操作](#s3-tables-actions)
+ [S3 表类数据存储服务的条件键](#s3-tables-conditionkeys)
+ [S3 表类数据存储服务的基于 IAM 身份的策略](s3-tables-identity-based-policies.md)
+ [S3 表类数据存储服务的基于资源的策略](s3-tables-resource-based-policies.md)
+ [适用于 S3 表类数据存储服务的 Amazon 托管式策略](s3-tables-security-iam-awsmanpol.md)
+ [使用 SQL 语义授予访问权限](s3-tables-sql.md)
+ [使用 Lake Formation 管理对表或数据库的访问权限](grant-permissions-tables.md)

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

S3 表类数据存储服务资源包括表存储桶及其包含的表。
+ 表存储桶：表存储桶专为表而设计，与通用 S3 存储桶中自行管理的表相比，可提供更高的每秒事务数（TPS）和更好的查询吞吐量。表存储桶具有与 Amazon S3 通用存储桶相同的耐久性、可用性、可扩展性和性能特征。
+ 表 - 表存储桶中的表以 Apache Iceberg 格式存储。您可以在支持 Iceberg 的查询引擎中使用标准 SQL 查询这些表。

表和表存储桶的 Amazon 资源名称（ARN）包含 `s3tables` 命名空间、Amazon Web Services 区域、Amazon Web Services 账户 ID 和存储桶名称。要访问表和表存储桶并对其执行操作，必须使用以下 ARN 格式：
+ 表格 ARN 格式：

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

## S3 表类数据存储服务的操作
<a name="s3-tables-actions"></a>

在基于身份的策略或基于资源的策略中，您可以定义对于特定 IAM 主体支持或拒绝哪些 S3 表类数据存储服务操作。表操作对应于存储桶和表级 API 操作。所有操作都是唯一 IAM 命名空间的一部分：`s3tables`。

当您在策略中使用一项操作时，通常会允许或拒绝使用具有相同名称的 API 操作。但在某些情况下，单个操作可控制对多个 API 操作的访问。例如，`s3tables:GetTableData` 操作包括对于 `GetObject`、`ListParts` 和 `ListMultiparts` API 操作的权限。

以下是表存储桶支持的操作。您可以在 IAM 策略或资源策略的 `Action` 元素中指定以下操作。


| Action | 说明 | 访问级别 | 跨账户访问 | 
| --- | --- | --- | --- | 
| 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 | 说明 | 访问级别 | 跨账户访问 | 
| --- | --- | --- | --- | 
| 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 表类数据存储服务支持如 `GetObject` 和 `PutObject` 等 Amazon S3 API 操作。下表提供了对象级操作的列表。在授予对表的读写权限时，您可以使用以下操作。


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

例如，如果用户拥有 `GetTableData` 权限，则他们可以读取与该表关联的所有文件，例如其元数据文件、清单、清单列表文件和 parquet 数据文件。

## S3 表类数据存储服务的条件键
<a name="s3-tables-conditionkeys"></a>

S3 表类数据存储服务支持 [Amazon 全局条件上下文条件键](https://docs.amazonaws.cn//IAM/latest/UserGuide/reference_policies_condition-keys.html)。

此外，S3 表类数据存储服务定义以下可以在访问策略中使用的条件键。


| 条件键 | 说明 | 类型 | 
| --- | --- | --- | 
|  s3tables:tableName |  按表存储桶中表的名称筛选访问权限。您可以使用 `s3tables:tableName` 条件键来编写 IAM 或表存储桶策略，以限制用户或应用程序仅可访问符合此名称条件的表。<br /> 请务必注意，如果您使用 `s3tables:tableName` 条件键来控制访问权限，则表名称的更改可能会影响这些策略。示例值："s3tables:tableName":"department\*" | String | 
|  s3tables:namespace | 按在表存储桶中创建的命名空间筛选访问权限。<br />您可以使用 `s3tables:namespace` 条件键编写 IAM、表或表存储桶策略，以限制用户或应用程序对作为特定命名空间一部分的表的访问权限。*示例值：*`"s3tables:namespace":"hr" `<br />请务必注意，如果您使用 `s3tables:namespace` 条件键来控制访问权限，那么命名空间的更改可能会影响这些策略。 | String | 
|  s3tables:SSEAlgorithm | 按用于加密表的服务器端加密算法筛选访问权限。<br />您可以使用 `s3tables:SSEAlgorithm` 条件键编写 IAM、表或表存储桶策略，以限制用户或应用程序只能访问使用特定加密类型加密的表。*示例值：*`"s3tables:SSEAlgorithm":"aws:kms" `<br />请务必注意，如果您使用 `s3tables:SSEAlgorithm` 条件键来控制访问权限，那么加密的更改可能会影响这些策略。 | String | 
|  s3tables:KMSKeyArn | 按用于加密表的密钥的 Amazon KMS 密钥 ARN 筛选访问权限<br />您可以使用 `s3tables:KMSKeyArn` 条件键来编写 IAM、表或表存储桶策略，以限制用户或应用程序只能访问使用特定 KMS 密钥加密的表。<br />请务必注意，如果您使用 `s3tables:KMSKeyArn` 条件键来控制访问权限，则更改 KMS 密钥可能会影响这些策略。 | ARN | 