

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

# 管理 Security Lake 订阅用户的查询访问权限
<a name="subscriber-query-access"></a>

具有查询权限的订阅用户可以查询 Security Lake 收集的数据。这些订阅者使用诸如 Amazon Athena 之类的服务直接查询您的 S3 存储桶中的 AWS Lake Formation 表。尽管 Security Lake 的主要查询引擎是 Athena，但您也可以使用与 AWS Glue Data Catalog集成的其他服务，例如 [Amazon Redshift Spectrum](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum.html) 和 Spark SQL。

订阅者使用 Amazon Athena 等服务从您 S3 存储桶中的 AWS Lake Formation 表中查询源数据。此订阅类型`LAKEFORMATION`在 [CreateSubscriber](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateSubscriber.html)API 的`accessTypes`参数中标识。

**注意**  
本部分介绍了如何向第三方订阅用户授予查询访问权限。有关针对自己的数据湖运行查询的信息，请参阅[第 4 步：查看和查询您自己的数据](get-started-console.md#explore-data-lake)。

**Topics**
+ [先决条件](prereqs-query-subscriber.md)
+ [创建具有查询访问权限的订阅用户](create-query-subscriber-procedures.md)
+ [编辑具有查询访问权限的订阅用户](editing-query-access-subscriber.md)

# 在 Security Lake 中创建具有查询权限的订阅者的先决条件
<a name="prereqs-query-subscriber"></a>

您必须实现以下先决条件才能在 Security Lake 中创建具有数据访问权限的订阅用户。

## 验证权限
<a name="add-query-subscriber-permissions"></a>

在创建具有查询访问权限的订阅用户之前，请确认您有权执行下列操作。

要验证您的权限，请使用 IAM 查看附加到 IAM 身份的 IAM 策略。然后，将这些策略中的信息与以下操作列表（您必须有权执行这些操作才能创建具有查询访问权限的订阅用户）进行比较。
+ `glue:PutResourcePolicy`
+ `glue:DeleteResourcePolicy`
+ `iam:CreateRole`
+ `iam:DeleteRolePolicy`
+ `iam:GetRole`
+ `iam:PutRolePolicy`
+ `lakeformation:GrantPermissions`
+ `lakeformation:ListPermissions`
+ `lakeformation:RegisterResource`
+ `lakeformation:RevokePermissions`
+ `ram:GetResourceShareAssociations`
+ `ram:GetResourceShares`
+ `ram:UpdateResourceShare`

**重要**  
验证权限后：  
如果您打算使用 Security Lake 控制台添加订阅用户，可以跳过下一步，继续执行[授予 Lake Formation 管理员权限](#permissions-lf-admin)。Security Lake 会为您创建所有必要的 IAM 角色或使用现有角色。
如果您准备使用 Security Lake API 或 CLI 添加具有查询访问权限的订阅用户，请继续执行下一步，创建 IAM 角色来查询 Security Lake 数据。

## 创建 IAM 角色以查询 Security Lake 数据（ AWS CLI仅限 API 和步骤）
<a name="iam-role-query-subscriber"></a>

在使用 Security Lake API 或 AWS CLI 向订阅者授予查询访问权限时，您需要创建一个名为的角色`AmazonSecurityLakeMetaStoreManager`。Security Lake 使用此角色注册 AWS Glue 分区和更新 AWS Glue 表。您可能已经在[创建必要的 IAM 角色](getting-started.html#prerequisite-iam-roles)时创建了此角色。

## 授予 Lake Formation 管理员权限
<a name="permissions-lf-admin"></a>

您还需要向用于访问 Security Lake 控制台和添加订阅用户的 IAM 角色添加 Lake Formation 管理员权限。

您可以按照以下步骤为您的角色授予 Lake Formation 管理员权限：

1. 打开 Lake Formation 控制台，网址为[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 以管理用户的身份登录。

1. 如果显示**欢迎使用 Lake Formation** 窗口，请选择您在步骤 1 中创建或选择的用户，然后选择“开始”。

1. 如果没有看到**欢迎使用 Lake Formation** 窗口，请执行以下步骤来配置 Lake Formation 管理员。

   1. 在导航窗格的**权限**下，选择**管理角色和任务**。在**数据湖管理员**部分，选择**选择管理员**。

   1. 在**管理数据湖管理员**对话框中，对于 IAM 用户和角色，选择访问 Security Lake 控制台时使用的管理员角色，然后选择**保存**。

有关更改数据湖管理员权限的更多信息，请参阅 *AWS Lake Formation 开发人员指南*中的[创建数据湖管理员](https://docs.aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#create-data-lake-admin)。

IAM 角色必须拥有对您想要向订阅用户授予访问权限的数据库和表的 `SELECT` 权限。有关如何执行此操作的说明，请参阅 *AWS Lake Formation 开发人员指南*中的[使用命名资源方法授予数据目录权限](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-cat-perms-named-resource.html)。

# 在 Security Lake 中创建具有查询权限的订阅者
<a name="create-query-subscriber-procedures"></a>

选择您的首选方法来创建当前具有查询访问权限的订阅者 AWS 区域。订阅者只能从中 AWS 区域 创建的数据中查询数据。要创建订阅者，您需要拥有订阅者的 AWS 账户 ID 和外部 ID。外部 ID 是订阅用户提供给您的唯一标识符。有关外部的更多信息 IDs，请参阅 *IAM 用户指南*中的[如何在向第三方授予 AWS 资源访问权限时使用外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)。

**注意**  
Security Lake 不支持 Lake Formation 跨账户数据共享版本 1。您必须将 Lake Formation 跨账户数据共享更新到版本 2 或版本 3。有关通过 AWS Lake Formation 控制台或 AWS CLI 更新**跨账户版本设置**的步骤[，请参阅*AWS Lake Formation 开发者指南*中的启用新版本](https://docs.aws.amazon.com/lake-formation/latest/dg/optimize-ram.html#version-update-steps)。

------
#### [ Console ]

1. 在上打开 Security Lake 控制台[https://console.aws.amazon.com/securitylake/](https://console.aws.amazon.com/securitylake/)。

   登录委托管理员账户。

1. 使用页面右上角的 AWS 区域 选择器，选择要在其中创建订阅者的区域。

1. 在导航窗格中选择**订阅用户**。

1. 在**订阅用户**页面上，选择**创建订阅用户**。

1. 对于**订阅用户详细信息**，请输入**订阅用户名称**和可选**描述**。

   该**区域**将自动填充为您当前选择的区域 AWS 区域 ，并且无法修改。

1. 对于**日志和事件源**，请选择您希望 Security Lake 在返回查询结果时包含哪些来源。

1. 对于**数据访问方法**，请选择 **Lake Formation**，以便为订阅用户创建查询访问权限。

1. 对于**订阅者凭证**，请提供订阅者的 AWS 账户 ID 和[外部 ID](https://docs.aws.amazon.com//security-lake/latest/userguide/prereqs-creating-subscriber.html#subscriber-external-id)。

1. （可选）对于**标签**，最多输入 50 个要分配给订阅用户的标签。

   *标签*是您可以为某些类型的 AWS 资源定义和分配的标签。每个标签都包含一个必需的标签键和一个可选的标签值。标签可以帮助您以不同的方式识别、分类和管理各种资源。要了解更多信息，请参阅[为安全湖资源添加标签](tagging-resources.md)。

1. 选择**创建**。

------
#### [ API ]

要以编程方式创建具有查询访问权限的订阅者，请使用 Security Lake API 的[CreateSubscriber](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateSubscriber.html)操作。如果你使用的是 AWS Command Line Interface (AWS CLI)，请运行 [create-subscriber 命令。](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/create-subscriber.html)

在您的请求中，使用这些参数为订阅者指定以下设置：
+ 对于 `accessTypes`，请指定 `LAKEFORMATION`。
+ 对于 `sources`，请指定您希望 Security Lake 在返回查询结果时包含的每个来源。
+ 对于`subscriberIdentity`，请指定订阅者用于查询源数据的 AWS 身份和外部 ID。

以下示例为指定的订阅者身份创建了在当前 AWS 区域具有查询访问权限的订阅者。此示例是针对 Linux、macOS 或 Unix 进行格式化的，它使用反斜杠（\$1）行继续符来提高可读性。

```
$ aws securitylake create-subscriber \ 
--subscriber-identity {"accountID": 129345678912,"externalId": 123456789012} \
--sources [{"awsLogSource": {"sourceName": VPC_FLOW, "sourceVersion": 2.0}}] \
--subscriber-name subscriber name \
--access-types LAKEFORMATION
```

------

## 设置跨账户表共享（订阅用户步骤）
<a name="grant-query-access-subscriber"></a>

Security Lake 使用 Lake Formation 跨账户表共享来支持订阅用户的查询访问权限。当您在 Security Lake 控制台、API 或 AWS CLI中创建具有查询权限的订阅者时，Security Lake 会通过在 AWS Resource Access Manager (AWS RAM) 中创建[资源共享来与订阅者共享](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-terms-and-concepts.html#term-resource-share)有关相关 Lake Formation 表的信息。

当您对具有查询访问权限的订阅用户进行某些类型的编辑时，Security Lake 会创建一个新的资源共享。有关更多信息，请参阅 [在 Security Lake 中编辑具有查询权限的订阅者](editing-query-access-subscriber.md)。

订阅用户应按照以下步骤使用您的 Lake Formation 表中的数据：

1. **接受资源共享** – 订阅用户必须接受在您创建或编辑订阅用户时生成的 `resourceShareArn` 和 `resourceShareName` 资源共享。选择以下访问方法之一：
   + 有关控制台和 AWS CLI，请参阅[接受来自的资源共享邀请 AWS RAM](https://docs.aws.amazon.com/lake-formation/latest/dg/accepting-ram-invite.html)。
   + 对于 API，请调用 [GetResourceShareInvitations](https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html)API。按 `resourceShareArn` 和 `resourceShareName` 进行筛选，以找到正确的资源共享。[AcceptResourceShareInvitation](https://docs.aws.amazon.com/ram/latest/APIReference/API_AcceptResourceShareInvitation.html)通过 API 接受邀请。

   资源共享邀请会在 12 小时后过期，因此您必须在 12 小时内验证并接受邀请。如果邀请过期，您会看到它处于 `PENDING` 状态，但此时即使您接受邀请也无法访问共享资源。超过 12 小时后，请删除 Lake Formation 订阅用户并重新创建订阅用户，以获得新的资源共享邀请。

1. **创建共享数据库的资源链接**-订阅者必须在（如果使用控制台）或 AWS Lake Formation AWS Glue （如果使用 API/AWS CLI）中创建指向共享 Lake Formation 数据库的资源链接。此资源链接将订阅者的账户指向共享数据库。选择以下访问方法之一：
   + 有关控制台和的信息 AWS CLI，[请参阅创建指向共享数据目录数据库的资源链接。](https://docs.aws.amazon.com/lake-formation/latest/dg/create-resource-link-database.html) 在《*AWS Lake Formation 开发人员指南》*中。
   + 我们建议订阅者还使用 [CreateDatabase](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateDatabase.html)API 创建唯一的数据库，用于存储资源链接表。

1. **查询共享表** – Amazon Athena 等服务可以直接引用这些表，而 Security Lake 收集的新数据将自动可供查询。查询在订阅者处运行 AWS 账户，查询产生的费用由订阅者计费。您可以在自己的 Security Lake 账户中控制对资源的读取权限。

有关授予跨账户权限的更多信息，请参阅 *AWS Lake Formation 开发人员指南*中的 [Lake Formation 中的跨账户数据共享](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-permissions.html)。

# 在 Security Lake 中编辑具有查询权限的订阅者
<a name="editing-query-access-subscriber"></a>

Security Lake 支持对具有查询访问权限的订阅用户进行编辑。您可以编辑订阅者的姓名、描述、外部 ID、主AWS 账户 体 (ID) 以及订阅者能够使用的日志源。请选择您的首选方法，然后按照步骤编辑在当前 AWS 区域中具有查询访问权限的订阅用户。

**注意**  
Security Lake 不支持 Lake Formation 跨账户数据共享版本 1。您必须将 Lake Formation 跨账户数据共享更新到版本 2 或版本 3。有关通过 AWS Lake Formation 控制台或 AWS CLI 更新**跨账户版本设置**的步骤[，请参阅*AWS Lake Formation 开发者指南*中的启用新版本](https://docs.aws.amazon.com/lake-formation/latest/dg/optimize-ram.html#version-update-steps)。

------
#### [ Console ]

根据您要编辑的详细信息，请仅按照为该操作提供的步骤进行操作。

**编辑订阅用户名称**  

1. 在上打开 Security Lake 控制台[https://console.aws.amazon.com/securitylake/](https://console.aws.amazon.com/securitylake/)。

   登录委托管理员账户。

1. 使用页面右上角的 AWS 区域 选择器，选择要编辑订阅者详细信息的区域。

1. 在导航窗格中选择**订阅用户**。

1. 在**订阅用户**页面上，使用单选按钮选择要编辑的订阅用户。所选订阅用户的**数据访问方式**必须为 **LAKEFORMATION**。

1. 选择**编辑**。

1. 输入新的**订阅用户名称**，然后选择**保存**。

**编辑订阅用户描述**  

1. 在上打开 Security Lake 控制台[https://console.aws.amazon.com/securitylake/](https://console.aws.amazon.com/securitylake/)。

   登录委托管理员账户。

1. 使用页面右上角的 AWS 区域 选择器，选择要编辑订阅者的区域。

1. 在导航窗格中选择**订阅用户**。

1. 在**订阅用户**页面上，使用单选按钮选择要编辑的订阅用户。所选订阅用户的**数据访问方式**必须为 **LAKEFORMATION**。

1. 选择**编辑**。

1. 为订阅用户输入新描述，然后选择**保存**。

**编辑外部 ID**  

1. 在上打开 Security Lake 控制台[https://console.aws.amazon.com/securitylake/](https://console.aws.amazon.com/securitylake/)。

   登录委托管理员账户。

1. 使用页面右上角的 AWS 区域 选择器，选择要编辑订阅者详细信息的区域。

1. 在导航窗格中选择**订阅用户**。

1. 在**订阅用户**页面上，使用单选按钮选择要编辑的订阅用户。所选订阅用户的**数据访问方式**必须为 **LAKEFORMATION**。

1. 选择**编辑**。

1. 输入订阅用户提供的新**外部 ID**，然后选择**保存**。

   保存新的外部 ID 会自动删除以前的 AWS RAM 资源共享，并为订阅者创建新的资源共享。

1. 订阅用户必须按照[设置跨账户表共享（订阅用户步骤）](create-query-subscriber-procedures.md#grant-query-access-subscriber)中的步骤 1 接受新的资源共享。确保订阅用户详细信息中显示的 Amazon 资源名称 (ARN) 与 Lake Formation 控制台中的名称相同。指向共享表的资源链接保持不变，因此订阅用户不必创建新的资源链接。

**编辑委托人 (AWS 账户 ID)**  

1. 在上打开 Security Lake 控制台[https://console.aws.amazon.com/securitylake/](https://console.aws.amazon.com/securitylake/)。

   登录委托管理员账户。

1. 使用页面右上角的 AWS 区域 选择器，选择要编辑订阅者详细信息的区域。

1. 在导航窗格中选择**订阅用户**。

1. 在**订阅用户**页面上，使用单选按钮选择要编辑的订阅用户。所选订阅用户的**数据访问方式**必须为 **LAKEFORMATION**。

1. 选择**编辑**。

1. 输入订阅用户的新 **AWS 账户 ID**，然后选择**保存**。

   保存新的账户 ID 会自动删除之前的 AWS RAM 资源共享，这样以前的委托人就无法使用日志和事件源。Security Lake 会创建新的资源共享。

1. 订阅用户必须使用新主体的凭证接受新的资源共享，并创建指向共享表的资源链接。这可以为新主体提供访问共享资源的权限。有关说明，请参阅[设置跨账户表共享（订阅用户步骤）](create-query-subscriber-procedures.md#grant-query-access-subscriber)中的步骤 1 和 2。确保订阅用户详细信息中显示的 ARN 与 Lake Formation 控制台中显示的 ARN 相同。

**编辑日志和事件源**  

1. 在上打开 Security Lake 控制台[https://console.aws.amazon.com/securitylake/](https://console.aws.amazon.com/securitylake/)。

   登录委托管理员账户。

1. 使用页面右上角的 AWS 区域 选择器，选择要编辑订阅者详细信息的区域。

1. 在导航窗格中选择**订阅用户**。

1. 在**订阅用户**页面上，使用单选按钮选择要编辑的订阅用户。所选订阅用户的**数据访问方式**必须为 **LAKEFORMATION**。

1. 选择**编辑**。

1. 取消选择现有来源或选择要添加的来源。如果您取消选择来源，则无需执行进一步操作。如果您选择添加来源，则不会创建新的资源共享邀请。但是，Security Lake 会根据添加的来源更新共享的 Lake Formation 表。订阅用户必须创建指向更新的共享表的资源链接，这样他们才能查询源数据。有关说明，请参阅[设置跨账户表共享（订阅用户步骤）](create-query-subscriber-procedures.md#grant-query-access-subscriber)中的步骤 2。

1. 选择**保存**。

------
#### [ API ]

要以编程方式编辑具有查询权限的订阅者，请使用 Security Lake API 的[UpdateSubscriber](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_UpdateSubscriber.html)操作。如果你使用的是 AWS Command Line Interface (AWS CLI)，请运行 [update-](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/update-subscriber.html) subscriber 命令。在您的请求中，使用支持的参数为订阅用户指定以下设置：
+ 对于 `subscriberName`，请指定新的订阅用户名称。
+ 对于 `subscriberDescription`，请指定新的描述。
+ 对于`subscriberIdentity`，请指定订阅者用于查询源数据的委托人 (AWS 账户 ID) 和外部 ID。您必须同时提供主体和外部 ID。如果想让其中一个值保持不变，请输入当前值。
  + **仅更新外部 ID**：此操作会删除以前的 AWS RAM 资源共享，并为订阅用户创建新的资源共享。订阅用户必须按照[设置跨账户表共享（订阅用户步骤）](create-query-subscriber-procedures.md#grant-query-access-subscriber)中的步骤 1 接受新的资源共享。指向共享表的资源链接保持不变，因此订阅用户不必创建新的资源链接。
  + **仅更新主体**-此操作会移除之前的 AWS RAM 资源共享，因此以前的委托人无法使用日志和事件源。Security Lake 会创建新的资源共享。订阅用户必须使用新主体的凭证接受新的资源共享，并创建指向共享表的资源链接。这可以为新主体提供访问共享资源的权限。有关说明，请参阅[设置跨账户表共享（订阅用户步骤）](create-query-subscriber-procedures.md#grant-query-access-subscriber)中的步骤 1 和 2。

  要更新外部 ID *和*主体，请按照[设置跨账户表共享（订阅用户步骤）](create-query-subscriber-procedures.md#grant-query-access-subscriber)中的步骤 1 和 2 进行操作。
+ 对于 `sources`，请移除现有来源或指定要添加的来源。如果您移除来源，则无需执行进一步的操作。如果您添加来源，则不会创建新的资源共享邀请。但是，Security Lake 会根据添加的来源更新共享的 Lake Formation 表。订阅用户必须创建指向更新的共享表的资源链接，这样他们才能查询源数据。有关说明，请参阅[设置跨账户表共享（订阅用户步骤）](create-query-subscriber-procedures.md#grant-query-access-subscriber)中的步骤 2。

------