Amazon Data Firehose를 통한 액세스 제어 - Amazon Data Firehose

Amazon Data Firehose는 이전에 Amazon Kinesis Data Firehose로 알려졌습니다.

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

Amazon Data Firehose를 통한 액세스 제어

다음 섹션에서는 Amazon Data Firehose 리소스와의 액세스를 제어하는 방법을 다룹니다. 다루는 정보에는 Firehose 스트림으로 데이터를 전송할 수 있도록 애플리케이션에 액세스 권한을 부여하는 방법이 포함됩니다. 또한 Amazon Data Firehose에 Amazon S3) 버킷, Amazon Redshift 클러스터 또는 Amazon 서비스 클러스터에 대한 액세스 권한을 부여하는 방법과 Datadog, Dynatrace, LogicMonitor MongoDB, New Relic, Splunk 또는 Sumo Logic을 대상으로 사용하는 경우 필요한 액세스 권한을 부여하는 방법도 설명합니다. OpenSearch 마지막으로, 이 주제에서는 다른 AWS 계정에 속한 대상으로 데이터를 전송할 수 있도록 Amazon Data Firehose를 구성하는 방법에 대한 지침을 제공합니다. 이러한 모든 형태의 액세스를 관리하는 기술은 AWS Identity and Access Management (IAM) 입니다. IAM에 대한 자세한 내용은 IAM이란? 섹션을 참조하세요.

애플리케이션에 Amazon Data Firehose 리소스에 대한 액세스 권한을 부여하십시오.

애플리케이션에 Firehose 스트림에 대한 액세스 권한을 부여하려면 이 예제와 비슷한 정책을 사용하세요. Action 섹션을 수정하여 액세스 권한을 부여할 개별 API 작업을 조정하거나 "firehose:*"를 이용해 모든 작업에 대한 액세스를 허용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:DeleteDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:UpdateDestination" ], "Resource": [ "arn:aws:firehose:region:account-id:deliverystream/delivery-stream-name" ] } ] }

Amazon Data Firehose에 프라이빗 Amazon MSK 클러스터에 대한 액세스 권한을 부여하십시오

Firehose 스트림의 소스가 프라이빗 Amazon MSK 클러스터인 경우 이 예제와 유사한 정책을 사용하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": [ "firehose.amazonaws.com" ] }, "Effect": "Allow", "Action": [ "kafka:CreateVpcConnection" ], "Resource": "cluster-arn" } ] }

Amazon Data Firehose가 IAM 역할을 맡도록 허용

이 섹션에서는 Amazon Data Firehose에 소스에서 대상으로 데이터를 수집, 처리 및 전송할 수 있는 액세스 권한을 부여하는 권한 및 정책을 설명합니다.

참고

콘솔을 사용하여 Firehose 스트림을 만들고 새 역할을 만드는 옵션을 선택하는 경우 필요한 신뢰 정책을 역할에 AWS 연결합니다. Amazon Data Firehose가 기존 IAM 역할을 사용하도록 하거나 직접 역할을 생성하는 경우 Amazon Data Firehose가 역할을 수임할 수 있도록 다음 신뢰 정책을 해당 역할에 연결하십시오. 정책을 편집하여 account-id를 계정 ID로 대체하십시오. AWS 역할의 신뢰 관계를 수정하는 방법에 대한 자세한 내용은 역할 수정을 참조하십시오.

Amazon Data Firehose는 Firehose 스트림이 데이터를 처리하고 전송하는 데 필요한 모든 권한에 대해 IAM 역할을 사용합니다. Amazon Data Firehose가 해당 역할을 맡을 수 있도록 다음과 같은 신뢰 정책이 해당 역할에 연결되어 있는지 확인하십시오.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "account-id" } } }] }

이 정책은 sts:ExternalId 조건 컨텍스트 키를 사용하여 사용자 AWS 계정에서 발생하는 Amazon Data Firehose 활동만 이 IAM 역할을 맡을 수 있도록 합니다. IAM 역할의 무단 사용 금지에 대한 자세한 내용은 IAM 사용 설명서혼동된 대리자 문제를 참조하세요.

Amazon MSK를 Firehose 스트림의 소스로 선택하는 경우, 지정된 Amazon MSK 클러스터에서 소스 데이터를 수집할 수 있는 권한을 Amazon Data Firehose에 부여하는 또 다른 IAM 역할을 지정해야 합니다. Amazon Data Firehose가 해당 역할을 맡을 수 있도록 다음과 같은 신뢰 정책이 해당 역할에 연결되어 있는지 확인하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": [ "firehose.amazonaws.com" ] }, "Effect": "Allow", "Action": "sts:AssumeRole" } ] }

지정된 Amazon MSK 클러스터에서 소스 데이터를 수집할 수 있는 권한을 Amazon Data Firehose에 부여하는 이 역할이 다음 권한을 부여하는지 확인하십시오.

{ "Version": "2012-10-17", "Statement": [{ "Effect":"Allow", "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "CLUSTER-ARN" }, { "Effect":"Allow", "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "TOPIC-ARN" }] }

Amazon Data Firehose에 데이터 형식 변환을 AWS Glue 위한 액세스 권한 부여

Firehose 스트림이 데이터 형식 변환을 수행하는 경우 Amazon 데이터 Firehose는 저장된 테이블 정의를 참조합니다. AWS Glue Amazon Data Firehose에 필요한 액세스 권한을 부여하려면 AWS Glue다음 설명을 정책에 추가하십시오. 테이블의 ARN을 찾는 방법에 대한 자세한 내용은 AWS Glue 리소스 ARN 지정을 참조하십시오.

[{ "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetTableVersion", "glue:GetTableVersions" ], "Resource": "table-arn" }, { "Sid": "GetSchemaVersion", "Effect": "Allow", "Action": [ "glue:GetSchemaVersion" ], "Resource": ["*"] }]

스키마 레지스트리에서 스키마를 가져오기 위한 권장 정책에는 리소스 제한이 없습니다. 자세한 내용은 개발자 안내서의 디시리얼라이저용 IAM 예제를 참조하십시오. AWS Glue

참고

