管理 Security Lake 订阅用户的查询访问权限 - Amazon Security Lake

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

管理 Security Lake 订阅用户的查询访问权限

具有查询权限的订阅用户可以查询 Security Lake 收集的数据。这些订阅者使用诸如 Amazon Athena 之类的服务直接查询您的 S3 存储桶中的 AWS Lake Formation 表。尽管 Security Lake 的主要查询引擎是 Athena,但您也可以使用与 AWS Glue Data Catalog集成的其他服务,例如 Amazon Redshift Spectrum 和 Spark SQL。

注意

本部分介绍了如何向第三方订阅用户授予查询访问权限。有关针对自己的数据湖运行查询的信息,请参阅第 4 步:查看和查询您自己的数据

创建具有查询访问权限的订阅用户的先决条件

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

验证权限

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

要验证您的权限,请使用 IAM 查看附加到 IAM 身份的 IAM 策略。然后,将这些策略中的信息与以下操作列表(您必须有权执行这些操作才能创建具有查询访问权限的订阅用户)进行比较。

  • 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 管理员权限。Security Lake 会为您创建所有必要的 IAM 角色或使用现有角色。

  • 如果您准备使用 Security Lake API 或 CLI 添加具有查询访问权限的订阅用户,请继续执行下一步,创建 IAM 角色来查询 Security Lake 数据。

创建 IAM 角色以查询 Security Lake 数据( AWS CLI仅限 API 和步骤)

在使用 Security Lake API 或 AWS CLI 向订阅者授予查询访问权限时,您需要创建一个名为的角色AmazonSecurityLakeMetaStoreManager。Security Lake 使用此角色注册 AWS Glue 分区和更新 AWS Glue 表。您可能已经在创建必要的 IAM 角色时创建了此角色。

授予 Lake Formation 管理员权限

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

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

  1. 打开 Lake Formation 控制台:https://console.aws.amazon.com/lakeformation/

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

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

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

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

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

有关更改数据湖管理员权限的更多信息,请参阅 AWS Lake Formation 开发人员指南中的创建数据湖管理员

IAM 角色必须拥有对您想要向订阅用户授予访问权限的数据库和表的 SELECT 权限。有关如何执行此操作的说明,请参阅 AWS Lake Formation 开发人员指南中的使用命名资源方法授予数据目录权限

创建具有查询访问权限的订阅用户

选择您的首选方法来创建当前具有查询访问权限的订阅者 AWS 区域。订阅者只能从中 AWS 区域 创建的数据中查询数据。要创建订阅者,您需要拥有订阅者的 AWS 账户 ID 和外部 ID。外部 ID 是订阅用户提供给您的唯一标识符。有关外部 ID 的更多信息,请参阅 IAM 用户指南中的如何在向第三方授予 AWS 资源访问权限时使用外部 ID

注意

Security Lake 不支持 Lake Formation 跨账户数据共享版本 1。您必须将 Lake Formation 跨账户数据共享更新到版本 2 或版本 3。有关通过 AWS Lake Formation 控制台或 AWS CLI 更新跨账户版本设置的步骤,请参阅AWS Lake Formation 开发者指南中的启用新版本

Console
  1. 打开 Security Lake 控制台:https://console.aws.amazon.com/securitylake/

    登录委托管理员账户。

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

  3. 在导航窗格中选择订阅用户

  4. 订阅用户页面上,选择创建订阅用户

  5. 对于订阅用户详细信息,请输入订阅用户名称和可选描述

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

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

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

  8. 对于订阅者凭证,请提供订阅者的 AWS 账户 ID 和外部 ID

  9. (可选)对于标签,最多输入 50 个要分配给订阅用户的标签。

    标签是您可以为某些类型的 AWS 资源定义和分配的标签。每个标签都包含一个必需的标签键和一个可选的标签值。标签可以帮助您以不同的方式识别、分类和管理各种资源。要了解更多信息,请参阅为 Amazon Security Lake 资源添加标签

  10. 选择创建

API

要以编程方式创建具有查询访问权限的订阅者,请使用 Security Lake API 的CreateSubscriber操作。如果你使用的是 AWS Command Line Interface (AWS CLI),请运行 create-subscriber 命令。

在您的请求中,使用这些参数为订阅者指定以下设置:

  • 对于 accessTypes,请指定 LAKEFORMATION

  • 对于 sources,请指定您希望 Security Lake 在返回查询结果时包含的每个来源。

  • 对于subscriberIdentity,请指定订阅者用于查询源数据的 AWS 身份和外部 ID。

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

$ 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

设置跨账户表共享(订阅用户步骤)

Security Lake 使用 Lake Formation 跨账户表共享来支持订阅用户的查询访问权限。当您在 Security Lake 控制台、API 或 AWS CLI中创建具有查询权限的订阅者时,Security Lake 会通过在 AWS Resource Access Manager (AWS RAM) 中创建资源共享来与订阅者共享有关相关 Lake Formation 表的信息。

