IAM 정책 및 사용자 생성 - Amazon Kinesis Data Streams

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

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 정책을 만들려면
  1. 위 단계에서 생성한 새 데이터 스트림의 Amazon 리소스 이름(ARN)을 찾습니다. 세부 정보 탭 상단에 스트림 ARN으로 나열된 이 ARN을 찾을 수 있습니다. ARN 형식은 다음과 같습니다.

    arn:aws:kinesis:region:account:stream/name
    region

    AWS 리전 코드입니다(예: us-west-2). 자세한 내용은 리전 및 가용 영역 개념을 참조하십시오.

    account

    계정 설정에 표시된 대로 AWS 계정 ID입니다.

    name

    위 단계에서 생성한 데이터 스트림의 이름입니다(StockTradeStream).

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

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

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

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

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

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

  6. DescribeStream, GetShardIterator, GetRecords, PutRecordPutRecords를 허용된 작업으로 선택합니다.

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

  8. 다음의 각각에 대해 Add Statement(문 추가)를 사용합니다.

    AWS 서비스 작업 ARN
    Amazon DynamoDB CreateTable, DeleteItem, DescribeTable, GetItem, PutItem, Scan, UpdateItem 이 절차의 2단계에서 생성한 DynamoDB 테이블의 ARN입니다.
    Amazon CloudWatch PutMetricData *

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

  9. 다음 단계를 선택합니다.

  10. 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 사용자 생성
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

  3. 사용자 이름StockTradeStreamUser을 입력합니다.

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

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

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

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

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

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

    [default] aws_access_key_id=access key aws_secret_access_key=secret access key
사용자에게 IAM 정책 연결
  1. IAM 콘솔에서 정책을 열고 정책 작업을 선택합니다.

  2. StockTradeStreamPolicyAttach(연결)를 선택합니다.

  3. StockTradeStreamUserAttach Policy(정책 연결)를 선택합니다.

다음 단계

코드 다운로드 및 빌드