현재 이스라엘 (텔아비브), AWS Glue 아시아 태평양 (자카르타) 또는 중동 (UAE) 지역에서는 지원되지 않습니다. 아시아 태평양 (자카르타) 지역 또는 중동 (UAE) 지역에서 Amazon Data Firehose를 사용하는 경우, 현재 지원되는 지역 중 AWS Glue 하나에서 Amazon Data Firehose에 대한 액세스 권한을 부여해야 합니다. AWS Glue Data Firehose와 간의 지역 간 상호 운용성이 지원됩니다. AWS Glue 지원되는 지역에 AWS Glue 대한 자세한 내용은 https://docs.aws.amazon.com/general/latest/gr/glue.html 을 참조하십시오.

Amazon Data Firehose에 Amazon S3 대상에 대한 액세스 권한 부여

Amazon S3 대상을 사용하는 경우 Amazon Data Firehose는 S3 버킷으로 데이터를 전송하며 선택적으로 데이터 암호화를 위해 사용자가 소유한 AWS KMS 키를 사용할 수 있습니다. 오류 로깅이 활성화된 경우 Amazon Data Firehose는 또한 CloudWatch 로그 그룹 및 스트림에 데이터 전송 오류를 전송합니다. Firehose 스트림을 생성할 때는 IAM 역할이 있어야 합니다. Amazon Data Firehose는 IAM 역할을 맡고 지정된 버킷, 키, CloudWatch 로그 그룹 및 스트림에 대한 액세스 권한을 얻습니다.

Amazon Data Firehose가 S3 버킷과 AWS KMS 키에 액세스할 수 있도록 하려면 다음 액세스 정책을 사용하십시오. S3 버킷을 소유하지 않은 경우 Amazon S3 작업 목록에 s3:PutObjectAcl을 추가합니다. 이렇게 하면 버킷 소유자에게 Amazon Data Firehose에서 제공하는 객체에 대한 전체 액세스 권한이 부여됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

위의 정책에는 Amazon Kinesis Data Streams에 대한 액세스를 허용하는 명령문도 있습니다. Kinesis Data Streams를 데이터 소스로 사용하지 않는 경우, 그 명령문을 제거할 수 있습니다. Amazon MSK를 소스로 사용하는 경우 해당 설명을 다음과 같이 대체할 수 있습니다.

