

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

# IAM 정책 및 사용자 생성
<a name="tutorial-stock-data-kplkcl2-iam"></a>

보안 모범 사례에 AWS 따라 세분화된 권한을 사용하여 다양한 리소스에 대한 액세스를 제어해야 합니다. AWS Identity and Access Management (IAM)을 사용하면에서 사용자 및 사용자 권한을 관리할 수 있습니다 AWS. [IAM 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html)에는 허용된 작업과 작업이 적용되는 리소스가 명시적으로 나열됩니다.

다음은 Kinesis Data Streams 생산자 및 소비자에 대해 일반적으로 필요한 최소 권한입니다.


**생산자**  

| 작업 | Resource | 용도 | 
| --- | --- | --- | 
| DescribeStream, DescribeStreamSummary, DescribeStreamConsumer | Kinesis 데이터 스트림 | 레코드를 읽으려고 하기 전에 소비자는 데이터 스트림이 존재하는지, 데이터 스트림이 활성 상태인지, 샤드가 데이터 스트림에 포함되어 있는지를 확인합니다. | 
| SubscribeToShard, RegisterStreamConsumer | Kinesis 데이터 스트림 | 소비자를 구독하고 샤드에 등록합니다. | 
| PutRecord, PutRecords | Kinesis 데이터 스트림 | Kinesis Data Streams에 레코드를 씁니다. | 


**소비자**  

| **작업** | **리소스** | **용도** | 
| --- | --- | --- | 
| DescribeStream | Kinesis 데이터 스트림 | 레코드를 읽으려고 하기 전에 소비자는 데이터 스트림이 존재하는지, 데이터 스트림이 활성 상태인지, 샤드가 데이터 스트림에 포함되어 있는지를 확인합니다. | 
| GetRecords, GetShardIterator  | Kinesis 데이터 스트림 | 샤드에서 레코드를 읽습니다. | 
| CreateTable, DescribeTable, GetItem, PutItem, Scan, UpdateItem | Amazon DynamoDB 테이블 | Kinesis Client Library(KCL)(버전 1.x 또는 2.x)를 사용하여 소비자를 개발하는 경우, 애플리케이션의 처리 상태를 추적하려면 DynamoDB 테이블에 대한 권한이 필요합니다. | 
| DeleteItem | Amazon DynamoDB 테이블 | 소비자가 Kinesis Data Streams 샤드에서 분할/병합 작업을 수행하는 경우에 사용됩니다. | 
| PutMetricData | Amazon CloudWatch 로그 | 또한 KCL은 애플리케이션을 모니터링하는 데 유용한 지표를 CloudWatch에 업로드합니다. | 

이 자습서에서는 위의 모든 권한을 부여하는 단일 IAM 정책을 생성합니다.구현에 사용되므로 프로덕션 환경에서는 생산자와 소비자에 대해 각각 하나씩 정책을 두 개 만들 수 있습니다.

**IAM 정책을 만들려면**

1. 위 단계에서 생성한 새 데이터 스트림의 Amazon 리소스 이름(ARN)을 찾습니다. **세부 정보** 탭 상단에 **스트림 ARN**으로 나열된 이 ARN을 찾을 수 있습니다. ARN 형식은 다음과 같습니다.

   ```
   arn:aws:kinesis:region:account:stream/name
   ```  
*리전*  
 AWS 리전 코드. 예: `us-west-2`. 자세한 내용은 [리전 및 가용 영역 개념](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-regions-availability-zones)을 참조하십시오.  
