

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 注册第三方查询引擎
<a name="register-query-engine"></a>

在第三方查询引擎使用应用程序集成 API 操作之前，您需要显式启用相应的权限，以便查询引擎能够代表您调用 API 操作。只需几个步骤即可完成此操作：

1. 您需要指定需要权限的 AWS 账户和 IAM 会话标签，才能通过 AWS Lake Formation控制台、 AWS CLI 或 API/SDK 调用应用程序集成 API 操作。

1. 当第三方查询引擎在您的账户中担任执行角色时，查询引擎必须附加一个在 Lake Formation 中注册的代表第三方引擎的会话标签。Lake Formation 使用该标签验证请求是否来自经批准的引擎。有关会话标签的更多信息，请参阅《IAM 用户指南》中的[会话标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)。

1. 设置第三方查询引擎执行角色时，您必须拥有 IAM 策略中的以下一组最低权限：

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {"Effect": "Allow",
       "Action": [
         "lakeformation:GetDataAccess",      
         "glue:GetTable",
         "glue:GetTables",
         "glue:GetDatabase",
         "glue:GetDatabases",
         "glue:CreateDatabase",
         "glue:GetUserDefinedFunction",
         "glue:GetUserDefinedFunctions",
         "glue:GetPartition",
         "glue:GetPartitions"
       ],
       "Resource": "*"
     }
   }
   ```

------

1. 针对查询引擎执行角色设置角色信任策略，以便该角色可以对将哪个会话标签键值对附加到该角色进行精细访问控制。在以下示例中，只允许该角色附加会话标签键 `"LakeFormationAuthorizedCaller"` 和会话标签值 `"engine1"`，不允许附加其他会话标签键值对。

   ```
   {
       "Sid": "AllowPassSessionTags",
       "Effect": "Allow",
       "Principal": {
           "AWS": "arn:aws:iam::111122223333:role/query-execution-role"
       },
       "Action": "sts:TagSession",
       "Condition": {
       "StringLike": {
           "aws:RequestTag/LakeFormationAuthorizedCaller": "engine1"        }
       }
   }
   ```

当`LakeFormationAuthorizedCaller`调用 STS: AssumeRole API 操作来获取证书供查询引擎使用时，[ AssumeRole 请求](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_adding-assume-role)中必须包含会话标签。返回的临时凭证可用于发出 Lake Formation 应用程序集成 API 请求。

Lake Formation 应用程序集成 API 操作要求调用主体担任 IAM 角色。IAM 角色必须包含已在 Lake Formation 中注册的具有预定值的会话标签。该标签使 Lake Formation 可以验证用于调用应用程序集成 API 操作的角色是否被允许这样做。