

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

# 安全湖中的订阅者管理
<a name="subscriber-management"></a>

Amazon Security Lake 订阅用户可以使用来自 Security Lake 的日志和事件。为了控制成本并遵循最低权限访问最佳实践，您可以按来源为订阅用户提供对数据的访问权限。有关来源的更多信息，请参阅[安全湖中的源代码管理](source-management.md)。

Security Lake 支持两种类型的订阅用户访问：
+ **数据访问**当数据写入 S3 存储桶时，有权访问 Amazon Security Lake 中源数据的订阅者会收到有关该源的新对象的通知。默认情况下，订阅用户会通过他们提供的 HTTPS 端点收到有关新对象的通知。订阅用户还可以通过轮询 Amazon Simple Queue Service (Amazon SQS) 队列收到有关新对象的通知。
+ **查询访问权限**-具有查询权限的订阅者可以查询 Security Lake 收集的数据。这些订阅者使用亚马逊 Athena 等服务直接查询 S3 存储桶中的 AWS Lake Formation 表。

订阅者只能访问您在创建订阅者时选择的中的源数据。 AWS 区域 要允许订阅用户访问多个区域中的数据，您可以将创建订阅用户时所在的区域指定为汇总区域，并让其他区域向其提供数据。有关汇总区域和数据提供区域的更多信息，请参阅[在安全湖中管理区域](manage-regions.md)。

**重要**  
Security Lake 允许每位订阅者添加的最大来源数为 10。这可能是 AWS 来源和自定义来源的组合。

**Topics**
+ [管理 Security Lake 订阅用户的数据访问权限](subscriber-data-access.md)
+ [管理 Security Lake 订阅用户的查询访问权限](subscriber-query-access.md)

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

当数据写入 S3 存储桶时，有权访问 Amazon Security Lake 中的源数据的订阅用户会收到有关该源的新对象的通知。默认情况下，订阅用户会通过他们提供的 HTTPS 端点收到有关新对象的通知。订阅用户还可以通过轮询 Amazon Simple Queue Service (Amazon SQS) 队列收到有关新对象的通知。

当某个源的新 Amazon S3 对象写入安全湖数据湖时，订阅者会收到有关这些对象的通知。订阅用户可以通过订阅端点或通过轮询某个 Amazon Simple Queue Service (Amazon SQS) 队列来直接访问 S3 对象并接收有关新对象的通知。此订阅类型`S3`在 [CreateSubscriber](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateSubscriber.html)API 的`accessTypes`参数中标识。

**Topics**
+ [先决条件](prereqs-creating-subscriber.md)
+ [创建具有数据访问权限的订阅用户](create-subscriber-data-access.md)
+ [更新数据订阅用户](subscriber-update.md)
+ [移除数据订阅用户](remove-data-access-subscriber.md)

# 在 Security Lake 中创建具有数据访问权限的订阅者的先决条件
<a name="prereqs-creating-subscriber"></a>

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

## 验证权限
<a name="create-data-access-subscriber-permissions"></a>

要验证您的权限，请使用 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`

除了上表之外，您还需要获得执行以下操作的权限：
+ `events:CreateApiDestination`
+ `events:CreateConnection`
+ `events:DescribeRule`
+ `events:ListApiDestinations`
+ `events:ListConnections`
+ `events:PutRule`
+ `events:PutTargets`
+ `s3:GetBucketNotification`
+ `s3:PutBucketNotification`
+ `sqs:CreateQueue`
+ `sqs:DeleteQueue`
+ `sqs:GetQueueAttributes`
+ `sqs:GetQueueUrl`
+ `sqs:SetQueueAttributes`

## 获取订阅用户的外部 ID
<a name="subscriber-external-id"></a>

要创建订阅者，除了订阅者的 AWS 账户 ID 之外，您还需要获取他们的*外部 ID*。外部 ID 是订阅用户提供给您的唯一标识符。Security Lake 会将外部 ID 添加到其创建的订阅用户 IAM 角色中。在 Security Lake 控制台中通过 API 或 AWS CLI创建订阅用户时，您需要使用外部 ID。

有关外部的更多信息 IDs，请参阅 *IAM 用户指南*中的[如何在向第三方授予 AWS 资源访问权限时使用外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)。



**重要**  
如果您打算使用 Security Lake 控制台添加订阅用户，可以跳过下一步，继续执行[在 Security Lake 中创建具有数据访问权限的订户](create-subscriber-data-access.md)。Security Lake 控制台提供了简化的入门流程，可以为您创建所有必要的 IAM 角色或使用现有角色。  
如果您计划使用 Security Lake API 或 AWS CLI 添加订阅者，请继续执行下一步创建用于调用 EventBridge API 目标的 IAM 角色。

## 创建 IAM 角色以调用 EventBridge API 目标（ AWS CLI仅限 API 和步骤）
<a name="iam-role-subscriber"></a>

如果您通过 API 或使用 Security Lake AWS CLI，请在 AWS Identity and Access Management (IAM) 中创建一个角色，授予亚马逊调用 API 目标和向正确的 HTTPS 终端节点发送对象通知的 EventBridge 权限。

此 IAM 角色创建完成后，您需要提供角色的 Amazon 资源名称 (ARN) 才能创建订阅用户。如果订阅用户轮询某个 Amazon Simple Queue Service (Amazon SQS) 队列中的数据或直接从 AWS Lake Formation中查询数据，则不需要使用这一 IAM 角色。有关此类型的数据访问方法（访问类型）的更多信息，请参阅[管理 Security Lake 订阅用户的查询访问权限](subscriber-query-access.md)。

将以下策略附加到您的 IAM 角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowInvokeApiDestination",
            "Effect": "Allow",
            "Action": [
                "events:InvokeApiDestination"
            ],
            "Resource": [
            "arn:aws:events:us-east-1:123456789012:api-destination/AmazonSecurityLake*/*"
            ]
        }
    ]
}
```

