使用 Python Detective 腳本管理帳戶 - Amazon Detective

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

使用 Python Detective 腳本管理帳戶

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

角色信任關係

角色信任關係必須允許您的執行個體或本機憑證擔任該角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<ACCOUNTID>:user/<USERNAME>" }, "Action": "sts:AssumeRole" } ] }

如果您沒有包含必要許可的共同角色,則必須在每個成員帳戶中建立至少具有此類許可的角色。您還需在管理員帳戶中建立角色。

在您建立角色後,請確認執行以下操作:

  • 在每個帳戶中使用相同的角色名稱。

  • 在上方新增必要的權限 (建議使用),或選取AmazonDetectiveFullAccess受管理的原則。

  • 如上所述,新增角色信任關係區塊。

若要自動化此程序,您可以使用EnableDetective.yaml AWS CloudFormation 範本。由於範本只會建立全域資源,因此可以在任何區域中執行。

為 Python 指令碼設置執行環境

您可以從執行個EC2體或本機電腦執行指令碼。

啟動和設定EC2執行個體

執行指令碼的一個選項是從執行個EC2體執行它們。

啟動和設定EC2執行個體
  1. 在您的管理員帳戶中啟動EC2執行個體。有關如何啟動EC2執行個體的詳細資訊,請參閱 Amazon EC2使用者指南中的開始使用 Amazon EC2 Linux 執行個體。

  2. 將具有允許執行個體在系統管理員帳戶AssumeRole中呼叫之權限的IAM角色附加至執行個體。

    如果您使用EnableDetective.yaml AWS CloudFormation 範本,則會建立具有名為EnableDetective設定檔的執行個體角色。

    否則,如需建立執行個體角色的相關資訊,請參閱部落格文章使用EC2主控台輕鬆取代或附加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.py即. 組織/下載/視窗/).

    2. 開啟命令提示。

    3. 若要安裝 Boto,請執行:pip install boto3

    4. 從 GitHub (https://github.com/aws-samples/amazon-detective-multiaccount-scripts) 下載指令碼原始程式碼。

    Mac

    1. 安裝 Python 3 (https://www.py即. 組織/下載/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

您可以從enableDetective.py執行個EC2體或本機電腦執行指令碼。

請執行 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

您可以從disableDetective.py執行個EC2體或本機電腦執行指令碼。

請執行 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 支援的所有區域中運作。