*계정*  
 AWS 계정 [설정에](https://console.aws.amazon.com/billing/home?#/account) 표시된 계정 ID입니다.  
*이름*  
위 단계에서 생성한 데이터 스트림의 이름입니다(`StockTradeStream`).

1. 소비자가 사용할 DynamoDB 테이블의 ARN을 결정합니다(첫 번째 소비자 인스턴스에서 생성됨). 형식은 다음과 같아야 합니다.

   ```
   arn:aws:dynamodb:region:account:table/name
   ```

   리전 및 계정 ID는 이 자습서에서 사용하는 데이터 스트림의 ARN에 있는 값과 동일하지만, **이름은 소비자 애플리케이션에서 생성하고 사용하는 DynamoDB 테이블의 이름입니다. KCL은 애플리케이션 이름을 테이블 이름으로 사용합니다. 이 단계에서는 DynamoDB 테이블 이름에 `StockTradesProcessor`를 사용합니다. 이 이름은 이 자습서의 이후 단계에서 사용되는 애플리케이션 이름이기 때문입니다.

1. IAM 콘솔의 **정책**([https://console.aws.amazon.com/iam/home\$1policies](https://console.aws.amazon.com/iam/home#policies))에서 **정책 생성**을 선택합니다. IAM 정책을 사용한 첫 번째 작업인 경우 **시작하기**, **정책 생성**을 선택합니다.

1. **정책 생성기** 옆의 **선택**을 선택합니다.

1. **Amazon Kinesis**를 AWS 서비스로 선택합니다.

1. `DescribeStream`, `GetShardIterator`, `GetRecords`, `PutRecord` 및 `PutRecords`를 허용된 작업으로 선택합니다.

1. 이 자습서에서 사용하는 데이터 스트림의 ARN을 입력합니다.

1. 다음의 각각에 대해 **Add Statement(문 추가)**를 사용합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/streams/latest/dev/tutorial-stock-data-kplkcl2-iam.html)

   별표(`*`)는 ARN이 필요하지 않다고 지정할 때 사용됩니다. 이 경우에는 `PutMetricData` 작업이 간접적으로 호출된 CloudWatch에서 특정 리소스가 없기 때문입니다.

1. **다음 단계**를 선택합니다.

1. **Policy Name(정책 이름)**을 `StockTradeStreamPolicy`로 변경하고, 코드를 검토한 다음 **Create Policy(정책 생성)**를 선택합니다.

결과 정책 문서는 다음과 같아야 합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt123",
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords",
                "kinesis:GetShardIterator",
                "kinesis:GetRecords",
                "kinesis:ListShards",
                "kinesis:DescribeStreamSummary",
                "kinesis:RegisterStreamConsumer"
            ],
            "Resource": [
                "arn:aws:kinesis:us-west-2:111122223333:stream/StockTradeStream"
            ]
        },
        {
            "Sid": "Stmt234",
            "Effect": "Allow",
            "Action": [
                "kinesis:SubscribeToShard",
                "kinesis:DescribeStreamConsumer"
            ],
            "Resource": [
                "arn:aws:kinesis:us-west-2:111122223333:stream/StockTradeStream/*"
            ]
        },
        {
            "Sid": "Stmt456",
            "Effect": "Allow",
            "Action": [
                "dynamodb:*"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:111122223333:table/StockTradesProcessor"
            ]
        },
        {
            "Sid": "Stmt789",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

**IAM 사용자 생성**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. **사용자** 페이지에서 **사용자 추가**를 선택합니다.

1. **사용자 이름**에 `StockTradeStreamUser`을 입력합니다.

1. **Access type(액세스 유형)**에서 **Programmatic access(프로그래밍 방식 액세스)**를 선택한 다음 **Next: Permissions(다음: 권한)**를 선택합니다.

1. **기존 정책 직접 첨부**를 선택합니다.

1. 위의 절차에서 만든 정책을 이름으로 검색합니다(`StockTradeStreamPolicy`). 정책 이름 왼쪽에 있는 확인란을 선택하고 **Next: Review(다음: 검코)**를 선택합니다.

1. 세부 정보와 요약을 검토하고 **Create user(사용자 생성)**를 선택합니다.

1. **Access key ID(액세스 키 ID)**를 복사하고 비공개로 저장합니다. **Secret access key(보안 액세스 키)**에서 **Show(표시)**를 선택하고 키도 비공개로 저장합니다.

1. 액세스 및 보안 키를 사용자만 액세스할 수 있는 안전한 위치에 있는 로컬 파일에 붙여넣습니다. 이 애플리케이션의 경우 ` ~/.aws/credentials`라는 파일 이름을 생성합니다(엄격한 권한 포함). 파일은 다음 형식이어야 합니다.

   ```
   [default]
   aws_access_key_id=access key
   aws_secret_access_key=secret access key
   ```

**사용자에게 IAM 정책 연결**

1. IAM 콘솔에서 [정책](https://console.aws.amazon.com/iam/home?#policies)을 열고 **정책 작업**을 선택합니다.

1. `StockTradeStreamPolicy` 및 **Attach(연결)**를 선택합니다.

1. `StockTradeStreamUser` 및 **Attach Policy(정책 연결)**를 선택합니다.

## 다음 단계
<a name="tutorial-stock-data-kplkcl2-iam-next"></a>

[코드 다운로드 및 빌드](tutorial-stock-data-kplkcl2-download.md)