使用 Detective Python 脚本管理账户 - Amazon Detective

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

使用 Detective Python 脚本管理账户

Amazon Detective 在 GitHub 存储库中提供了一组开源 Python 脚本amazon-detective-multiaccount-scripts。这些脚本需要 Python 3。

您可以使用它们执行以下任务:

  • 启用跨区域的管理员账户 Detective。

    启用 Detective 后,您就可以向行为图分配标签值。

  • 在跨区域中,将成员账户添加到管理员账户的行为图中。

  • 可选择向成员账号发送邀请电子邮件。您还可以将请求配置为不发送邀请电子邮件。

  • 在跨区域中,从管理员账户的行为图中删除成员账户。

  • 禁用跨区域的管理员账户 Detective。当管理员账户禁用 Detective 时,每个区域中管理员账户的行为图都会被禁用。

enableDetective.py 脚本概述

enableDetective.py 脚本执行以下操作:

  1. 在每个指定区域为管理员账户启用 Detective,前提是该管理员账户尚未在该区域启用 Detective。

    使用脚本启用 Detective 后,您就可以向行为图分配标签值。

  2. 可选择从管理员账户向每个行为图的指定成员账户发送邀请。

    邀请电子邮件消息使用默认消息内容,无法自定义。

    您还可以将请求配置为不发送邀请电子邮件。

  3. 自动接受成员账户的邀请。

    由于脚本会自动接受邀请,因此成员账户可以忽略这些消息。

    我们建议直接联系成员账户,通知他们自动接受邀请。

disableDetective.py 脚本概述

disableDetective.py 脚本会删除指定区域内管理员账户行为图中的指定成员账户。

此外,还提供了在指定区域内禁用管理员账户 Detective 的选项。

脚本所需的权限

这些脚本需要管理员帐户以及您添加或删除的所有成员帐户中预先存在的 AWS 角色。

注意

所有账户中的角色名称必须相同。

IAM 策略推荐的最佳做法是使用范围最小的角色。要执行脚本中创建图表创建成员向图中添加成员的工作流程,所需的权限是:

  • 侦探:CreateGraph

  • 侦探:CreateMembers

  • 侦探:DeleteGraph

  • 侦探:DeleteMembers

  • 侦探:ListGraphs

  • 侦探:ListMembers

  • 侦探:AcceptInvitation

角色信任关系

角色信任关系必须允许实例或本地凭证代入该角色。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/john_doe" }, "Action": "sts:AssumeRole" } ] }

如果您没有包含所需权限的通用角色,则必须在每个成员账户中创建一个至少具有这些权限的角色。您还必须在管理员账户中创建角色。

创建角色时,请确保执行以下操作:

  • 在每个账户中使用相同的角色名称。

  • 在上面添加所需的权限(推荐)或选择AmazonDetectiveFullAccess托管策略。

  • 如上所述,添加角色信任关系模块。

要自动执行此过程,您可以使用EnableDetective.yaml AWS CloudFormation 模板。由于该模板只创建全局资源,因此可以在任何区域运行。

为 Python 脚本设置运行环境

您可以从 EC2 实例或本地计算机运行脚本。

启动和配置实 EC2 例

运行脚本的一种选择是从 EC2 实例运行脚本。

启动和配置 EC2 实例
  1. 使用您的管理员账户启动 EC2 实例。有关如何启动 EC2实例的详细信息,请参阅亚马逊 EC2 用户指南中的 Amazon EC2 Linux 实例入门

  2. 为实例附加一个 IAM 角色,该角色拥有允许实例在管理员账户内调用 AssumeRole 的权限。

    如果您使用该EnableDetective.yaml AWS CloudFormation 模板,则会创建配置文件名EnableDetective为的实例角色。

    否则,有关创建实例角色的信息,请参阅博客文章 “使用 EC2控制台轻松替换 IAM 角色或将 IAM 角色附加到现有 EC2 实例”

  3. 安装所需的软件:

    • APT:sudo apt-get -y install python3-pip python3 git

    • RPM:sudo yum -y install python3-pip python3 git

    • Boto(最低版本 1.15):sudo pip install boto3

  4. 将存储库克隆到 EC2 实例。

    git clone https://github.com/aws-samples/amazon-detective-multiaccount-scripts.git

配置本地计算机来运行脚本

您也可以在本地计算机上运行脚本。