{ "Sid":"", "Effect":"Allow", "Action":[ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:cluster/{{mskClusterName}}/{{clusterUUID}}" }, { "Sid":"", "Effect":"Allow", "Action":[ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:topic/{{mskClusterName}}/{{clusterUUID}}/{{mskTopicName}}" }, { "Sid":"", "Effect":"Allow", "Action":[ "kafka-cluster:DescribeGroup" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:group/{{mskClusterName}}/{{clusterUUID}}/*" }

다른 AWS 서비스가 AWS 리소스에 액세스하도록 허용하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 권한을 위임하는 역할 생성을 참조하십시오.

Amazon Data Firehose에 다른 계정의 Amazon S3 대상에 대한 액세스 권한을 부여하는 방법을 알아보려면 을 참조하십시오. Amazon S3 대상으로 교차 계정 전송

Amazon Data Firehose에 Amazon Redshift 대상에 대한 액세스 권한 부여

Amazon Redshift 대상을 사용할 때 Amazon Data Firehose에 대한 액세스 권한을 부여하려면 다음을 참조하십시오.

IAM 역할 및 액세스 정책

Amazon Redshift 대상을 사용하는 경우 Amazon Data Firehose는 S3 버킷에 중간 위치로서 데이터를 전송합니다. 사용자가 소유한 AWS KMS 키를 선택적으로 데이터 암호화에 사용할 수 있습니다. 그러면 Amazon Data Firehose가 S3 버킷의 데이터를 Amazon Redshift 프로비저닝 클러스터 또는 Amazon Redshift 서버리스 워크그룹으로 로드합니다. 오류 로깅이 활성화된 경우 Amazon Data Firehose는 또한 CloudWatch 로그 그룹 및 스트림에 데이터 전송 오류를 전송합니다. Amazon Data Firehose는 지정된 Amazon Redshift 사용자 이름과 암호를 사용하여 프로비저닝된 클러스터 또는 Amazon Redshift 서버리스 워크그룹에 액세스하고, IAM 역할을 사용하여 지정된 버킷, 키, 로그 그룹 및 스트림에 액세스합니다. CloudWatch Firehose 스트림을 생성할 때는 IAM 역할이 있어야 합니다.

Amazon Data Firehose가 S3 버킷과 AWS KMS 키에 액세스할 수 있도록 하려면 다음 액세스 정책을 사용하십시오. S3 버킷을 소유하지 않은 경우 Amazon S3 작업 목록에 추가하십시오s3:PutObjectAcl. 그러면 Amazon Data Firehose에서 제공하는 객체에 대한 전체 액세스 권한이 버킷 소유자에게 부여됩니다. 이 정책에는 Amazon Kinesis Data Streams에 대한 액세스를 허용하는 명령문도 있습니다. Kinesis Data Streams를 데이터 소스로 사용하지 않는 경우, 그 명령문을 제거할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

다른 AWS 서비스가 AWS 리소스에 액세스하도록 허용하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 권한을 위임할 역할 생성을 참조하십시오.

Amazon Redshift 프로비저닝된 클러스터 또는 Amazon Redshift Serverless 작업 그룹에 대한 VPC 액세스

Amazon Redshift 프로비저닝 클러스터 또는 Amazon Redshift Serverless 작업 그룹이 Virtual Private Cloud(VPC) 내에 있으면 퍼블릭 IP 주소를 통해 공개적으로 액세스할 수 있어야 합니다. 또한 Amazon 데이터 파이어호스 IP 주소의 차단을 해제하여 Amazon Redshift 프로비저닝 클러스터 또는 Amazon Redshift 서버리스 워크그룹에 대한 액세스 권한을 Amazon Data Firehose에 부여하십시오. Amazon Data Firehose는 현재 사용 가능한 각 지역에 대해 하나의 CIDR 블록을 사용합니다.

  • 13.58.135.96/27, 미국 동부(오하이오)

  • 52.70.63.192/27, 미국 동부(버지니아 북부)

  • 13.57.135.192/27, 미국 서부(캘리포니아 북부)

  • 52.89.255.224/27, 미국 서부(오레곤)

  • 18.253.138.96/27 AWS GovCloud (미국 동부) 용

  • 52.61.204.160/27 AWS GovCloud (미국 서부) 용

  • 35.183.92.128/27, 캐나다(중부)

  • 40.176.98.192/27캐나다 서부 (캘거리) 용

  • 18.162.221.32/27, 아시아 태평양(홍콩)

  • 13.232.67.32/27, 아시아 태평양(뭄바이)

  • 18.60.192.128/27, 아시아 태평양(하이데라바드)

  • 13.209.1.64/27, 아시아 태평양(서울)

  • 13.228.64.192/27, 아시아 태평양(싱가포르)

  • 13.210.67.224/27, 아시아 태평양(시드니)

  • 108.136.221.64/27, 아시아 태평양(자카르타)

  • 13.113.196.224/27, 아시아 태평양(도쿄)

  • 13.208.177.192/27, 아시아 태평양(오사카)

  • 52.81.151.32/27, 중국(베이징)

  • 161.189.23.64/27, 중국(닝샤)

  • 16.62.183.32/27, 유럽(취리히)

  • 35.158.127.160/27, 유럽(프랑크푸르트)

  • 52.19.239.192/27, 유럽(아일랜드)

  • 18.130.1.96/27, 유럽(런던)

  • 35.180.1.96/27, 유럽(파리)

  • 13.53.63.224/27, 유럽(스톡홀름)

  • 15.185.91.0/27, 중동(바레인)

  • 18.228.1.128/27, 남아메리카(상파울루)

  • 15.161.135.128/27, 유럽(밀라노)

  • 13.244.121.224/27, 아프리카(케이프타운)

  • 3.28.159.32/27, 중동(UAE)

  • 51.16.102.0/27, 이스라엘(텔아비브)

  • 16.50.161.128/27, 아시아 태평양(멜버른)

IP 주소 차단 해제에 대한 자세한 내용은 Amazon Redshift 시작 가이드클러스터에 대한 액세스 권한 부여 단계를 참조하세요.

Amazon Data Firehose에 공공 OpenSearch 서비스 목적지에 대한 액세스 권한 부여

OpenSearch 서비스 대상을 사용하는 경우 Amazon Data Firehose는 데이터를 OpenSearch 서비스 클러스터로 전송하고 동시에 실패한 문서 또는 모든 문서를 S3 버킷에 백업합니다. 오류 로깅이 활성화된 경우 Amazon Data Firehose는 또한 CloudWatch 로그 그룹 및 스트림에 데이터 전송 오류를 전송합니다. Amazon Data Firehose는 IAM 역할을 사용하여 지정된 OpenSearch 서비스 도메인, S3 버킷, AWS KMS 키, CloudWatch 로그 그룹 및 스트림에 액세스합니다. Firehose 스트림을 생성할 때는 IAM 역할이 있어야 합니다.

Amazon Data Firehose가 S3 버킷, OpenSearch 서비스 도메인 및 AWS KMS 키에 액세스할 수 있도록 하려면 다음 액세스 정책을 사용하십시오. S3 버킷을 소유하지 않은 경우 Amazon S3 작업 목록에 추가하십시오s3:PutObjectAcl. 그러면 Amazon Data Firehose에서 제공하는 객체에 대한 전체 액세스 권한이 버킷 소유자에게 부여됩니다. 이 정책에는 Amazon Kinesis Data Streams에 대한 액세스를 허용하는 명령문도 있습니다. Kinesis Data Streams를 데이터 소스로 사용하지 않는 경우, 그 명령문을 제거할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "es:DescribeDomain", "es:DescribeDomains", "es:DescribeDomainConfig", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": [ "arn:aws:es:region:account-id:domain/domain-name", "arn:aws:es:region:account-id:domain/domain-name/*" ] }, { "Effect": "Allow", "Action": [ "es:ESHttpGet" ], "Resource": [ "arn:aws:es:region:account-id:domain/domain-name/_all/_settings", "arn:aws:es:region:account-id:domain/domain-name/_cluster/stats", "arn:aws:es:region:account-id:domain/domain-name/index-name*/_mapping/type-name", "arn:aws:es:region:account-id:domain/domain-name/_nodes", "arn:aws:es:region:account-id:domain/domain-name/_nodes/stats", "arn:aws:es:region:account-id:domain/domain-name/_nodes/*/stats", "arn:aws:es:region:account-id:domain/domain-name/_stats", "arn:aws:es:region:account-id:domain/domain-name/index-name*/_stats", "arn:aws:es:region:account-id:domain/domain-name/" ] }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

다른 AWS 서비스가 AWS 리소스에 액세스하도록 허용하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 권한을 위임할 역할 생성을 참조하십시오.

Amazon Data Firehose에 다른 계정의 OpenSearch 서비스 클러스터에 대한 액세스 권한을 부여하는 방법을 알아보려면 을 참조하십시오. 서비스 목적지로의 교차 계정 전송 OpenSearch

Amazon Data Firehose에 VPC의 OpenSearch 서비스 대상에 대한 액세스 권한 부여

OpenSearch 서비스 도메인이 VPC에 있는 경우 Amazon Data Firehose에 이전 섹션에서 설명한 권한을 부여해야 합니다. 또한 Amazon Data Firehose가 OpenSearch 서비스 도메인의 VPC에 액세스할 수 있도록 하려면 다음 권한을 부여해야 합니다.

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

중요

Firehose 스트림을 만든 후에는 이러한 권한을 취소하지 마세요. 이러한 권한을 취소하면 서비스가 ENI를 쿼리하거나 업데이트하려고 할 때마다 Firehose 스트림의 성능이 저하되거나 OpenSearch 서비스 도메인에 대한 데이터 전송이 중지됩니다.

중요

프라이빗 VPC에서 대상으로 데이터를 전송하기 위한 서브넷을 지정할 때는 선택한 서브넷에 충분한 수의 여유 IP 주소가 있는지 확인하십시오. 지정된 서브넷에 사용 가능한 무료 IP 주소가 없는 경우 Firehose는 프라이빗 VPC에서 데이터 전송을 위한 ENI를 만들거나 추가할 수 없으며 전송이 저하되거나 실패합니다.

Firehose 스트림을 만들거나 업데이트할 때 Firehose가 서비스 도메인으로 데이터를 전송할 때 사용할 보안 그룹을 지정합니다. OpenSearch OpenSearch 서비스 도메인이 사용하는 것과 동일한 보안 그룹을 사용하거나 다른 보안 그룹을 사용할 수 있습니다. 다른 보안 그룹을 지정하는 경우 OpenSearch 서비스 도메인의 보안 그룹에 대한 아웃바운드 HTTPS 트래픽을 허용해야 합니다. 또한 OpenSearch 서비스 도메인의 보안 그룹이 Firehose 스트림을 구성할 때 지정한 보안 그룹으로부터의 HTTPS 트래픽을 허용하는지 확인하세요. Firehose 스트림과 OpenSearch 서비스 도메인 모두에 동일한 보안 그룹을 사용하는 경우 보안 그룹 인바운드 규칙이 HTTPS 트래픽을 허용하는지 확인하세요. 보안 그룹 규칙에 관한 자세한 정보는 Amazon VPC 설명서의 보안 그룹 규칙을 참조하세요.

Amazon Data Firehose에 퍼블릭 OpenSearch 서버리스 대상에 대한 액세스 권한 부여

OpenSearch 서버리스 대상을 사용하는 경우 Amazon Data Firehose는 서버리스 컬렉션에 데이터를 전송하고 동시에 실패한 문서 또는 모든 문서를 S3 버킷에 백업합니다. OpenSearch 오류 로깅이 활성화된 경우 Amazon Data Firehose는 또한 CloudWatch 로그 그룹 및 스트림에 데이터 전송 오류를 전송합니다. Amazon Data Firehose는 IAM 역할을 사용하여 지정된 OpenSearch 서버리스 컬렉션, S3 버킷, AWS KMS 키, CloudWatch 로그 그룹 및 스트림에 액세스합니다. Firehose 스트림을 생성할 때는 IAM 역할이 있어야 합니다.

Amazon Data Firehose가 S3 버킷, OpenSearch 서버리스 도메인 및 키에 액세스할 수 있도록 하려면 다음 액세스 정책을 사용하십시오. AWS KMS S3 버킷을 소유하지 않은 경우 Amazon S3 작업 목록에 추가하십시오s3:PutObjectAcl. 그러면 Amazon Data Firehose에서 제공하는 객체에 대한 전체 액세스 권한이 버킷 소유자에게 부여됩니다. 이 정책에는 Amazon Kinesis Data Streams에 대한 액세스를 허용하는 명령문도 있습니다. Kinesis Data Streams를 데이터 소스로 사용하지 않는 경우, 그 명령문을 제거할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] }, { "Effect": "Allow", "Action": "aoss:APIAccessAll", "Resource": "arn:aws:aoss:region:account-id:collection/collection-id" } ] }

