

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Detective Python スクリプトを使用してアカウントを管理する
<a name="detective-github-scripts"></a>

Amazon Detective は、GitHub リポジトリで一連のオープンソース Python スクリプトを提供します ([amazon-detective-multiaccount-scripts](https://github.com/aws-samples/amazon-detective-multiaccount-scripts))。スクリプトには Python 3 が必要です。

これらを使用して、次のタスクを実行できます。
+ リージョン全体で管理者アカウントのために Detective を有効にします。

  Detective を有効にすると、動作グラフにタグ値を割り当てることができます。
+ リージョン全体で管理者アカウントの動作グラフにメンバーアカウントを追加します。
+ オプションで、メンバーアカウントに招待メールを送信します。招待メールを送信しないようにリクエストを設定することもできます。
+ リージョン全体で管理者アカウントの動作グラフからメンバーアカウントを削除します。
+ リージョン全体で管理者アカウントのために Detective を無効にします。管理者アカウントが Detective を無効にすると、各リージョンでの管理者アカウントの動作グラフが無効になります。

## `enableDetective.py` スクリプトの概要
<a name="enabledetective-script-overview"></a>

`enableDetective.py` スクリプトは次のことを実行します。

1. 指定された各リージョンで管理者アカウントが Detective をまだ有効にしていない場合は、そのリージョンで管理者アカウントのために Detective を有効にします。

   スクリプトを使用して Detective を有効にすると、動作グラフにタグ値を割り当てることができます。

1. オプションで、各動作グラフについて、管理者アカウントから指定されたメンバーアカウントに招待を送信します。

   招待メールのメッセージはデフォルトのメッセージコンテンツを使用するため、カスタマイズすることはできません。

   招待メールを送信しないようにリクエストを設定することもできます。

1. メンバーアカウントになるための招待を自動的に承諾します。

   スクリプトは自動的に招待を承諾するため、メンバーアカウントはこれらのメッセージを無視できます。

   メンバーアカウントに直接連絡して、招待が自動的に承諾されることを通知することをお勧めします。

## `disableDetective.py` スクリプトの概要
<a name="disabledetective-script-overview"></a>

`disableDetective.py` スクリプトは、指定されたリージョン全体で、管理者アカウントの動作グラフから、指定されたメンバーアカウントを削除します。

また、指定されたリージョン全体で、管理者アカウントのために Detective を無効にするオプションも提供します。

## スクリプトに必要な許可
<a name="github-scripts-permissions"></a>

スクリプトには、管理者アカウントと、追加または削除したすべてのメンバーアカウントに既存の AWS ロールが必要です。

**注記**  
ロール名は、すべてのアカウントで同じである必要があります。

IAM [ポリシーについて推奨されているベストプラクティス](https://docs.aws.amazon.com/detective/latest/userguide/security_iam_id-based-policy-examples.html#security_iam_service-with-iam-policy-best-practices)は、適用範囲を最も絞り込んだロールを使用することです。[グラフの作成](https://docs.aws.amazon.com/detective/latest/APIReference/API_CreateGraph.html)、[メンバーの作成](https://docs.aws.amazon.com/detective/latest/APIReference/API_CreateMembers.html)、[グラフへのメンバーの追加](https://docs.aws.amazon.com/detective/latest/APIReference/API_AcceptInvitation.html)というスクリプトワークフローを実行するために必要なアクセス許可は、次のとおりです。
+ detective:CreateGraph
+ detective:CreateMembers
+ detective:DeleteGraph
+ detective:DeleteMembers
+ detective:ListGraphs
+ detective:ListMembers
+ detective:AcceptInvitation

**ロールの信頼関係**

ロールの信頼関係は、インスタンスまたはローカルの認証情報がロールを引き受けることを許可する必要があります。

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

****  

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

------

必要な許可が付与されている共通のロールがない場合、少なくともそれらの許可が付与されているロールを各メンバーアカウントに作成する必要があります。管理者アカウントでもロールを作成する必要があります。

ロールを作成する場合は、必ず次を実行してください。
+ すべてのアカウントで同じロール名を使用します。
+ 上記の必要なアクセス許可を追加する (推奨) か、[AmazonDetectiveFullAccess](https://docs.aws.amazon.com/detective/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-amazondetectivefullaccess) マネージドポリシーを選択します。
+ 前述のようにロールの信頼関係ブロックを追加します。

このプロセスを自動化するには、 `EnableDetective.yaml` CloudFormation テンプレートを使用できます。テンプレートはグローバルリソースのみを作成するため、どのリージョンでも実行できます。

## Python スクリプトの実行環境の設定
<a name="github-script-setup"></a>

スクリプトは EC2 インスタンスまたはローカルマシンのいずれかから実行できます。

### EC2 インスタンスの起動と設定
<a name="github-setup-ec2-instance"></a>

スクリプトを実行するための 1 つのオプションは、EC2 インスタンスからスクリプトを実行することです。

**EC2 インスタンスを起動して設定するには**

1. 管理者アカウントで EC2 インスタンスを起動します。EC2 インスタンスの起動方法の詳細については、[Amazon EC2 ユーザーガイド」の「Amazon EC2 Linux インスタンスの開始方法](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)」を参照してください。 *Amazon EC2 *

1. インスタンスが管理者アカウント内で `AssumeRole` を呼び出せるようにするための許可が付与されている IAM ロールをインスタンスにアタッチします。

   `EnableDetective.yaml` CloudFormation テンプレートを使用した場合、 という名前のプロファイルを持つインスタンスロールが作成され`EnableDetective`ました。

   それ以外の場合、インスタンスロールの作成については、ブログ投稿の [Easily Replace or Attach an IAM Role to an Existing EC2 Instance by Using the EC2 Console](https://aws.amazon.com/blogs//security/easily-replace-or-attach-an-iam-role-to-an-existing-ec2-instance-by-using-the-ec2-console/) を参照してください。

1. 必要なソフトウェアをインストールします。
   + **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`

1. リポジトリのクローンを EC2 インスタンスに作成します。

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

### スクリプトを実行するためのローカルマシンの設定
<a name="github-setup-local-machine"></a>

スクリプトはローカルマシンからも実行できます。

**スクリプトを実行するようにローカルマシンを設定するには**

1. `AssumeRole` を呼び出す許可を持つ管理者アカウントについて、ローカルマシンの認証情報を設定していることを確認してください。

1. 必要なソフトウェアをインストールします。
   + Python 3
   + Boto (最小バージョン 1.15)
   + GitHub スクリプト    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/detective/latest/userguide/detective-github-scripts.html)

## 追加または削除するメンバーアカウントの `.csv` リストの作成
<a name="github-scripts-csv-file"></a>

動作グラフに追加したり、動作グラフから削除したりするメンバーアカウントを特定するには、アカウントのリストを含む `.csv` ファイルを提供します。

各アカウントを別々の行に一覧表示します。各メンバーアカウントエントリには、 AWS アカウント ID とアカウントのルートユーザーの E メールアドレスが含まれます。

次の例を参照してください。

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

## `enableDetective.py` の実行
<a name="github-scripts-execute-enabledetective"></a>

`enableDetective.py` スクリプトは、EC2 インスタンスまたはローカルマシンから実行できます。

**Mac で `enableDetective.py`**

1. `.csv` ファイルを EC2 インスタンスまたはローカルマシンの `amazon-detective-multiaccount-scripts` ディレクトリにコピーします。

1. `amazon-detective-multiaccount-scripts` ディレクトリを変更します。

1. `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` の実行
<a name="github-scripts-execute-disabledetective"></a>

`disableDetective.py` スクリプトは、EC2 インスタンスまたはローカルマシンから実行できます。

**Mac で `disableDetective.py`**

1. `.csv` ファイルを `amazon-detective-multiaccount-scripts` ディレクトリへコピーします。

1. この `.csv` ファイルを使用して、指定されたリージョンのリスト全体で、管理者アカウントの動作グラフからリストされたメンバーアカウントを削除するには、次のように `disableDetective.py` スクリプトを実行します。

   ```
   disabledetective.py --master_account {{administratorAccountID}} --assume_role {{roleName}} --input_file {{inputFileName}} --disabled_regions {{regionList}}
   ```

1. すべてのリージョンで管理者アカウントのために 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 がサポートするすべてのリージョンで機能します。