기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
IAM 정책 및 사용자 생성
AWS의 보안 모범 사례에 따르면 다양한 리소스에 대한 액세스를 제어하기 위해 세부적인 권한을 사용해야 합니다. AWS Identity and Access Management (IAM)를 사용하면 AWS에서 사용자와 사용자 권한을 관리할 수 있습니다. IAM 정책에는 허용된 작업과 작업이 적용되는 리소스가 명시적으로 나열됩니다.
다음은 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 정책을 만들려면
-
위 단계에서 생성한 새 데이터 스트림의 Amazon 리소스 이름(ARN)을 찾습니다. 세부 정보 탭 상단에 스트림 ARN으로 나열된 이 ARN을 찾을 수 있습니다. ARN 형식은 다음과 같습니다.
arn:aws:kinesis:
region
:account
:stream/name
- region
-
AWS 리전 코드입니다(예:
us-west-2
). 자세한 내용은 리전 및 가용 영역 개념을 참조하십시오. - account
-
계정 설정
에 표시된 대로 AWS 계정 ID입니다. - name
-
위 단계에서 생성한 데이터 스트림의 이름입니다(
StockTradeStream
).
-
소비자가 사용할 DynamoDB 테이블의 ARN을 결정합니다(첫 번째 소비자 인스턴스에서 생성됨). 형식은 다음과 같아야 합니다.
arn:aws:dynamodb:
region
:account
:table/name
리전 및 계정 ID는 이 자습서에서 사용하는 데이터 스트림의 ARN에 있는 값과 동일하지만, 이름은 소비자 애플리케이션에서 생성하고 사용하는 DynamoDB 테이블의 이름입니다. KCL은 애플리케이션 이름을 테이블 이름으로 사용합니다. 이 단계에서는 DynamoDB 테이블 이름에
StockTradesProcessor
를 사용합니다. 이 이름은 이 자습서의 이후 단계에서 사용되는 애플리케이션 이름이기 때문입니다. -
IAM 콘솔의 정책(https://console.aws.amazon.com/iam/home#policies
)에서 정책 생성을 선택합니다. IAM 정책을 사용한 첫 번째 작업인 경우 시작하기, 정책 생성을 선택합니다. -
정책 생성기 옆의 선택을 선택합니다.
-
Amazon Kinesis를 AWS 서비스로 선택합니다.
-
DescribeStream
,GetShardIterator
,GetRecords
,PutRecord
및PutRecords
를 허용된 작업으로 선택합니다. -
이 자습서에서 사용하는 데이터 스트림의 ARN을 입력합니다.
-
다음의 각각에 대해 Add Statement(문 추가)를 사용합니다.
AWS 서비스 작업 ARN Amazon DynamoDB CreateTable
,DeleteItem
,DescribeTable
,GetItem
,PutItem
,Scan
,UpdateItem
이 절차의 2단계에서 생성한 DynamoDB 테이블의 ARN입니다. Amazon 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 사용자 생성
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
사용자 페이지에서 사용자 추가를 선택합니다.
-
사용자 이름에
StockTradeStreamUser
을 입력합니다. -
Access type(액세스 유형)에서 Programmatic access(프로그래밍 방식 액세스)를 선택한 다음 Next: Permissions(다음: 권한)를 선택합니다.
-
기존 정책 직접 첨부를 선택합니다.
-
위의 절차에서 만든 정책을 이름으로 검색합니다(
StockTradeStreamPolicy
). 정책 이름 왼쪽에 있는 확인란을 선택하고 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(정책 연결)를 선택합니다.