위의 정책 외에도 데이터 액세스 정책에 다음과 같은 최소 권한이 할당되도록 Amazon Data Firehose를 구성해야 합니다.

[ { "Rules":[ { "ResourceType":"index", "Resource":[ "index/target-collection/target-index" ], "Permission":[ "aoss:WriteDocument", "aoss:UpdateIndex", "aoss:CreateIndex" ] } ], "Principal":[ "arn:aws:sts::account-id:assumed-role/firehose-delivery-role-name/*" ] } ]

다른 AWS 서비스가 AWS 리소스에 액세스하도록 허용하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 권한을 위임할 역할 생성을 참조하십시오.

Amazon Data Firehose에 VPC의 OpenSearch 서버리스 대상에 대한 액세스 권한 부여

OpenSearch 서버리스 컬렉션이 VPC에 있는 경우 Amazon Data Firehose에 이전 섹션에서 설명한 권한을 부여해야 합니다. 또한 Amazon Data Firehose가 OpenSearch 서버리스 컬렉션의 VPC에 액세스할 수 있도록 하려면 다음 권한을 부여해야 합니다.

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

중요

Firehose 스트림을 만든 후에는 이러한 권한을 취소하지 마세요. 이러한 권한을 취소하면 서비스가 ENI를 쿼리하거나 업데이트하려고 할 때마다 Firehose 스트림의 성능이 저하되거나 OpenSearch 서비스 도메인에 대한 데이터 전송이 중지됩니다.

중요

프라이빗 VPC에서 대상으로 데이터를 전송하기 위한 서브넷을 지정할 때는 선택한 서브넷에 충분한 수의 여유 IP 주소가 있는지 확인하십시오. 지정된 서브넷에 사용 가능한 무료 IP 주소가 없는 경우 Firehose는 프라이빗 VPC에서 데이터 전송을 위한 ENI를 만들거나 추가할 수 없으며 전송이 저하되거나 실패합니다.

Firehose 스트림을 만들거나 업데이트할 때 Firehose가 서버리스 컬렉션으로 데이터를 전송할 때 사용할 보안 그룹을 지정합니다. OpenSearch OpenSearch 서버리스 컬렉션에서 사용하는 것과 동일한 보안 그룹을 사용하거나 다른 보안 그룹을 사용할 수 있습니다. 다른 보안 그룹을 지정하는 경우 OpenSearch 서버리스 컬렉션의 보안 그룹에 대한 아웃바운드 HTTPS 트래픽을 허용해야 합니다. 또한 Firehose 스트림을 구성할 때 지정한 보안 그룹으로부터의 HTTPS 트래픽을 OpenSearch 서버리스 컬렉션의 보안 그룹이 허용하는지 확인하세요. Firehose 스트림과 OpenSearch Serverless 컬렉션 모두에 동일한 보안 그룹을 사용하는 경우 보안 그룹 인바운드 규칙이 HTTPS 트래픽을 허용하는지 확인하세요. 보안 그룹 규칙에 관한 자세한 정보는 Amazon VPC 설명서의 보안 그룹 규칙을 참조하세요.