当您对具有查询访问权限的订阅用户进行某些类型的编辑时,Security Lake 会创建一个新的资源共享。有关更多信息,请参阅 编辑具有查询访问权限的订阅用户

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

  1. 接受资源共享 – 订阅用户必须接受在您创建或编辑订阅用户时生成的 resourceShareArnresourceShareName 资源共享。选择以下访问方法之一:

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

  2. 创建指向共享表的资源链接 – 订阅用户必须在 AWS Lake Formation (如果使用控制台)或 AWS Glue (如果使用 API/AWS CLI)中创建指向共享 Lake Formation 表的资源链接。此资源链接将订阅用户的账户指向共享表。选择以下访问方法之一:

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

有关授予跨账户权限的更多信息,请参阅 AWS Lake Formation 开发人员指南中的 Lake Formation 中的跨账户数据共享

编辑具有查询访问权限的订阅用户

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

注意

Security Lake 不支持 Lake Formation 跨账户数据共享版本 1。您必须将 Lake Formation 跨账户数据共享更新到版本 2 或版本 3。有关通过 AWS Lake Formation 控制台或 AWS CLI 更新跨账户版本设置的步骤,请参阅AWS Lake Formation 开发者指南中的启用新版本

Console

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

编辑订阅用户名称
  1. 打开 Security Lake 控制台:https://console.aws.amazon.com/securitylake/

    登录委托管理员账户。

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

  3. 在导航窗格中选择订阅用户

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

  5. 选择编辑

  6. 输入新的订阅用户名称,然后选择保存

编辑订阅用户描述
  1. 打开 Security Lake 控制台:https://console.aws.amazon.com/securitylake/

    登录委托管理员账户。

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

  3. 在导航窗格中选择订阅用户

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

  5. 选择编辑

  6. 为订阅用户输入新描述,然后选择保存

编辑外部 ID
  1. 打开 Security Lake 控制台:https://console.aws.amazon.com/securitylake/

    登录委托管理员账户。

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

  3. 在导航窗格中选择订阅用户

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

  5. 选择编辑

  6. 输入订阅用户提供的新外部 ID,然后选择保存

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

  7. 订阅用户必须按照设置跨账户表共享(订阅用户步骤)中的步骤 1 接受新的资源共享。确保订阅用户详细信息中显示的 Amazon 资源名称 (ARN) 与 Lake Formation 控制台中的名称相同。指向共享表的资源链接保持不变,因此订阅用户不必创建新的资源链接。

编辑委托人 (AWS 账户 ID)
  1. 打开 Security Lake 控制台:https://console.aws.amazon.com/securitylake/

    登录委托管理员账户。

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

  3. 在导航窗格中选择订阅用户

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

  5. 选择编辑

  6. 输入订阅用户的新 AWS 账户 ID,然后选择保存

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

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

编辑日志和事件源
  1. 打开 Security Lake 控制台:https://console.aws.amazon.com/securitylake/

    登录委托管理员账户。

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

  3. 在导航窗格中选择订阅用户

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

  5. 选择编辑

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

  7. 选择保存

API

要以编程方式编辑具有查询权限的订阅者,请使用 Security Lake API 的UpdateSubscriber操作。如果你使用的是 AWS Command Line Interface (AWS CLI),请运行 update- subscriber 命令。在您的请求中,使用支持的参数为订阅用户指定以下设置:

  • 对于 subscriberName,请指定新的订阅用户名称。

  • 对于 subscriberDescription,请指定新的描述。

  • 对于subscriberIdentity,请指定订阅者用于查询源数据的委托人 (AWS 账户 ID) 和外部 ID。您必须同时提供主体和外部 ID。如果想让其中一个值保持不变,请输入当前值。

    • 仅更新外部 ID:此操作会删除以前的 AWS RAM 资源共享,并为订阅用户创建新的资源共享。订阅用户必须按照设置跨账户表共享(订阅用户步骤)中的步骤 1 接受新的资源共享。指向共享表的资源链接保持不变,因此订阅用户不必创建新的资源链接。

    • 仅更新主体-此操作会删除以前的 AWS RAM 资源共享,因此以前的委托人无法使用日志和事件源。Security Lake 会创建新的资源共享。订阅用户必须使用新主体的凭证接受新的资源共享,并创建指向共享表的资源链接。这可以为新主体提供访问共享资源的权限。有关说明,请参阅设置跨账户表共享(订阅用户步骤)中的步骤 1 和 2。

    要更新外部 ID 主体,请按照设置跨账户表共享(订阅用户步骤)中的步骤 1 和 2 进行操作。

  • 对于 sources,请移除现有来源或指定要添加的来源。如果您移除来源,则无需执行进一步的操作。如果您添加来源,则不会创建新的资源共享邀请。但是,Security Lake 会根据添加的来源更新共享的 Lake Formation 表。订阅用户必须创建指向更新的共享表的资源链接,这样他们才能查询源数据。有关说明,请参阅设置跨账户表共享(订阅用户步骤)中的步骤 2。