

# 为配置元数据表设置权限
<a name="metadata-tables-permissions"></a>

要创建元数据表配置，您必须拥有必要的 AWS Identity and Access Management（IAM）权限，才能创建和管理元数据表配置，以及创建和管理元数据表及用于存储元数据表的表存储桶。

要创建和管理您的元数据表配置，您必须具有以下权限：
+ `s3:CreateBucketMetadataTableConfiguration`：此权限可让您为通用存储桶创建元数据表配置。要创建元数据表配置，还需要其它权限，包括 S3 表类数据存储服务权限，如以下各节所述。有关所需权限的摘要，请参阅[存储桶操作和权限](using-with-s3-policy-actions.md#using-with-s3-policy-actions-related-to-buckets)。
+ `s3:GetBucketMetadataTableConfiguration`：此权限可让您检索有关元数据表配置的信息。
+ `s3:DeleteBucketMetadataTableConfiguration`：此权限可让您删除元数据表配置。
+ `s3:UpdateBucketMetadataJournalTableConfiguration`：此权限可让您更新日记表配置以使日记表记录过期。
+ `s3:UpdateBucketMetadataInventoryTableConfiguration`：此权限可让您更新清单表配置以启用或禁用清单表。要更新清单表配置，还需要其它权限，包括 S3 表类数据存储服务权限。有关所需权限的列表，请参阅[存储桶操作和权限](using-with-s3-policy-actions.md#using-with-s3-policy-actions-related-to-buckets)。
**注意**  
`s3:CreateBucketMetadataTableConfiguration`、`s3:GetBucketMetadataTableConfiguration` 和 `s3:DeleteBucketMetadataTableConfiguration` 权限用于 V1 和 V2 S3 元数据配置。对于 V2，相应 API 操作的名称为 `CreateBucketMetadataConfiguration`、`GetBucketMetadataConfiguration` 和 `DeleteBucketMetadataConfiguration`。

要创建和使用表和表存储桶，您必须具有某些 `s3tables` 权限。要创建元数据表配置，您至少必须具有以下 `s3tables` 权限：
+ `s3tables:CreateTableBucket`：此权限可让您创建 AWS 托管式表存储桶。您的账户和同一区域中的所有元数据表配置都存储在名为 `aws-s3` 的单个 AWS 托管式表存储桶中。有关更多信息，请参阅[元数据表的工作原理](metadata-tables-overview.md#metadata-tables-how-they-work)和 [Working with AWS managed table buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-aws-managed-buckets.html)。
+ `s3tables:CreateNamespace`：此权限可让您在表存储桶中创建命名空间。元数据表通常使用 `b_general_purpose_bucket_name` 命名空间。有关元数据表命名空间的更多信息，请参阅[元数据表的工作原理](metadata-tables-overview.md#metadata-tables-how-they-work)。
+ `s3tables:CreateTable`：此权限可让您创建元数据表。
+ `s3tables:GetTable`：此权限可让您检索有关元数据表的信息。
+ `s3tables:PutTablePolicy`：此权限可让您添加或更新元数据表策略。
+ `s3tables:PutTableEncryption`：此权限可让您为元数据表设置服务器端加密。如果您要使用具有 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）来加密元数据表，则需要额外的权限。有关更多信息，请参阅 [SSE-KMS 的权限](#metadata-kms-permissions)。
+ `kms:DescribeKey`：此权限可让您检索有关 KMS 密钥的信息。
+ `s3tables:PutTableBucketPolicy`：此权限可让您创建或更新新的表存储桶策略。

有关所有表和表存储桶权限的详细信息，请参阅 [S3 表类数据存储服务的访问管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-setting-up.html)。

**重要**  
如果您还想将表存储桶与 AWS 分析服务集成，以便您能够查询元数据表，则需要额外的权限。有关更多信息，请参阅[集成 Amazon S3 表类数据存储服务与 AWS 分析服务](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)。

**SSE-KMS 的权限**  
要使用具有 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）来加密元数据表，您必须拥有额外的权限。

1. 用户或 AWS Identity and Access Management（IAM）角色需要以下权限。可以使用 IAM 控制台来授予这些权限：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

   1. `s3tables:PutTableEncryption`，用于配置表加密

   1. `kms:DescribeKey`（对于所使用的 AWS KMS 密钥）

1. 在 KMS 密钥的资源策略中，您需要以下权限。可以使用 AWS KMS 控制台来授予这些权限：[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms)。

   1. 向 `metadata.s3.amazonaws.com` 和 `maintenance.s3tables.amazonaws.com` 授予 `kms:GenerateDataKey` 权限。

   1. 向 `metadata.s3.amazonaws.com` 和 `maintenance.s3tables.amazonaws.com` 授予 `kms:Decrypt` 权限。

   1. 向发起调用的 AWS 主体授予 `kms:DescribeKey` 权限。

除了这些权限外，还要确保用于加密表的客户自主管理型 KMS 密钥仍然存在、处于活动状态且与通用存储桶位于同一区域。

**示例策略**  
要创建和使用元数据表和表存储桶，可以使用以下示例策略。在本策略中，您要对其应用元数据表配置的通用存储桶称为 `amzn-s3-demo-bucket`。要使用此策略，请将 `user input placeholders` 替换为您自己的信息。

创建元数据表配置时，元数据表存储在 AWS 托管式表存储桶中。您的账户和同一区域中的所有元数据表配置都存储在名为 `aws-s3` 的单个 AWS 托管式表存储桶中。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PermissionsToWorkWithMetadataTables",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucketMetadataTableConfiguration",
                "s3:GetBucketMetadataTableConfiguration",
                "s3:DeleteBucketMetadataTableConfiguration",
                "s3:UpdateBucketMetadataJournalTableConfiguration",
                "s3:UpdateBucketMetadataInventoryTableConfiguration",
                "s3tables:*",
                "kms:DescribeKey"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3",
                "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*"
            ]
        }
    ]
}
```

------

要查询元数据表，可以使用以下示例策略。如果元数据表已使用 SSE-KMS 进行加密，则您将需要如下所示的 `kms:Decrypt` 权限。要使用此策略，请将 `user input placeholders` 替换为您自己的信息。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PermissionsToQueryMetadataTables",
            "Effect": "Allow",
            "Action": [
                "s3tables:GetTable",
                "s3tables:GetTableData",
                "s3tables:GetTableMetadataLocation",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3",
                "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*"
            ]
        }
    ]
}
```

------