

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Detective Python 스크립트를 사용하여 계정 관리
<a name="detective-github-scripts"></a>

Amazon Detective는 GitHub 리포지토리 [amazon-detective-multiaccount-scripts](https://github.com/aws-samples/amazon-detective-multiaccount-scripts)에서 오픈 소스 Python 스크립트 세트를 제공합니다. 스크립트에는 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>

스크립트를 실행하는 한 가지 옵션은 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`되었습니다.

   또는 인스턴스 역할 생성에 대한 자세한 내용은 [EC2 콘솔을 사용하여 기존 EC2 인스턴스에 IAM 역할을 쉽게 교체 또는 연결](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/ko_kr/detective/latest/userguide/detective-github-scripts.html)

## 추가 또는 제거할 멤버 계정 `.csv` 목록 생성
<a name="github-scripts-csv-file"></a>

동작 그래프에 추가하거나 동작 그래프에서 제거할 멤버 계정을 식별하려면 계정 목록이 포함된 `.csv` 파일을 제공합니다.

각 계정을 별도의 줄에 나열합니다. 각 멤버 계정 항목에는 AWS 계정 ID와 계정의 루트 사용자 이메일 주소가 포함됩니다.

다음 예를 참조하세요.

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

## `enableDetective.py` 실행
<a name="github-scripts-execute-enabledetective"></a>

EC2 인스턴스 또는 로컬 시스템에서 `enableDetective.py` 스크립트를 실행할 수 있습니다.

**`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>

EC2 인스턴스 또는 로컬 시스템에서 `disableDetective.py` 스크립트를 실행할 수 있습니다.

**`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가 지원하는 모든 리전에서 작동합니다.