기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
2단계: IAM 정책 및 사용자 생성
보안 모범 사례에서는 세분화된 권한을 사용하여 다양한 리소스에 대한 액세스를 제어하도록 AWS 지시합니다. AWS Identity and Access Management (IAM) 를 사용하면 에서 사용자 및 사용자 권한을 관리할 수 있습니다. AWSIAM정책에는 허용되는 작업과 해당 작업이 적용되는 리소스가 명시적으로 나열됩니다.
다음은 Kinesis Data Streams 생산자 및 소비자에 대해 일반적으로 필요한 최소 권한입니다.
생산자 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
작업 | Resource | 용도 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DescribeStream , DescribeStreamSummary ,
DescribeStreamConsumer |
Kinesis 데이터 스트림 | 레코드를 쓰려고 시도하기 전에 생산자는 스트림이 존재하고 활성 상태인지 여부, 샤드가 스트림에 포함되어 있는지 여부, 그리고 스트림에 소비자가 있는지 여부를 확인합니다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SubscribeToShard ,
RegisterStreamConsumer |
Kinesis 데이터 스트림 | Kinesis 데이터 스트림 샤드에 소비자를 구독 및 등록합니다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PutRecord , PutRecords |
Kinesis 데이터 스트림 | 레코드를 Kinesis Data Streams에 씁니다. |
소비자 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
작업 | 리소스 | 용도 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DescribeStream |
Kinesis 데이터 스트림 | 레코드를 읽으려고 시도하기 전에 소비자는 스트림이 존재하는지 및 활성 상태인지 여부와 샤드가 스트림에 포함되어 있는지 여부를 확인합니다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GetRecords , GetShardIterator
|
Kinesis 데이터 스트림 | Kinesis Data Streams 샤드에서 레코드를 읽습니다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CreateTable , DescribeTable ,
GetItem , PutItem , Scan ,
UpdateItem |
Amazon DynamoDB 테이블 | Kinesis Client Library (KCL) 를 사용하여 소비자를 개발한 경우 애플리케이션의 처리 상태를 추적하려면 DynamoDB 테이블에 대한 권한이 필요합니다. 시작된 첫 번째 소비자가 테이블을 생성합니다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeleteItem |
Amazon DynamoDB 테이블 | 소비자가 Kinesis Data Streams 샤드에서 분할/병합 작업을 수행하는 경우에 사용됩니다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PutMetricData |
아마존 CloudWatch 로그 | KCL또한 메트릭을 CloudWatch 업로드하므로 애플리케이션을 모니터링하는 데 유용합니다. |
이 애플리케이션의 경우 위의 모든 권한을 부여하는 단일 IAM 정책을 생성합니다. 실제로 생산자에 대한 정책 하나와 소비자에 대한 정책 하나 등 정책 두 개의 생성을 고려해야 할 수 있습니다.
IAM 정책 생성
-
새 스트림의 Amazon 리소스 이름 (ARN) 을 찾습니다. 세부 정보 탭 ARN 상단에 스트림으로 ARN 나열되어 있습니다. ARN형식은 다음과 같습니다.
arn:aws:kinesis:
region
:account
:stream/name
- region
-
리전 코드입니다(예:
us-west-2
). 자세한 내용은 리전 및 가용 영역 개념을 참조하십시오. - account
-
AWS 계정 설정에 표시된 계정
ID. - name
-
1단계: 데이터 스트림 생성의 스트림 이름입니다. 이 경우
StockTradeStream
입니다.
-
소비자가 사용하고 첫 번째 소비자 인스턴스에서 생성할 DynamoDB 테이블을 결정합니다. ARN 형식은 다음과 같아야 합니다.
arn:aws:dynamodb:
region
:account
:table/name
리전과 계정은 이전 단계와 동일한 위치에서 가져오지만 이때 이름은 소비자 애플리케이션에서 생성되고 사용되는 테이블의 이름입니다. 소비자가 사용하는 것은 애플리케이션 이름을 테이블 이름으로 사용합니다. KCL 나중에 사용되는 애플리케이션 이름인
StockTradesProcessor
를 사용합니다. -
IAM콘솔의 정책 (https://console.aws.amazon.com/iam/홈 #policies
) 에서 정책 생성을 선택합니다. 정책 작업을 처음 해보는 경우 시작하기, IAM 정책 생성을 선택합니다. -
정책 생성기 옆의 선택을 선택합니다.
-
Amazon Kinesis를 AWS 서비스로 선택하십시오.
-
DescribeStream
,GetShardIterator
,GetRecords
,PutRecord
및PutRecords
를 허용된 작업으로 선택합니다. -
1단계에서 생성한 ARN 것을 입력합니다.
-
다음의 각각에 대해 Add Statement(문 추가)를 사용합니다.
AWS 서비스 작업 ARN Amazon DynamoDB CreateTable
,DeleteItem
,DescribeTable
,GetItem
,PutItem
,Scan
,UpdateItem
2단계에서 ARN 생성한 아마존 CloudWatch PutMetricData
*
를 지정할 때 사용되는 별표 (
*
) 는 필수가 아닙니다. ARN 이 경우PutMetricData
액션이 호출되는 특정 리소스가 없기 때문입니다. CloudWatch -
다음 단계를 선택합니다.
-
Policy Name(정책 이름)을
StockTradeStreamPolicy
로 변경하고, 코드를 검토한 다음 Create Policy(정책 생성)를 선택합니다.
이를 통해 생성된 정책 문서는 다음과 같아야 합니다.
{
"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:123:stream/StockTradeStream"
]
},
{
"Sid": "Stmt234",
"Effect": "Allow",
"Action": [
"kinesis:SubscribeToShard",
"kinesis:DescribeStreamConsumer"
],
"Resource": [
"arn:aws:kinesis:us-west-2:123:stream/StockTradeStream/*"
]
},
{
"Sid": "Stmt456",
"Effect": "Allow",
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:us-west-2:123:table/StockTradesProcessor"
]
},
{
"Sid": "Stmt789",
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData"
],
"Resource": [
"*"
]
}
]
}
IAM 사용자를 생성하려면
에서 IAM https://console.aws.amazon.com/iam/
콘솔을 여십시오. -
사용자 페이지에서 사용자 추가를 선택합니다.
-
사용자 이름에
StockTradeStreamUser
을 입력합니다. -
Access type(액세스 유형)에서 Programmatic access(프로그래밍 방식 액세스)를 선택한 다음 Next: Permissions(다음: 권한)를 선택합니다.
-
기존 정책 직접 첨부를 선택합니다.
-
생성한 정책의 이름으로 검색합니다. 정책 이름 왼쪽에 있는 확인란을 선택하고 Next: Review(다음: 검코)를 선택합니다.
-
세부 정보와 요약을 검토하고 Create user(사용자 생성)를 선택합니다.
-
Access key ID(액세스 키 ID)를 복사하고 비공개로 저장합니다. Secret access key(보안 액세스 키)에서 Show(표시)를 선택하고 키도 비공개로 저장합니다.
-
액세스 및 보안 키를 사용자만 액세스할 수 있는 안전한 위치에 있는 로컬 파일에 붙여넣습니다. 이 애플리케이션의 경우
~/.aws/credentials
라는 파일 이름을 생성합니다(엄격한 권한 포함). 파일은 다음 형식이어야 합니다.[default] aws_access_key_id=
access key
aws_secret_access_key=secret access key
IAM정책을 사용자에게 연결하려면
-
IAM콘솔에서 정책을
열고 정책 작업을 선택합니다. -
StockTradeStreamPolicy
및 Attach(연결)를 선택합니다. -
StockTradeStreamUser
및 Attach Policy(정책 연결)를 선택합니다.