------

将以下信任策略附加到您的 IAM 角色 EventBridge 以允许代入该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowEventBridgeToAssume",
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Security Lake 会自动创建一个 IAM 角色，允许订阅用户从数据湖读取数据（或者从 Amazon SQS 队列中轮询事件，如果这是首选的通知方式）。此角色受名为的 AWS 托管策略保护[`AmazonSecurityLakePermissionsBoundary`](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSecurityLakePermissionsBoundary)。

# 在 Security Lake 中创建具有数据访问权限的订户
<a name="create-subscriber-data-access"></a>

选择以下访问方法之一来创建可以访问当前数据的订阅者 AWS 区域。

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

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

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

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

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

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

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

1. 对于**日志源和事件来源**，选择订阅用户有权使用的来源。

1. 对于**数据访问方法**，选择 **S3**，以便为订阅用户设置数据访问权限。

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

1. （可选）对于**通知详情**，如果您想让 Security Lake 创建一个 Amazon SQS 队列供订阅用户轮询以便获得对象通知，请选择 **SQS 队列**。如果您希望 Security Lake 向 HTTPS 终端节点发送通知，请选择**订阅终端节点**。 EventBridge 

   如果选择**订阅端点**，您还要执行以下操作：

   1. 输入**订阅端点**。有效端点格式的示例为 **http://example.com**。您也可以选择提供 **HTTPS 密钥名称**和 **HTTPS 密钥值**。

   1. 对于**服务访问权限**，请创建新的 IAM 角色或使用现有 IAM 角色来 EventBridge授予调用 API 目的地和向正确的终端节点发送对象通知的权限。

      有关创建新 IAM 角色的信息，请参阅[创建 IAM 角色以调用 EventBridge API 目标](https://docs.aws.amazon.com//security-lake/latest/userguide/prereqs-creating-subscriber.html#iam-role-subscriber)。

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)

在您的请求中，使用这些参数为订阅者指定以下设置：
+ 对于 `sources`，请指定您希望订阅用户访问的每个来源。
+ 对于`subscriberIdentity`，请指定订阅者用于访问源数据的 AWS 帐户 ID 和外部 ID。
+ 对于`subscriber-name`，请指定订阅者的名称。
+ 对于 `accessTypes`，请指定 `S3`。

**示例 1**

以下示例创建了一个订阅者，该订阅者可以访问当前 AWS 区域中针对某个 AWS 源的指定订阅者身份的数据。

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

**示例 2**

以下示例创建了一个订阅者，该订阅者可以访问当前 AWS 区域中自定义来源的指定订阅者身份。

```
$ aws securitylake create-subscriber \ 
--subscriber-identity {"accountID": 1293456789123,"externalId": 123456789012} \
--sources [{"customLogSource": {"sourceName": custom-source-name, "sourceVersion": 2.0}}] \
--subscriber-name subscriber name
--access-types S3
```

前面的示例是针对 Linux、macOS 或 Unix 进行格式化的，它们使用反斜杠 (\$1) 行继续符来提高可读性。

（可选）创建订阅者后，使用[CreateSubscriberNotification](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateSubscriberNotification.html)操作来指定当您希望订阅者访问的源有新数据写入数据湖时，如何通知订阅者。如果您使用的是 AWS Command Line Interface (AWS CLI)，请运行该[create-subscriber-notification](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/create-subscriber-notification.html)命令。
+ 要覆盖默认通知方式（HTTPS 端点）并创建 Amazon SQS 队列，请指定 `sqsNotificationConfiguration` 参数的值。
+ 如果您更喜欢使用 HTTPS 端点发送通知，请指定 `httpsNotificationConfiguration` 参数的值。
+ `targetRoleArn`在该字段中，指定您为调用 EventBridge API 目标而创建的 IAM 角色的 ARN。