Amazon Data Firehose에 스플렁크 목적지에 대한 액세스 권한 부여

Splunk 대상을 사용하는 경우 Amazon Data Firehose는 Splunk HTTP 이벤트 수집기 (HEC) 엔드포인트로 데이터를 전송합니다. 또한 지정한 Amazon S3 버킷에 해당 데이터를 백업하며, Amazon S3 서버 측 암호화에 소유한 AWS KMS 키를 선택적으로 사용할 수 있습니다. 오류 로깅이 활성화된 경우 Firehose는 CloudWatch 로그 스트림에 데이터 전송 오류를 전송합니다. 데이터 변환에도 AWS Lambda 사용할 수 있습니다.

AWS 로드 밸런서를 사용하는 경우 Classic Load Balancer 또는 Application Load Balancer인지 확인하십시오. 또한 Classic Load Balancer의 경우 쿠키 만료를 비활성화하고 Application Load Balancer의 경우 만료를 최대 (7일) 로 설정하여 기간 기반 고정 세션을 활성화하십시오. 이 작업을 수행하는 방법에 대한 자세한 내용은 Classic Load Balancer 또는 Application Load Balancer의 기간 기반 세션 고정성을 참조하십시오.

Firehose 스트림을 생성할 때는 IAM 역할이 있어야 합니다. Firehose는 IAM 역할을 가정하고 지정된 버킷, 키, CloudWatch 로그 그룹 및 스트림에 대한 액세스 권한을 얻습니다.

Amazon Data Firehose가 S3 버킷에 액세스할 수 있도록 하려면 다음 액세스 정책을 사용하십시오. S3 버킷을 소유하지 않은 경우 Amazon S3 작업 목록에 추가하십시오s3:PutObjectAcl. 그러면 Amazon Data Firehose에서 제공하는 객체에 대한 전체 액세스 권한이 버킷 소유자에게 부여됩니다. 또한 이 정책은 Amazon Data CloudWatch Firehose에 오류 로깅 및 데이터 변환을 위한 액세스 권한을 부여합니다 AWS Lambda . 정책에는 Amazon Kinesis Data Streams에 대한 액세스를 허용하는 명령문도 있습니다. Kinesis Data Streams를 데이터 소스로 사용하지 않는 경우, 그 명령문을 제거할 수 있습니다. Amazon Data Firehose는 IAM을 사용하여 스플렁크에 액세스하지 않습니다. Splunk 액세스를 위해 HEC 토큰을 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

다른 AWS 서비스가 AWS 리소스에 액세스하도록 허용하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 권한을 위임하는 역할 생성을 참조하십시오.

VPC에서 Splunk에 액세스

Splunk 플랫폼이 VPC 내에 있으면 퍼블릭 IP 주소를 통해 공개적으로 액세스할 수 있어야 합니다. 또한 Amazon Data Firehose IP 주소의 차단을 해제하여 Splunk 플랫폼에 대한 Amazon Data Firehose에 대한 액세스 권한을 부여하십시오. Amazon Data Firehose는 현재 다음과 같은 CIDR 블록을 사용합니다.

  • 18.216.68.160/27, 18.216.170.64/27, 18.216.170.96/27, 미국 동부(오하이오)

  • 34.238.188.128/26, 34.238.188.192/26, 34.238.195.0/26, 미국 동부(버지니아 북부)

  • 13.57.180.0/26, 미국 서부(캘리포니아 북부)

  • 34.216.24.32/27, 34.216.24.192/27, 34.216.24.224/27, 미국 서부(오레곤)

  • 18.253.138.192/26 AWS GovCloud (미국 동부) 용

  • 52.61.204.192/26 AWS GovCloud (미국 서부) 용

  • 18.162.221.64/26, 아시아 태평양(홍콩)

  • 13.232.67.64/26, 아시아 태평양(뭄바이)

  • 13.209.71.0/26, 아시아 태평양(서울)

  • 13.229.187.128/26, 아시아 태평양(싱가포르)

  • 13.211.12.0/26, 아시아 태평양(시드니)

  • 13.230.21.0/27, 13.230.21.32/27, 아시아 태평양(도쿄)

  • 51.16.102.64/26, 이스라엘(텔아비브)

  • 35.183.92.64/26, 캐나다(중부)

  • 40.176.98.128/26캐나다 서부 (캘거리) 용

  • 18.194.95.192/27, 18.194.95.224/27, 18.195.48.0/27, 유럽(프랑크푸르트)

  • 34.241.197.32/27, 34.241.197.64/27, 34.241.197.96/27, 유럽(아일랜드)

  • 18.130.91.0/26, 유럽(런던)

  • 35.180.112.0/26, 유럽(파리)

  • 13.53.191.0/26, 유럽(스톡홀름)

  • 15.185.91.64/26, 중동(바레인)

  • 18.228.1.192/26, 남아메리카(상파울루)

  • 15.161.135.192/26, 유럽(밀라노)

  • 13.244.165.128/26, 아프리카(케이프타운)

  • 13.208.217.0/26, 아시아 태평양(오사카)

  • 52.81.151.64/26, 중국(베이징)

  • 161.189.23.128/26, 중국(닝샤)

  • 108.136.221.128/26, 아시아 태평양(자카르타)

  • 3.28.159.64/26, 중동(UAE)

  • 51.16.102.64/26, 이스라엘(텔아비브)

  • 16.62.183.64/26, 유럽(취리히)

  • 18.60.192.192/26, 아시아 태평양(하이데라바드)

  • 16.50.161.192/26, 아시아 태평양(멜버른)

스노우플레이크 또는 HTTP 엔드포인트에 대한 액세스

대상이 HTTP 엔드포인트 또는 Snowflake 퍼블릭 클러스터인 경우 Amazon Data Firehose에만 적용되는 AWS IP 주소 범위의 하위 집합은 없습니다.

