管理安全湖訂戶的資料存取 - Amazon Security Lake

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

管理安全湖訂戶的資料存取

在資料寫入 S3 儲存貯體時,可以存取 Amazon Security Lake 中來源資料的訂閱者會收到來源新物件的通知。依預設,訂閱者會透過其提供的 HTTPS 端點通知有關新物件的相關資訊。或者,您也可以輪詢 Amazon Simple Queue Service (Amazon SQS),向訂閱者收到有關新物件的通知。

建立具有資料存取權之訂戶的先決條件

您必須先完成下列先決條件,才能在 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

除了上述清單之外,您還需要執行下列動作的權限:

  • 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

若要建立訂閱者,除了訂閱者的 AWS 帳戶 ID 之外,您還需要取得其外部 ID。外部 ID 是訂閱者提供給您的唯一識別碼。安全湖會將外部 ID 新增至其建立的訂閱者 IAM 角色。當您透過 API 或在 Security Lake 主控台中建立訂閱者時,可以使用外部識別碼 AWS CLI。

如需有關外部 ID 的詳細資訊,請參閱 IAM 使用者指南中的如何在將資 AWS 源存取權授予第三方時使用外部 ID。

重要

如果您打算使用 Security Lake 主控台新增訂閱者,可以略過下一個步驟並繼續執行建立具有資料存取權的訂閱者。Security Lake 主控台提供簡化的入門程序,並建立所有必要的 IAM 角色,或代表您使用現有的角色。

如果您打算使用安全湖 API 或 AWS CLI 新增訂閱者,請繼續執行下一個步驟以建立 IAM 角色以叫用 EventBridge API 目的地。

建立 IAM 角色以叫用 EventBridge API 目的地 (API 和 AWS CLI唯一步驟)

如果您是透過 API 使用安全湖 AWS CLI,或者在 AWS Identity and Access Management (IAM) 中建立角色,以授予 Amazon EventBridge 許可以叫用 API 目的地,並將物件通知傳送至正確的 HTTPS 端點。

建立此 IAM 角色之後,您需要角色的 Amazon 資源名稱 (ARN) 才能建立訂閱者。如果訂閱者輪詢來自 Amazon Simple Queue Service (Amazon SQS) 的資料,或直接從中查詢資料,則不需要此 IAM 角色。 AWS Lake Formation如需此類型資料存取方法 (存取類型) 的詳細資訊,請參閱管理安全湖訂戶的查詢存取

將下列政策附加到您的 IAM 角色:

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

將以下信任政策附加到您的 IAM 角色,以 EventBridge 允許擔任該角色:

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

Security Lake 會自動建立 IAM 角色,允許訂閱者從資料湖讀取資料 (或輪詢 Amazon SQS 佇列中的事件,如果這是慣用的通知方法)。此角色受到名為的受 AWS 管理策略保護AmazonSecurityLakePermissionsBoundary

建立具有資料存取權的訂閱者

選擇下列其中一種存取方法,建立可存取目前資料的訂戶 AWS 區域。

Console
  1. 開啟安全湖主控台,網址為 https://console.aws.amazon.com/securitylake/

  2. 使用頁面右上角的選取 AWS 區域 器,選取您要建立訂閱者的「地區」。

  3. 在導覽窗格中,選擇 [訂閱者]。

  4. 在「訂」頁面上,選擇「建立訂戶」。

  5. 如需訂戶詳細資訊,請輸入訂戶名稱和選擇性說明

    地區」會自動填入您目前選取的項目, AWS 區域 且無法修改。

  6. 對於記錄檔和事件來源,請選擇授權訂戶使用的來源。

  7. 對於資料存取方法,請選擇 S3 設定訂閱者的資料存取。

  8. 若為訂閱者認證,請提供訂閱者的 AWS 帳戶 ID 和外部識別碼

  9. (選擇性) 對於通知詳細資訊,如果您希望 Security Lake 建立訂閱者可輪詢物件通知的 Amazon SQS 佇列,請選取 SQS 佇列。如果您希望安全湖透過 EventBridge HTTPS 端點傳送通知,請選取訂閱端點

    如果您選取訂閱端點,請同時執行下列動作:

    1. 輸入訂閱端點。有效端點格式的範例包括http://example.com。您也可以選擇性地提供 HTTPS 金鑰名稱HTTPS 金鑰值

    2. 對於服務存取,請建立新的 IAM 角色或使用現有的 IAM 角色,以 EventBridge授予呼叫 API 目標的權限,並將物件通知傳送至正確的端點。

      如需建立新 IAM 角色的相關資訊,請參閱建立 IAM 角色以叫用 EventBridge API 目的地

  10. (選擇性) 在標籤中,輸入最多 50 個要指派給訂閱者的標籤。

    是您可以定義並指派給特定 AWS 資源類型的標籤。每個標籤都包含必要的標籤鍵和一個可選的標籤值。標籤可協助您以不同的方式識別、分類和管理資源。如需進一步了解,請參閱 標記 Amazon 安全湖資源

  11. 選擇建立

