

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

# S3 Tables SSE-KMS 加密的許可要求
<a name="s3-tables-kms-permissions"></a>

當您對 S3 資料表儲存貯體中的資料表使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 時，您需要授予帳戶中不同身分的許可。至少您的存取身分和 S3 Tables 維護主體需要您的金鑰存取權，所需的其他權限取決於您的使用案例。

**必要許可**   
若要存取使用 KMS 金鑰進行加密的資料表，您需要該金鑰的這些使用權限：  
+ `kms:GenerateDataKey`
+ `kms:Decrypt`
若要在資料表上使用 SSE-KMS，Amazon S3 Tables 維護服務主體 (`maintenance.s3tables.amazonaws.com`) 需要金鑰的 `kms:GenerateDataKey` 和 `kms:Decrypt` 權限。

**額外許可**  
根據您的使用案例，需要這些額外的權限：  
+ ** AWS 分析服務和直接存取的許可** – 如果您透過 AWS 分析服務或第三方引擎直接存取 S3 資料表來使用 SSE-KMS 加密資料表，則您使用的 IAM 角色需要許可才能使用 KMS 金鑰。
+ **已啟用 Lake Formation 的許可** – 如果您已選擇加入 AWS Lake Formation 進行存取控制，Lake Formation 服務角色需要許可才能使用 KMS 金鑰。
+ **S3 Metadata 資料表的權限** – 如果您針對 S3 Metadata 資料表使用 SSE-KMS 加密，您需要提供 S3 Metadata 服務主體 (`metadata.s3.amazonaws.com`) 存取 KMS 金鑰的權限。這可讓 S3 Metadata 更新加密的資料表，以便反映您最新的資料變更。

**注意**  
對於跨帳戶 KMS 金鑰，您的 IAM 角色需要金鑰存取權，和金鑰政策中的明確授權。如需 KMS 金鑰跨帳戶許可的詳細資訊，請參閱*AWS Key Management Service 《服務開發人員指南*》中的[允許外部 AWS 帳戶使用 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。

**Topics**
+ [將 S3 Tables 維護服務主體權限授予 KMS 金鑰](#tables-kms-maintenance-permissions)
+ [授予 IAM 主體在整合 AWS 分析服務中使用加密資料表的許可](#tables-kms-integration-permissions)
+ [啟用 Lake Formation 時，授予 IAM 主體使用加密資料表的許可](#tables-kms-lf-permissions)
+ [授予 S3 Metadata 服務主體使用您的 KMS 金鑰的權限](#tables-kms-metadata-permissions)

## 將 S3 Tables 維護服務主體權限授予 KMS 金鑰
<a name="tables-kms-maintenance-permissions"></a>

需要此權限才能建立 SSE-KMS 加密資料表，並允許自動維護資料表，例如壓縮、快照管理，以及加密資料表上未參照的檔案移除。

**注意**  
每當您提出建立 SSE-KMS 加密資料表的請求時，S3 Tables 會檢查以確保 `maintenance.s3tables.amazonaws.com` 主體具有您的 KMS 金鑰存取權。若要執行此檢查，資料表儲存貯體中會暫時建立零位元組物件，[移除未參考的檔案](s3-table-buckets-maintenance.md#s3-table-bucket-maintenance-unreferenced)的維護操作會自動移除此物件。如果您為加密指定的 KMS 金鑰沒有維護存取權，createTable 操作便會失敗。

若要授予對 SSE-KMS 加密資料表的維護存取權，您可以使用下列範例金鑰政策。在此政策中，會授權讓 `maintenance.s3tables.amazonaws.com` 服務主體使用特定 KMS 金鑰來加密和解密特定資料表儲存貯體中資料表。若要使用該政策，請以您自己的資訊取代*使用者輸入預留位置*。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableKeyUsage",
            "Effect": "Allow",
            "Principal": {
                "Service": "maintenance.s3tables.amazonaws.com"            
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*"
                }
            }
        }
    ]
}
```

------

## 授予 IAM 主體在整合 AWS 分析服務中使用加密資料表的許可
<a name="tables-kms-integration-permissions"></a>

若要在 AWS 分析服務中使用 S3 資料表，您可以將資料表儲存貯體與 整合 AWS Glue Data Catalog。此整合可讓 AWS 分析服務自動探索和存取資料表資料。如需有關整合的詳細資訊，請參閱 [將 Amazon S3 Tables 與 AWS 分析服務整合](s3-tables-integrating-aws.md)。

當您透過 AWS 分析服務或第三方和開放原始碼引擎直接存取 S3 資料表來使用 SSE-KMS 加密資料表時，您使用的 IAM 角色需要許可，才能將 AWS KMS 金鑰用於加密操作。

您可以透過連接到角色的 IAM 政策或透過 KMS 金鑰政策授予 KMS 金鑰存取權。

------
#### [ IAM policy ]

將此內嵌政策連接至您用於查詢以允許 KMS 金鑰存取的 IAM 角色。將 KMS 金鑰 ARN 取代為您自己的金鑰 ARN。

```
{
    "Version":"2012-10-17",		 	 	 ,                    
    "Statement": [
        {
            "Sid": "AllowKMSKeyUsage",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------
#### [ KMS key policy ]

或者，將此陳述式連接到您的 KMS 金鑰政策，以允許指定的 IAM 角色使用金鑰。將角色 ARN 取代為您用於查詢的 IAM 角色。

```
{
    "Sid": "Allow use of the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::<catalog-account-id>:role/<role-name>"
        ]
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
    ],
    "Resource": "*"
}
```

------

## 啟用 Lake Formation 時，授予 IAM 主體使用加密資料表的許可
<a name="tables-kms-lf-permissions"></a>

如果您已選擇加入 AWS Lake Formation S3 Tables 整合的存取控制，Lake Formation 服務角色需要許可，才能使用 AWS KMS 金鑰進行加密操作。Lake Formation 使用此角色代表存取資料表的主體提供登入資料。

下列 KMS 金鑰政策範例授予 Lake Formation 服務角色許可，以使用帳戶中的特定 KMS 金鑰進行加密操作。將預留位置值取代為您自己的值。

```
{
  "Sid": "AllowTableRoleAccess",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/service-role/S3TablesRoleForLakeFormation"
  },
  "Action": [
      "kms:GenerateDataKey", 
      "kms:Decrypt"
  ],
  "Resource": "<kms-key-arn>"
}
```

## 授予 S3 Metadata 服務主體使用您的 KMS 金鑰的權限
<a name="tables-kms-metadata-permissions"></a>

若要允許 Amazon S3 更新 SSE-KMS 加密中繼資料表，並維護這些中繼資料表，您可以使用下列範例金鑰政策。在此政策中，您可以允許 `metadata.s3.amazonaws.com` 和 `maintenance.s3tables.amazonaws.com` 服務主體使用特定金鑰來加密和解密特定資料表儲存貯體中的資料表。若要使用該政策，請以您自己的資訊取代*使用者輸入預留位置*。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableKeyUsage",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "maintenance.s3tables.amazonaws.com",
                    "metadata.s3.amazonaws.com"
                ]           
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*"
                }
            }
        }
    ]
}
```

------