通过邀请管理 GuardDuty 账户 - Amazon GuardDuty
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

通过邀请管理 GuardDuty 账户

要管理您的组织外部的账户,可以使用传统邀请方法。使用此方法时,如果其他账户接受您的邀请成为成员账户,您的账户将被指定为管理员账户。

如果您的账户不是管理员账户,则可以接受来自其他账户的邀请。接受邀请后,您的账户将成为成员账户。一个 Amazon 账户不能同时是 GuardDuty 管理员账户和成员账户。

通过邀请关联的账户与关联的账户具有相同的总体管理员 account-to-member 关系 Amazon Organizations,如中所述了解 GuardDuty 管理员账户和成员账户之间的关系。但是,邀请管理员账户用户无法 GuardDuty 代表关联的成员账户启用,也不能查看其 Amazon Organizations 组织内的其他非成员账户。

重要

使用此方法 GuardDuty 创建成员账户时,可能会发生跨区域数据传输。为了验证成员账户的电子邮件地址,请 GuardDuty 使用仅在美国东部(弗吉尼亚北部)地区运行的电子邮件验证服务。

通过邀请添加和管理账户

选择一种访问方法来添加和邀请帐户以 GuardDuty 管理员帐户的身份成为 GuardDuty 成员帐户。

Console
步骤 1:添加账户
  1. 打开 GuardDuty 控制台,网址为 https://console.aws.amazon.com/guardduty/

  2. 在导航窗格中,选择账户

  3. 在顶部窗格中选择通过邀请添加账户

  4. 在 “添加成员帐户” 页面的 “输入账户详细信息” 下,输入与要添加的账户关联的 Amazon Web Services 账户 ID 和电子邮件地址。

  5. 要添加另一行,以便逐个输入账户详细信息,请选择添加其他账户。您也可以选择上传包含账户详细信息的.csv 文件来批量添加账户。

    重要

    csv 文件的第一行必须包含以下标头,如以下示例所示:Account ID,Email。随后的每一行都必须包含一个有效的 Amazon Web Services 账户 ID 及其关联的电子邮件地址。如果一行仅包含一个 Amazon Web Services 账户 ID 和用逗号分隔的关联电子邮件地址,则该行的格式有效。

    Account ID,Email 555555555555,user@example.com
  6. 添加所有账户的详细信息后,选择下一步。您可以在账户表中查看新添加的账户。这些账户的状态未发送邀请。有关向一个或多个添加的账户发送邀请的信息,请参阅 Step 2 - Invite an account

步骤 2:邀请账户
  1. 打开 GuardDuty 控制台,网址为 https://console.aws.amazon.com/guardduty/

  2. 在导航窗格中,选择账户

  3. 选择一个或多个您想要邀请加入 Amazon 的账户 GuardDuty。

  4. 选择操作下拉菜单,然后选择邀请

  5. 在 GuardDuty “邀请加入” 对话框中,输入(可选)邀请消息。

    如果受邀请的账户无法访问电子邮件,请选中同时向受邀者的 Amazon Web Services 账户 上的根用户发送电子邮件通知,并在受邀者的 Amazon Health Dashboard中生成警报

  6. 选择 Send invitation (发送邀请)。如果受邀者有权访问指定的电子邮件地址,则可以通过打开 GuardDuty控制台来查看邀请,网址为 https://console.aws.amazon.com/guardduty/

  7. 受邀者接受邀请后,状态列中的值将变为已邀请。有关接受邀请的信息,请参阅 Step 3 - Accept an invitation