API

若要以程式設計方式建立具有資料存取權的訂閱者,請使用 Security Lake API 的CreateSubscriber作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請執行建立訂閱者命令。

在您的要求中,使用這些參數來指定訂戶的下列設定值:

  • 對於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: 1.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: 1.0}}] \ --subscriber-name subscriber name --access-types S3

上述範例針對 Linux、macOS 或 Unix 進行格式化,並使用反斜線 (\) 行接續字元來提高可讀性。

(選擇性) 建立訂戶之後,請使用此CreateSubscriberNotification作業來指定將新資料寫入資料湖以供訂戶存取之來源的資料湖時,如何通知訂戶。如果您使用的是 AWS Command Line Interface (AWS CLI),請執行create-subscriber-notification命令。

  • 若要覆寫預設通知方法 (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,請使用安全湖 API 的ListSubscribers作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請運行列表訂閱者命令。

$ aws securitylake list-subscribers

若要隨後變更訂閱者的通知方法 (Amazon SQS 佇列或 HTTPS 端點),請使用UpdateSubscriberNotification作業,或者,如果您使用的是 AWS CLI,請執行命update-subscriber-notification令。您也可以使用 Security Lake 主控台變更通知方法:在「訂戶」頁面上選取訂,然後選擇「編輯」。

範例物件通知訊息

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

更新資料訂閱者

您可以變更訂戶使用的來源,以更新訂戶。您也可以指派或編輯訂閱者的標籤。標是一個標籤,您可以定義並指派給特定類型的 AWS 資源,包括訂閱者。如需進一步了解,請參閱 標記 Amazon 安全湖資源

選擇其中一種存取方法,然後依照下列步驟為現有訂閱定義新來源。

Console
  1. 開啟安全湖主控台,網址為 https://console.aws.amazon.com/securitylake/

  2. 在導覽窗格中,選擇 [訂閱者]。

  3. 選取訂戶。

  4. 選擇 「編輯」,然後執行下列任一項作業:

    • 若要更新訂戶的來源,請在「記錄檔和事件來源」區段中輸入新的設定值。

    • 若要指派或編輯訂閱者的標記,請視需要在「標記」區段中變更標記

  5. 完成後,請選擇儲存

API

若要以程式設計方式更新訂閱者的資料存取來源,請使用 Security Lake API 的UpdateSubscriber作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請執行更新訂閱者命令。在您的要求中,使用sources參數來指定您要訂閱者存取的每個來源。

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

如需與特定 AWS 帳戶 或組織相關聯的訂閱者清單,請使用ListSubscribers作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請運行列表訂閱者命令。

$ aws securitylake list-subscribers

若要檢閱特定訂戶的目前設定值,請使用GetSubscriber作業。執行 ge t-user 命令。然後,Security Lake 會傳回訂閱者的名稱和說明、外部識別碼以及其他資訊。如果您使用的是 AWS Command Line Interface (AWS CLI),請執行取得訂閱者命令

若要更新訂閱者的通知方法,請使用此UpdateSubscriberNotification作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請執行update-subscriber-notification命令。例如,您可以為訂閱者指定新的 HTTPS 端點,或從 HTTPS 端點切換到 Amazon SQS 佇列。

移除資料訂閱者

如果您不想讓訂閱者使用 Security Lake 的資料,您可以依照下列步驟移除訂閱者。

Console
  1. 開啟安全湖主控台,網址為 https://console.aws.amazon.com/securitylake/

  2. 在導覽窗格中,選擇 [訂閱者]。

  3. 選取您要移除的訂閱者。

  4. 選擇刪除,然後確認動作。這樣會刪除訂閱者和所有相關的通知設定。

API

根據您的案例,執行下列其中一個動作:

  • 若要刪除訂閱者和所有相關聯的通知設定,請使用安全湖 API 的DeleteSubscriber作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請執行刪除訂閱者命令。

  • 若要保留訂閱者,但停止 future 傳送給訂閱者的通知,請使用 Security Lake API 的DeleteSubscriberNotification作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請運行該delete-subscriber-notification命令。