Firehose를 퍼블릭 Snowflake 클러스터의 허용 목록이나 퍼블릭 HTTP 또는 HTTPS 엔드포인트에 추가하려면 모든 현재 AWS IP 주소 범위를 인그레스 규칙에 추가하세요.

참고

알림이 항상 관련 주제와 같은 지역의 IP 주소에서 오는 것은 아닙니다. AWS 모든 지역의 AWS IP 주소 범위를 포함해야 합니다.

Amazon Data Firehose에 눈송이 목적지에 대한 액세스 권한 부여

Snowflake를 대상으로 사용하는 경우 Firehose는 스노우플레이크 계정 URL을 사용하여 Snowflake 계정에 데이터를 전송합니다. 또한 지정한 Amazon Simple Storage Service 버킷에 오류 데이터를 백업하며, Amazon S3 서버 측 암호화에 소유한 AWS Key Management Service 키를 선택적으로 사용할 수 있습니다. 오류 로깅이 활성화된 경우 Firehose는 CloudWatch 로그 스트림에 데이터 전송 오류를 전송합니다.

Firehose 스트림을 생성하려면 먼저 IAM 역할이 있어야 합니다. Firehose는 IAM 역할을 가정하고 지정된 버킷, 키, CloudWatch 로그 그룹 및 스트림에 대한 액세스 권한을 얻습니다. 다음 액세스 정책을 사용하여 Firehose가 S3 버킷에 액세스할 수 있도록 설정합니다. S3 버킷을 소유하지 않은 경우 Amazon Simple Storage Service 작업 목록에 추가하십시오s3:PutObjectAcl. 그러면 버킷 소유자에게 Firehose에서 제공하는 객체에 대한 전체 액세스 권한이 부여됩니다. 또한 이 정책은 Firehose에 오류 로깅을 CloudWatch 위한 액세스 권한을 부여합니다. 정책에는 Amazon Kinesis Data Streams에 대한 액세스를 허용하는 명령문도 있습니다. Kinesis Data Streams를 데이터 소스로 사용하지 않는 경우, 그 명령문을 제거할 수 있습니다. Firehose는 IAM을 사용하여 스노우플레이크에 액세스하지 않습니다. Snowflake에 액세스하려면 프라이빗 클러스터의 경우 Snowflake 계정 URL과 PrivateLink Vpce Id를 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] } ] }

다른 AWS 서비스가 AWS 리소스에 액세스하도록 허용하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 서비스에 권한을 위임하는 역할 생성을 참조하십시오. AWS

VPC의 스노우플레이크 액세스

Snowflake 클러스터에 프라이빗 링크가 활성화된 경우 Firehose는 VPC 엔드포인트를 사용하여 퍼블릭 인터넷을 거치지 않고 프라이빗 클러스터로 데이터를 전송합니다. 이를 위해 Snowflake 네트워크 규칙을 만들어 클러스터가 속해 있는 다음 항목으로부터 수신을 허용하세요. AwsVpceIds AWS 리전 자세한 내용은 Snowflake 사용 설명서에서 네트워크 규칙 생성을 참조하십시오.

클러스터가 속한 지역을 기반으로 사용할 VPC 엔드포인트 ID
AWS 리전 VPCE IDs
미국 동부(오하이오)

vpce-0d96cafcd96a50aeb

vpce-0cec34343d48f537b

미국 동부(버지니아 북부)

vpce-0b4d7e8478e141ba8

vpce-0b75cd681fb507352

vpce-01c03e63820ec00d8

vpce-0c2cfc51dc2882422

vpce-06ca862f019e4e056

vpce-020cda0cfa63f8d1c

vpce-0b80504a1a783cd70

vpce-0289b9ff0b5259a96

vpce-0d7add8628bd69a12

vpce-02bfb5966cc59b2af

vpce-09e707674af878bf2

vpce-049b52e96cc1a2165

vpce-0bb6c7b7a8a86cdbb

vpce-03b22d599f51e80f3

vpce-01d60dc60fc106fe1

vpce-0186d20a4b24ecbef

vpce-0533906401a36e416

vpce-05111fb13d396710e

vpce-0694613f4fbd6f514

vpce-09b21cb25fe4cc4f4

vpce-06029c3550e4d2399

vpce-00961862a21b033da

vpce-01620b9ae33273587

vpce-078cf4ec226880ac9

vpce-0d711bf076ce56381

vpce-066b7e13cbfca6e

vpce-0674541252d9ccc26

vpce-03540b88dedb4b000

vpce-0b1828e79ad394b95

vpce-0dc0e6f001fb1a60d

vpce-0d8f82e71a244098a

vpce-00e374d9e3f1af5ce

vpce-0c1e3d6631ddb442f

미국 서부(오레곤)

vpce-0f60f72da4cd1e4e7

vpce-0c60d21eb8b1669fd

vpce-01c4e3e29afdafbef

vpce-0cc6bf2a88da139de

vpce-0797e08e169e50662

vpce-033cbe480381b5c0e

vpce-00debbdd8f9eb10a5

vpce-08ec2f386c809e889

vpce-0856d14310857b545

유럽(프랑크푸르트)

vpce-068dbb7d71c9460fb

vpce-0a7a7f095942d4ec9

유럽(아일랜드)

vpce-06857e59c005a6276

vpce-04390f4f8778b75f2

vpce-011fd2b1f0aa172fd

아시아 태평양(도쿄)

vpce-06369e5258144e68a

vpce-0f2363cdb8926fbe8

아시아 태평양(싱가포르)

vpce-049cd46cce7a12d52

vpce-0e8965a1a4bdb8941

아시아 태평양(서울)

vpce-0aa444d9001e1faa1

vpce-04a49d4dcfd02b884

아시아 태평양(시드니)

vpce-048a60a182c52be63

vpce-03c19949787fd1859

Amazon Data Firehose에 HTTP 엔드포인트 대상에 대한 액세스 권한 부여