步骤 3:接受邀请
  1. 打开 GuardDuty 控制台,网址为 https://console.aws.amazon.com/guardduty/

    重要

    必须 GuardDuty 先启用,然后才能查看或接受成员资格邀请。

  2. 只有在 GuardDuty 尚未启用的情况下才执行以下操作;否则,可以跳过此步骤继续下一步。

    如果您尚未启用 GuardDuty,请在 Amazon GuardDuty 页面上选择 “开始”。

    欢迎使用 GuardDuty页面上,选择启用 GuardDuty

  3. GuardDuty 为您的账户启用后,请按照以下步骤接受成员资格邀请:

    1. 在导航窗格中,选择 Settings(设置)

    2. 选择 账户

    3. 账户上,确保验证您接受邀请的账户的所有者。打开接受以接受成员资格邀请。

  4. 接受邀请后,您的账户将成为 GuardDuty 成员账户。所有者发送邀请的账户成为 GuardDuty 管理员账户。管理员账户就会知道您已接受邀请。他们账户中的 GuardDuty 账户表将会更新。与您的成员账户 ID 对应的状态列中的值将变为已监控。管理员账户所有者现在可以代表您的账户查看 GuardDuty 、管理和保护计划配置。管理员账户还可以查看和管理为您的成员账户生成的 GuardDuty 调查结果。

API/CLI

您可以指定 GuardDuty 管理员账户,也可以通过 API 操作通过邀请创建或添加 GuardDuty 成员账户。运行以下 GuardDuty API 操作以在中指定管理员帐户和成员帐户 GuardDuty。

使用要指定为 GuardDuty 管理员帐户 Amazon Web Services 账户 的凭据完成以下过程。

创建或添加成员账户
  1. 使用已 GuardDuty 启用的 Amazon 账户的凭据运行 CreateMembersAPI 操作。这是您想要成为管理员帐户帐户的 GuardDuty 帐户。

    您必须指定当前 Amazon 账户的检测器 ID 以及想要成为 GuardDuty 成员的账户的账户 ID 和电子邮件地址。可以使用此 API 操作创建一个或多个成员。

    您也可以使用 Amazon 命令行工具通过运行以下 CLI 命令来指定管理员帐户。务必使用您自己的有效探测器 ID、账户 ID 和电子邮件。

    您可以在 https://console.aws.amazon.com/guardduty/ 控制台的设置页面上,找到自己当前区域的 detectorId

    aws guardduty create-members --detector-id 12abc34d567e8fa901bc2d34e56789f0 --account-details AccountId=111122223333,Email=guardduty-member@organization.com
  2. 使用已 GuardDuty 启用的 Amazon 账户的凭据运行InviteMembers。这是您想要成为管理员帐户帐户的 GuardDuty 帐户。

    您必须指定当前 Amazon 账户的检测器 ID 和想要成为 GuardDuty 成员的账户的账户 ID。可以使用此 API 操作邀请一个或多个成员。

    注意

    您也可以使用 message 请求参数指定可选的邀请消息。

    您还可以通过运行以下命令 Amazon Command Line Interface 来指定成员帐户。务必使用您自己的有效探测器 ID,以及您要邀请的账户的有效账户 ID。

    您可以在 https://console.aws.amazon.com/guardduty/ 控制台的设置页面上,找到自己当前区域的 detectorId

    aws guardduty invite-members --detector-id 12abc34d567e8fa901bc2d34e56789f0 --account-ids 111122223333
接受邀请

使用要指定为 GuardDuty 成员账户的每个 Amazon 账户的凭据完成以下过程。

  1. 为每个受邀成为 GuardDuty 成员 Amazon 账户并希望接受邀请的账户运行 CreateDetectorAPI 操作。

    您必须指定是否使用 GuardDuty 服务启用探测器资源。必须创建并启用探测器 GuardDuty 才能投入运行。 GuardDuty 在接受邀请之前,必须先启用。

    您也可以使用 Amazon 命令行工具使用以下 CLI 命令来执行此操作。

    aws guardduty create-detector --enable
  2. 使用每个要接受成员资格邀请的 Amazon 账号使用该账户的凭证运行 AcceptAdministratorInvitationAPI 操作。

    您必须为成员账户指定此 Amazon 账户的探测器 ID、发送邀请的管理员账户的账户 ID 以及您正在接受的邀请的邀请 ID。您可以在邀请电子邮件中或使用 API 的 ListInvitations 操作查找管理员账户的账户 ID。

    您也可以使用 Amazon 命令行工具通过运行以下 CLI 命令来接受邀请。务必使用有效的检测器 ID、管理员账户 ID 和邀请 ID。

    您可以在 https://console.aws.amazon.com/guardduty/ 控制台的设置页面上,找到自己当前区域的 detectorId

    aws guardduty accept-invitation --detector-id 12abc34d567e8fa901bc2d34e56789f0 --administrator-id 444455556666 --invitation-id 84b097800250d17d1872b34c4daadcf5