要配置本地计算机来运行脚本
  1. 确保已在本地计算机上设置了管理员账户凭证,该凭证具有调用 AssumeRole 的权限。

  2. 安装所需的软件:

    • Python 3

    • Boto(最低版本 1.15)

    • GitHub 脚本

    平台

    安装说明

    Windows

    1. 安装 Python 3 (https://www.python. org/downloads/windows/)。

    2. 打开命令提示符。

    3. 要安装 Boto,请运行:pip install boto3

    4. 从 GitHub (https://github.com/aws-samples/amazon-detective-multiaccount-scripts) 下载脚本源代码。

    Mac

    1. 安装 Python 3 (https://www.python. org/downloads/mac-osx/)。

    2. 打开命令提示符。

    3. 要安装 Boto,请运行:pip install boto3

    4. 从 GitHub (https://github.com/aws-samples/amazon-detective-multiaccount-scripts) 下载脚本源代码。

    Linux

    1. 要安装 Python 3,请运行以下命令之一:

      • sudo apt-get -y install install python3-pip python3 git

      • sudo yum install git python

    2. 要安装 Boto,请运行:sudo pip install boto3

    3. 从中克隆脚本源代码https://github.com/aws-samples/amazon-detective-multiaccount-scripts

创建要添加或删除的 .csv 成员账户列表

为确定要添加到行为图或从行为图中删除的成员账户,您需要提供一个包含账户列表的 .csv 文件。

将每个账户单独列一行。每个成员账户条目都包含 AWS 账户 ID 和账户的 root 用户电子邮件地址。

请参见以下示例:

111122223333,srodriguez@example.com 444455556666,rroe@example.com

运行 enableDetective.py

您可以从 EC2 实例或本地计算机运行enableDetective.py脚本。

运行 enableDetective.py
  1. .csv文件复制到您的 EC2 实例或本地计算机上的amazon-detective-multiaccount-scripts目录中。

  2. 切换到 amazon-detective-multiaccount-scripts 目录。

  3. 运行 enableDetective.py 脚本。

    enableDetective.py --master_account administratorAccountID --assume_role roleName --input_file inputFileName --tags tagValueList --enabled_regions regionList --disable_email

运行脚本时,请替换以下值:

administratorAccountID

管理员 AWS 账户的账户 ID。

roleName

要在管理员账户和每个成员账户中 AWS 扮演的角色的名称。

inputFileName

包含要添加到管理员账户行为图的成员账户列表的 .csv 文件的名称。

tagValueList

(可选)以逗号分隔的标签值列表,用于为新行为图分配标签值。

每个标签值的格式为 key=value。例如:

--tags Department=Finance,Geo=Americas
regionList

(可选)以逗号分隔的区域列表,用于将成员账户添加到管理员账户的行为图中。例如:

--enabled_regions us-east-1,us-east-2,us-west-2

管理员账户可能尚未在某个区域中启用 Detective。在这种情况下,该脚本会启用 Detective 并为管理员账户创建新的行为图。

如果您未提供区域列表,则该脚本将在 Detective 支持的所有区域内运行。

--disable_email

(可选)如果包含,Detective 不会向成员账户发送邀请电子邮件。

运行 disableDetective.py

您可以从 EC2 实例或本地计算机运行disableDetective.py脚本。

运行 disableDetective.py
  1. .csv 文件复制到 amazon-detective-multiaccount-scripts 目录。

  2. 要使用 .csv 文件删除指定区域列表中管理员账户行为图中列出的成员账户,请按以下步骤运行 disableDetective.py 脚本:

    disabledetective.py --master_account administratorAccountID --assume_role roleName --input_file inputFileName --disabled_regions regionList
  3. 要在所有区域禁用管理员账户的 Detective,请运行带有 --delete-master 标志的 disableDetective.py 脚本。

    disabledetective.py --master_account administratorAccountID --assume_role roleName --input_file inputFileName --disabled_regions regionList --delete_master

运行脚本时,请替换以下值:

administratorAccountID

管理员 AWS 账户的账户 ID。

roleName

要在管理员账户和每个成员账户中 AWS 扮演的角色的名称。

inputFileName

包含要从管理员账户行为图中删除的成员账户列表的 .csv 文件的名称。

即使禁用了 Detective,您也必须提供 .csv 文件。

regionList

(可选)以逗号分隔的区域列表,用于执行以下操作之一:

  • 从管理员账户的行为图中删除成员账户。

  • 如果包含 --delete-master 标志,请禁用 Detective。

例如:

--disabled_regions us-east-1,us-east-2,us-west-2

如果您未提供区域列表,则该脚本将在 Detective 支持的所有区域内运行。