Amazon Data Firehose를 사용하여 모든 HTTP 엔드포인트 대상으로 데이터를 전송할 수 있습니다. 또한 Amazon Data Firehose는 지정된 Amazon S3 버킷에 해당 데이터를 백업하며, Amazon S3 서버 측 암호화를 위해 사용자가 소유한 AWS KMS 키를 선택적으로 사용할 수 있습니다. 오류 로깅이 활성화된 경우 Amazon Data Firehose는 CloudWatch 로그 스트림에 데이터 전송 오류를 전송합니다. 데이터 변환에도 AWS Lambda 사용할 수 있습니다.

Firehose 스트림을 생성할 때는 IAM 역할이 있어야 합니다. Amazon Data Firehose는 IAM 역할을 맡고 지정된 버킷, 키, CloudWatch 로그 그룹 및 스트림에 대한 액세스 권한을 얻습니다.

다음 액세스 정책을 사용하여 Amazon Data Firehose가 데이터 백업용으로 지정한 S3 버킷에 액세스할 수 있도록 합니다. S3 버킷을 소유하지 않은 경우 Amazon S3 작업 목록에 추가하십시오s3:PutObjectAcl. 그러면 Amazon Data Firehose에서 제공하는 객체에 대한 전체 액세스 권한이 버킷 소유자에게 부여됩니다. 또한 이 정책은 Amazon Data CloudWatch Firehose에 오류 로깅 및 데이터 변환을 위한 액세스 권한을 부여합니다 AWS Lambda . 정책에는 Amazon Kinesis Data Streams에 대한 액세스를 허용하는 명령문도 있습니다. Kinesis Data Streams를 데이터 소스로 사용하지 않는 경우, 그 명령문을 제거할 수 있습니다.

중요

Amazon Data Firehose는 Datadog, Dynatrace, LogicMonitor MongoDB, New Relic, Splunk 또는 Sumo Logic 등 지원되는 타사 서비스 공급자가 소유한 HTTP 엔드포인트 대상에 액세스하는 데 IAM을 사용하지 않습니다. 지원되는 타사 서비스 공급자가 소유한 지정된 HTTP 엔드포인트 대상에 액세스하려면 해당 서비스 공급자에게 문의하여 Amazon Data Firehose에서 해당 서비스로 데이터를 전송하는 데 필요한 API 키 또는 액세스 키를 받으십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

다른 AWS 서비스가 AWS 리소스에 액세스하도록 허용하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 권한을 위임하는 역할 생성을 참조하십시오.

중요

현재 Amazon Data Firehose는 VPC의 HTTP 엔드포인트로의 데이터 전송을 지원하지 않습니다.

Amazon MSK에서 계정 간 배송

Firehose 계정 (예: 계정 B) 에서 Firehose 스트림을 만들고 소스가 다른 계정 ( AWS 계정 A) 의 MSK 클러스터인 경우 다음과 같은 구성이 있어야 합니다.