将 GuardDuty 管理员账户整合到单个组织委托 GuardDuty 管理员账户下

GuardDuty 建议使用关联 Amazon Organizations 来管理委派 GuardDuty 管理员账户下的成员账户。您可以使用下面概述的示例流程,将组织中受邀关联的管理员帐户和成员整合到一个 GuardDuty委派的 GuardDuty 管理员账户下。

注意

已由委派 GuardDuty 管理员账户管理的账户或与委派 GuardDuty 管理员账户关联的活跃成员账户无法添加到其他委托 GuardDuty 管理员账户。每个组织在每个区域只能有一个委托 GuardDuty 管理员账户,每个成员账户只能有一个委托 GuardDuty 管理员账户。

选择一种访问方法,将 GuardDuty 管理员帐户合并到单个委派 GuardDuty 管理员帐户下。

Console
  1. 打开 GuardDuty 控制台,网址为 https://console.aws.amazon.com/guardduty/

    若要登录,请使用组织的管理账户凭证。

  2. 您要管理的所有账户都 GuardDuty 必须是您的组织的一部分。有关向组织添加账户的信息,请参阅邀请 Amazon Web Services 账户 加入您的组织

  3. 确保所有成员账户都与您想要指定为单一委派 GuardDuty 管理员账户的账户相关联。取消关联仍与原有管理员账户关联的成员账户。

    以下步骤可帮助您取消成员账户与原有管理员账户的关联:

    1. 打开 GuardDuty 控制台,网址为 https://console.aws.amazon.com/guardduty/

    2. 若要登录,请使用原有管理员账户凭证。

    3. 在导航窗格中,选择账户

    4. 账户页面上,选择一个或多个要与管理员账户取消关联的账户。

    5. 选择操作,然后选择取消关联账户

    6. 选择确认以完成该步骤。

  4. 打开 GuardDuty 控制台,网址为 https://console.aws.amazon.com/guardduty/

    若要登录,请使用管理账户凭证。

  5. 在导航窗格中,选择 Settings(设置)。在 “设置” 页面上,为组织指定委派 GuardDuty 管理员帐户。

  6. 登录指定的委派 GuardDuty 管理员账号。

  7. 添加组织中的成员。有关更多信息,请参阅使用管理 GuardDuty 账户 Amazon Organizations

API/CLI
  1. 您要管理的所有账户都 GuardDuty 必须是您的组织的一部分。有关向组织添加账户的信息,请参阅邀请 Amazon Web Services 账户 加入您的组织

  2. 确保所有成员账户都与您想要指定为单一委派 GuardDuty 管理员账户的账户相关联。

    1. 运行DisassociateMembers以取消仍与先前存在的管理员帐户关联的所有成员帐户的关联。

    2. 或者,您可以使用 Amazon Command Line Interface 运行以下命令,将 77777777777 7 替换为要取消与成员帐户关联的先前存在的管理员帐户的检测器 ID。将 666666666666 替换为您要取消关联的成员账户的 Amazon Web Services 账户 ID。

      aws guardduty disassociate-members --detector-id 777777777777 --account-ids 666666666666
  3. 运行EnableOrganizationAdminAccount以委托 GuardDuty 管理员帐户的 Amazon Web Services 账户 身份进行委托。

    或者,您可以使用 Amazon Command Line Interface 运行以下命令来委托委派 GuardDuty 管理员帐户:

    aws guardduty enable-organization-admin-account --admin-account-id 777777777777
  4. 添加组织中的成员。有关更多信息,请参阅Create or add member member accounts using API