```
$ aws securitylake create-subscriber-notification \
--subscriber-id "12345ab8-1a34-1c34-1bd4-12345ab9012" \
--configuration httpsNotificationConfiguration={"targetRoleArn"="arn:aws:iam::XXX:role/service-role/RoleName", "endpoint"="https://account-management.$3.$2.securitylake.aws.dev/v1/datalake"}
```

要获取`subscriberID`，请使用 Security Lake API 的[ListSubscribers](https://docs.aws.amazon.com//security-lake/latest/APIReference/API_ListSubscribers.html)操作。如果你使用的是 AWS Command Line Interface (AWS CLI)，请运行 [list-subscriber 命令。](https://docs.aws.amazon.com/cli/latest/reference/securitylake/list-subscribers.html)

```
$ aws securitylake list-subscribers
```

------

要随后更改订阅者的通知方式（Amazon SQS 队列或 HTTPS 终端节点），请使用[UpdateSubscriberNotification](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_UpdateSubscriberNotification.html)操作，或者，如果您使用的是 AWS CLI，则运行命令。[update-subscriber-notification](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/update-subscriber-notification.html)您也可以使用 Security Lake 控制台更改通知方式：在**订阅用户**页面上选择订阅用户，然后选择**编辑**。

## 对象通知消息示例
<a name="sample-notification"></a>

以下示例以 JSON 结构格式显示了`CreateSubscriberNotification`操作的事件通知。

```
{
  "source": "aws.s3",
  "time": "2021-11-12T00:00:00Z",
  "account": "123456789012",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket"
  ],
  "detail": {
    "bucket": {
      "name": "amzn-s3-demo-bucket"
    },
    "object": {
      "key": "example-key",
      "size": 5,
      "etag": "b57f9512698f4b09e608f4f2a65852e5"
    },
    "request-id": "N4N7GDK58NMKJ12R",
    "requester": "securitylake.amazonaws.com"
  }
}
```

# 更新 Security Lake 中的数据订阅者
<a name="subscriber-update"></a>

您可以通过更改订阅用户的访问来源来更新订阅用户。您也可以为订阅用户分配或编辑标签。*标签*是您可以定义并分配给某些类型的 AWS 资源（包括订阅者）的标签。要了解更多信息，请参阅[为安全湖资源添加标签](tagging-resources.md)。

请选择一种访问方式，然后按照以下步骤为现有订阅定义新的来源。

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

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

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

1. 选择订阅用户。

1. 选择**编辑**，然后执行以下任一操作：
   + 要更新订阅用户的来源，请在**日志和事件来源**部分输入新设置。
   + 要为订阅用户分配或编辑标签，请在**标签**部分根据需要更改标签。

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 命令。在您的请求中，使用 `sources` 参数指定您希望订阅用户访问的每个来源。

```
$ aws securitylake update-subscriber --subscriber-id subscriber ID
```

要查看与特定 AWS 账户 或组织关联的订阅者列表，请使用[ListSubscribers](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_ListSubscribers.html)操作。如果你使用的是 AWS Command Line Interface (AWS CLI)，请运行[列表订阅者](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/list-subscribers.html)命令。

```
$ aws securitylake list-subscribers
```

要查看特定订阅者的当前设置，请使用[GetSubscriber](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_GetSubscriber.html)操作。运行 [get-](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/get-subscriber.html) subscriber 命令。然后，Security Lake 会返回订阅用户的名称和描述、外部 ID 以及其他信息。如果你使用的是 AWS Command Line Interface (AWS CLI)，请运行 [get-subscriber 命令。](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/get-subscriber.html)

 要更新订阅者的通知方法，请使用[UpdateSubscriberNotification](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_UpdateSubscriberNotification.html)操作。如果您使用的是 AWS Command Line Interface (AWS CLI)，请运行该[update-subscriber-notification](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/update-subscriber-notification.html)命令。例如，您可以为订阅用户指定新的 HTTPS 端点，也可以从 HTTPS 端点切换到 Amazon SQS 队列。

------

# 从安全湖移除数据订阅者
<a name="remove-data-access-subscriber"></a>

如果您不再希望某个订阅用户访问 Security Lake 中的数据，可以按照以下步骤删除该订阅用户。

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

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

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

1. 选择想要移除的订阅用户。

1. 选择**删除**，然后确认操作。这将删除订阅用户和所有关联的通知设置。

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

根据您的场景，执行以下操作之一：
+ 要删除订阅者和所有相关的通知设置，请使用 Security Lake API 的[DeleteSubscriber](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_DeleteSubscriber.html)操作。如果你使用的是 AWS Command Line Interface (AWS CLI)，请运行[删除订阅者命令](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/delete-subscriber.html)。
+ 要保留订阅者但停止将来向订阅者发送通知，请使用 Security Lake API 的[DeleteSubscriberNotification](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_DeleteSubscriberNotification.html)操作。如果你使用的是 AWS Command Line Interface (AWS CLI)，请运行 run [delete-subscriber-notification](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/delete-subscriber-notification.html)命令。

------

# 管理 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。

------