

# 使用 SQL 语义授予访问权限
<a name="s3-tables-sql"></a>

可以通过在表和表存储桶策略中使用 SQL 语义来授予对表的权限。可以使用的 SQL 语义的示例为 `CREATE`、`INSERT`、`DELETE`、`UPDATE` 和 `ALTER`。下表提供了与 SQL 语义关联的 API 操作的列表，您可以使用这些操作向用户授予权限。

S3 表类数据存储服务部分支持使用 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 表类数据存储服务集成的第三方解决方案。


| 表级活动 | 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` 权限。此权限可让您永久移除表及其所有关联数据和元数据。请谨慎使用此权限，因为删除操作无法撤消。