重要

为了最大限度地提高区域服务的效率,我们建议您指定您的委托 GuardDuty 管理员账户,并在每个地区添加所有成员账户。 GuardDuty

同时 GuardDuty 在多个账户中启用

使用以下方法同时 GuardDuty 在多个账户中启用。

使用 Python 脚本同时 GuardDuty 在多个账户中启用

您可以使用 Amaz GuardDuty on 多账户脚本中示例存储库中的脚本自动启用或禁用 GuardDuty 多个账户。使用本节中的流程启用 GuardDuty 使用 Amazon EC2 的成员账户列表。有关使用禁用脚本或在本地设置脚本的信息,请参阅共享链接中的说明。

enableguardduty.py脚本启用 GuardDuty、发送来自管理员账户的邀请,并接受所有成员账户中的邀请。结果是一个管理员帐户 GuardDuty 帐户,其中包含所有成员帐户的所有安全调查结果。由于按区域隔离, GuardDuty 因此每个成员账户的搜索结果都会汇总到管理员账户中的相应区域。例如,您的 GuardDuty 管理员账户中的 us-east-1 区域包含来自所有关联成员账户的所有 us-east-1 发现的安全结果。

这些脚本依赖于具有托管策略 Amazon 托管策略:AmazonGuardDutyFullAccess 的共享 IAM 角色。此策略为实体提供访问权限, GuardDuty 并且必须存在于管理员帐户和您要启用的每个帐户中 GuardDuty。

默认情况下,以下过程 GuardDuty 将在所有可用区域中启用。只有使用可选--enabled_regions参数并提供以逗号分隔的区域列表,才能在指定的区域中启用 GuardDuty 。您还可以选择通过打开 enableguardduty.py 并编辑 gd_invite_message 字符串,自定义发送给成员账户的邀请消息。

  1. 在 GuardDuty 管理员账户中创建 IAM 角色并附加要启用的Amazon 托管策略:AmazonGuardDutyFullAccess策略 GuardDuty。

  2. 在您希望由 GuardDuty 管理员账户管理的每个成员账户中创建一个 IAM 角色。此角色必须与步骤 1 中创建的角色同名,它应允许管理员帐户作为可信实体,并且其 AmazonGuardDutyFullAccess 托管策略应与前面描述的相同。

  3. 启动具有附加角色的新的 Amazon Linux 实例,该角色具有允许实例代入服务角色的以下信任关系。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  4. 登录到新实例,然后运行以下命令进行设置。

    sudo yum install git python sudo yum install python-pip pip install boto3 aws configure git clone https://github.com/aws-samples/amazon-guardduty-multiaccount-scripts.git cd amazon-guardduty-multiaccount-scripts sudo chmod +x disableguardduty.py enableguardduty.py
  5. 创建一个 CSV 文件,其中包含您在步骤 2 中将角色添加到的成员账户的账户 ID 和电子邮件的列表。必须每行显示一个账户,账户 ID 和电子邮件地址必须用逗号分隔,如以下示例中所示。

    111122223333,guardduty-member@organization.com
    注意

    CSV 文件必须与 enableguardduty.py 脚本的位置相同。您可以使用以下方法,将现有 CSV 文件从 Amazon S3 复制到当前目录。

    aws s3 cp s3://my-bucket/my_key_name example.csv
  6. 运行 Python 脚本。请务必提供您的 GuardDuty 管理员帐户 ID、在第一步中创建的角色的名称以及 CSV 文件的名称作为参数。

    python enableguardduty.py --master_account 444455556666 --assume_role roleName accountID.csv