계정 A:

  1. Amazon MSK 콘솔에서 프로비저닝된 클러스터를 선택한 다음 속성을 선택하세요.

  2. 네트워크 설정에서 편집을 선택하여 다중 VPC 연결을 활성화하세요.

  3. 보안 설정에서 클러스터 정책 편집을 선택합니다.

    1. 클러스터에 아직 정책이 구성되어 있지 않은 경우 Firehose 서비스 보안 주체 포함Firehose 교차 계정 S3 전송 활성화를 선택합니다. 적절한 AWS Management Console 권한이 포함된 정책이 자동으로 생성됩니다.

    2. 클러스터에 이미 구성된 정책이 있는 경우 기존 정책에 다음 권한을 추가하세요.

      { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::arn:role/mskaasTestDeliveryRole" }, "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "arn:aws:kafka:us-east-1:arn:cluster/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20" // ARN of the cluster }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::arn:role/mskaasTestDeliveryRole" }, "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "arn:aws:kafka:us-east-1:arn:topic/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*"//topic of the cluster }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::233450236687:role/mskaasTestDeliveryRole" }, "Action": "kafka-cluster:DescribeGroup", "Resource": "arn:aws:kafka:us-east-1:arn:group/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, }
  4. AWS 보안 주체에 계정 B의 보안 주체 ID를 입력하세요.

  5. 주제 아래에서 Firehose 스트림에서 데이터를 수집하려는 Apache Kafka 주제를 지정합니다. Firehose 스트림이 생성되면 이 주제를 업데이트할 수 없습니다.

  6. 변경 사항 저장(Save changes)을 선택합니다

계정 B:

  1. Firehose 콘솔에서 계정 B를 사용하여 Firehose 스트림 생성을 선택합니다.

  2. 소스에서 Amazon Managed Streaming for Apache Kafka를 선택하세요.

  3. 소스 설정에서 Amazon Managed Streaming for Apache Kafka 클러스터에 계정 A의 Amazon MSK ARN을 입력하세요.

  4. 주제 아래에서 Firehose 스트림에서 데이터를 수집하려는 Apache Kafka 주제를 지정합니다. Firehose 스트림이 생성되면 이 주제를 업데이트할 수 없습니다.

  5. 전송 스트림 이름에서 Firehose 스트림의 이름을 지정합니다.

Firehose 스트림을 생성할 때 계정 B에는 구성된 주제에 대해 Firehose 스트림에 계정 간 Amazon MSK 클러스터에 대한 '읽기' 액세스 권한을 부여하는 IAM 역할 (사용 시 기본적으로 AWS Management Console생성됨) 이 있어야 합니다.

다음은 AWS Management Console에 의해 구성되는 내용입니다.

{ "Sid": "", "Effect": "Allow", "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "arn:aws:kafka:us-east-1:arn:cluster/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, { "Sid": "", "Effect": "Allow", "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "arn:aws:kafka:us-east-1:arn:topic/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/mskaas_test_topic" //topic of the cluster }, { "Sid": "", "Effect": "Allow", "Action": [ "kafka-cluster:DescribeGroup" ], "Resource": "arn:aws:kafka:us-east-1:arn:group/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, }

그 다음으로, 레코드 변환 및 레코드 형식 변환을 구성하는 옵션 단계를 완료할 수 있습니다. 자세한 정보는 레코드 변환 및 형식 변환 구성을 참조하세요.

Amazon S3 대상으로 교차 계정 전송

AWS CLI 또는 Amazon Data Firehose API를 사용하여 한 AWS 계정에서 Firehose 스트림을 생성하고 다른 계정에서 Amazon S3 대상을 생성할 수 있습니다. 다음 절차는 계정 A가 소유한 Firehose 스트림을 계정 B가 소유한 Amazon S3 버킷으로 데이터를 전송하도록 구성하는 예를 보여줍니다.

  1. Amazon S3 대상에 Firehose 액세스 권한 부여에 설명된 단계를 사용하여 계정 A에서 IAM 역할을 생성합니다.

    참고

    이 경우 액세스 정책에 지정된 Amazon S3 버킷은 계정 B가 소유합니다. Amazon Data Firehose에서 제공하는 객체에 대한 전체 액세스 권한을 계정 B에 부여하는 액세스 정책의 Amazon S3 작업 목록에 s3:PutObjectAcl 추가해야 합니다. 교차 계정 전송 시 이 권한이 필요합니다. Amazon Data Firehose는 요청의 x-amz-acl "" 헤더를 "“bucket-owner-full-control로 설정합니다.

  2. 이전에 생성한 IAM 역할에서 액세스하도록 허용하려면 계정 B 하에서 S3 버킷 정책을 생성합니다. 다음 코드는 버킷 정책의 예입니다. 자세한 내용은 버킷 정책 및 사용자 정책 사용을 참조하십시오.

    { "Version": "2012-10-17", "Id": "PolicyID", "Statement": [ { "Sid": "StmtID", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountA-id:role/iam-role-name" }, "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] } ] }
  3. 1단계에서 만든 IAM 역할을 사용하여 계정 A에서 Firehose 스트림을 생성합니다.

서비스 목적지로의 교차 계정 전송 OpenSearch

AWS CLI 또는 Amazon Data Firehose API를 사용하여 한 AWS 계정에서 Firehose 스트림을 생성하고 다른 계정에 OpenSearch 서비스 대상을 생성할 수 있습니다. 다음 절차는 계정 A에서 Firehose 스트림을 만들고 계정 B가 소유한 OpenSearch 서비스 대상에 데이터를 전송하도록 구성하는 방법의 예를 보여줍니다.

  1. Amazon Data Firehose에 공공 OpenSearch 서비스 목적지에 대한 액세스 권한 부여에 설명된 단계를 사용하여 계정 A에서 IAM 역할을 생성합니다.

  2. 이전 단계에서 만든 IAM 역할에서 액세스를 허용하려면 계정 B에서 OpenSearch 서비스 정책을 생성하세요. 다음 JSON이 그 예입니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account-A-ID:role/firehose_delivery_role " }, "Action": "es:ESHttpGet", "Resource": [ "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_all/_settings", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_cluster/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/roletest*/_mapping/roletest", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes/*/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/roletest*/_stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/" ] } ] }
  3. 1단계에서 만든 IAM 역할을 사용하여 계정 A에서 Firehose 스트림을 생성합니다. Firehose 스트림을 생성할 때는 서비스 대신 AWS CLI 또는 Amazon Data Firehose API를 사용하고 ClusterEndpoint 필드를 지정하십시오. DomainARN OpenSearch

참고

한 AWS 계정에서 다른 계정에 OpenSearch 서비스 대상을 두고 Firehose 스트림을 생성하려면 AWS CLI 또는 Amazon Data Firehose API를 사용해야 합니다. 를 사용하여 이런 종류의 교차 계정 AWS Management Console 구성을 만들 수는 없습니다.

태그를 사용하여 액세스 제어

IAM 정책의 선택적 Condition 요소 (또는 Condition 블록) 를 사용하여 태그 키와 값을 기반으로 Amazon Data Firehose 작업에 대한 액세스를 세부적으로 조정할 수 있습니다. 다음 하위 섹션에서는 다양한 Amazon Data Firehose 작업에 대해 이 작업을 수행하는 방법을 설명합니다. Condition 요소의 사용 방법과 그 요소에 사용할 수 있는 작업을 알아보려면 IAM JSON 정책 요소: 조건을 참조하십시오.

CreateDeliveryStream

CreateDeliveryStream 작업에는 aws:RequestTag 조건 키를 사용하십시오. 다음 예에서 MyKeyMyValue는 태그에 대한 키와 그 값을 나타냅니다. 자세한 정보는 태그 기본 사항섹션을 참조하십시오.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "firehose:CreateDeliveryStream", "firehose:TagDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/MyKey": "MyValue" } } }] }

TagDeliveryStream

TagDeliveryStream 작업에는 aws:TagKeys 조건 키를 사용하십시오. 다음 예에서 MyKey은 태그 키의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:TagDeliveryStream", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "MyKey" } } } ] }

UntagDeliveryStream

UntagDeliveryStream 작업에는 aws:TagKeys 조건 키를 사용하십시오. 다음 예에서 MyKey은 태그 키의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:UntagDeliveryStream", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "MyKey" } } } ] }

ListDeliveryStreams

ListDeliveryStreams에는 태그 기반 액세스를 사용할 수 없습니다.

기타 Amazon 데이터 파이어호스 오퍼레이션

CreateDeliveryStream, TagDeliveryStream UntagDeliveryStreamListDeliveryStreams, 및 이외의 모든 Amazon Data Firehose 작업에는 aws:RequestTag 조건 키를 사용하십시오. 다음 예에서 MyKeyMyValue는 태그에 대한 키와 그 값을 나타냅니다.

ListDeliveryStreams, firehose:ResourceTag 조건 키를 사용하여 해당 Firehose 스트림의 태그를 기반으로 액세스를 제어합니다.

다음 예에서 MyKeyMyValue는 태그에 대한 키와 그 값을 나타냅니다. 이 정책은 값이 인 태그의 이름을 MyKey 가진 Data Firehose 스트림에만 적용됩니다. MyValue 리소스 태그를 기반으로 액세스를 제어하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 태그를 사용한 AWS 리소스 액세스 제어를 참조하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "firehose:DescribeDeliveryStream", "Resource": "*", "Condition": { "StringEquals": { "firehose:ResourceTag/MyKey": "MyValue" } } } ] }