Amazon Kinesis Data Firehose によるアクセスの制御 - Amazon Kinesis Data Firehose

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Kinesis Data Firehose によるアクセスの制御

以下のセクションでは、Kinesis Data Firehose リソースのアクセスを制御する方法について説明します。たとえば、Kinesis Data Firehose 配信ストリームにデータを送信できるようにアプリケーションにアクセス権を付与する方法などについて説明します。また、Kinesis Data Firehose で Amazon Simple Storage Service (Amazon S3) バケット、Amazon Redshift クラスター、または Amazon Redshift クラスター、Amazon Simple Storage Service OpenSearch サービスクラスター、送信先として Datadog、Dynatrace、LogicMonitor、MongoDB、New Relic、Splunk、または Sumo Logic を使用する場合に必要なアクセス許可を提供します。最後に、このトピックガイダンスでは、別の AWS アカウントに属する送信先にデータを配信できるように Kinesis Data Firehose を設定する方法について説明します。これらのすべてのアクセス形式を管理するテクノロジーが AWS Identity and Access Management (IAM) です。IAM の詳細については、「IAM とは?」を参照してください。

Kinesis Data Firehose リソースへのアクセス権をアプリケーションに付与する

アプリケーションに Kinesis Data Firehose 配信ストリームへのアクセス権を付与するには、次の例のようなポリシーを使用します。Action セクションを変更するか、"firehose:*" を使用してすべてのオペレーションへのアクセス権を付与することで、アクセス権を付与する個別の API オペレーションを調整できます。

{ "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" ] } ] }

Kinesis Data Firehose が IAM ロールを引き受けることを許可する

コンソールを使用して配信ストリームを作成し、新しいロールを作成するオプションを選択した場合、AWSは、必要な信頼ポリシーをロールにアタッチします。Kinesis Data Firehose で既存の IAM ロールを使用する場合、または独自にロールを作成する場合は、Kinesis Data Firehose がロールを引き受けることができるように、次の信頼ポリシーをそのロールにアタッチします。ポリシーを編集し、account-id をお客様の AWS アカウント ID に置き換えます。

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

このポリシーでは、sts:ExternalId条件コンテキストキーを使用して、Kinesis Data Firehose アクティビティがAWSアカウントはこの IAM ロールを引き受けられます。ロールの不正使用の防止についての詳細は、「」を参照してください。「混乱した代理」問題IAM ユーザーガイド

ロールの信頼関係を変更する方法については、「ロールの修正」を参照してください。

データ形式変換のために Kinesis Data Firehose に AWS Glue へのアクセス権を付与する

配信ストリームがデータ形式の変換を実行する場合、Kinesis Data Firehose は AWS Glue に保存されているテーブル定義を参照します。必要な AWS Glue へのアクセス権を Kinesis Data Firehose に付与するには、ポリシーに次のステートメントを追加します。テーブルの ARN を見つける方法については、「AWS Glue リソース ARN の指定」を参照してください。

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

Amazon S3 の送信先へのアクセス権を Kinesis Data Firehose に付与する

Amazon S3 の送信先を使用している場合、Kinesis Data Firehose は S3 バケットにデータを配信し、オプションで、データ暗号化のためにお客様が所有している AWS KMS キーを使用できます。エラーログ記録が有効になっている場合、Kinesis Data Firehose はデータ配信エラーを CloudWatch ロググループとストリーム。配信ストリームを作成するときは、IAM ロールが必要です。Kinesis Data Firehose は IAM ロールを引き受け、指定されたバケット、キー、および CloudWatch ロググループとストリーム。

次のアクセスポリシーを使用して、Kinesis Data Firehose が S3 バケットおよび AWS KMS キーにアクセスできるようにします。S3 バケットを所有していない場合、Amazon S3 アクションのリストに s3:PutObjectAcl を追加します。これにより、Kinesis 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": [ "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" ] } ] }

他の AWS のサービスによる AWS リソースへのアクセスの許可の詳細については、IAM ユーザーガイド の「AWS サービスにアクセス許可を委任するロールの作成」を参照してください。

別のアカウントの Amazon S3 の送信先へのアクセス権を Kinesis Data Firehose に付与する方法については、「Amazon S3 の送信先へのクロスアカウント間の配信」を参照してください。

Amazon Redshift の送信先へのアクセス権を Kinesis Data Firehose に付与する

Amazon Redshift の送信先を使用して Kinesis Data Firehose にアクセス権を付与するときは、以下を参照してください。

IAM ロールとアクセスポリシー

Amazon Redshift の送信先を使用する場合、Kinesis Data Firehose は中間の場所として S3 バケットにデータを配信します。オプションで、データ暗号化のためにお客様が所有している AWS KMS キーを使用できます。次に、Kinesis Data Firehose は S3 バケットから Amazon Redshift クラスターにデータをロードします。エラーログ記録が有効になっている場合、Kinesis Data Firehose はデータ配信エラーを CloudWatch ロググループとストリーム。Kinesis Data Firehose は指定された Amazon Redshift ユーザー名とパスワードを使用してクラスターにアクセスし、IAM ロールを使用して、指定されたバケット、キー、 CloudWatch ロググループ、およびストリーム。配信ストリームを作成するときは、IAM ロールが必要です。

次のアクセスポリシーを使用して、Kinesis Data Firehose が S3 バケットおよび AWS KMS キーにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 アクションのリストに s3:PutObjectAcl を追加します。これにより、Kinesis 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 クラスターへの VPC アクセス

Amazon Redshift クラスターが Virtual Private Cloud (VPC) にある場合、パブリック IP アドレスでパブリックにアクセス可能である必要があります。また、Kinesis Data Firehose IP アドレスのブロックを解除して、Amazon Redshift クラスターへのアクセス権を Kinesis Data Firehose に付与します。現在、Kinesis Data Firehose は利用可能なリージョンごとに 1 つの 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

  • アジアパシフィック (香港) 用の 18.162.221.32/27

  • アジアパシフィック (ムンバイ) 用の 13.232.67.32/27

  • アジアパシフィック (ソウル) 用の 13.209.1.64/27

  • アジアパシフィック (シンガポール) 用の 13.228.64.192/27

  • アジアパシフィック (シドニー) 用の 13.210.67.224/27

  • アジアパシフィック (東京) 用の 13.113.196.224/27

  • 中国 (北京) 用の 52.81.151.32/27

  • 中国 (寧夏) 用の 161.189.23.64/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

  • アジアパシフィック (大阪) 用の 13.208.177.192/27

  • 108.136.221.64/27アジアパシフィック (ジャカルタ) 向け

IP アドレスのブロック解除方法の詳細については、Amazon Redshift 入門ガイドの「クラスターへのアクセスの許可」を参照してください。

Kinesis Data Firehose にパブリックへのアクセス権を付与する OpenSearch サービス送信先

を使用しているとき OpenSearch サービスの送信先、Kinesis Data Firehose は、 OpenSearch サービスクラスター、およびは、同時に、失敗したドキュメントまたはすべてのドキュメントを S3 バケットにバックアップします。エラーログ記録が有効になっている場合、Kinesis Data Firehose はデータ配信エラーを CloudWatch ロググループとストリーム。Kinesis Data Firehose は IAM ロールを使用して、指定された OpenSearch サービスドメイン、S3 バケット、AWS KMSkey, CloudWatch ロググループとストリーム。配信ストリームを作成するときは、IAM ロールが必要です。

次のアクセスポリシーを使用して、Kinesis Data Firehose が S3 バケットにアクセスできるようにします。 OpenSearch Service ドメイン、AWS KMSkey. S3 バケットを所有していない場合は、Amazon S3 アクションのリストに s3:PutObjectAcl を追加します。これにより、Kinesis 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" ] }, { "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 サービスにアクセス許可を委任するロールの作成」を参照してください。

へのアクセス権を Kinesis Data Firehose に付与する方法については、こちらをご覧ください。 OpenSearch 別のアカウントのサービスクラスター。を参照してください。へのクロスアカウント間の配信 OpenSearch サービス送信先

へのアクセス権を Kinesis Data Firehose に付与する OpenSearch VPC のサービス送信先

もし、 OpenSearch サービスドメインが VPC 内にある場合は、前のセクションで説明したアクセス許可を Kinesis Data Firehose に付与してください。さらに、Kinesis Data Firehose に次のアクセス許可をに付与して、 OpenSearch サービスドメインの VPC。

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

これらのアクセス許可を配信ストリームの作成後に取り消すと、Kinesis Data Firehose は必要なときに追加の ENI を作成してスケールアウトすることができなくなります。そのため、パフォーマンスが低下することがあります。

配信ストリームを作成または更新するときに、Kinesis Data Firehose がにデータを送信するときに Kinesis Data Firehose で使用するセキュリティグループを指定します。 OpenSearch Service ドメイン。次のセキュリティグループと同じセキュリティグループを使用できます。 OpenSearch サービスドメインで使用するか、別のドメインを使用します。別のセキュリティグループを指定する場合は、そのセキュリティグループで、へのアウトバウンド HTTPS トラフィックを必ず許可します。 OpenSearch サービスドメインのセキュリティグループ。また、 OpenSearch サービスドメインのセキュリティグループでは、配信ストリームの設定時に指定したセキュリティグループからの HTTPS トラフィックを許可します。配信ストリームと、両方に同じセキュリティグループを使用する場合 OpenSearch サービスドメインの場合、セキュリティグループのインバウンドルールで HTTPS トラフィックを必ず許可します。セキュリティグループのルールの詳細については、Amazon VPCドキュメントの「セキュリティグループのルール」を参照してください。

Splunk の送信先へのアクセス権を Kinesis Data Firehose に付与する

Splunk の送信先を使用している場合、Kinesis Data Firehose はデータを Splunk HTTP Event Collector (HEC) エンドポイントに配信します。また、指定した Amazon S3 バケットにデータをバックアップします。必要に応じて Amazon S3 のサーバー側の暗号化のために所有している AWS KMS キーを使用することもできます。エラーログ記録が有効になっている場合、Kinesis Data Firehose はデータ配信エラーを CloudWatch ログストリームに送信します。データ変換のために AWS Lambda を使用することもできます。AWS ロードバランサーを使用した場合、それが Classic Load Balancer であることを確認します。Kinesis Data Firehose は、Application Load Balancer も Network Load Balancer もサポートしていません。また、Cookie の失効を無効化した期間ベースのスティッキーセッションを有効にしてください。これを行う方法については、「期間ベースのセッション維持」を参照してください。

配信ストリームを作成するときは、IAM ロールが必要です。Kinesis Data Firehose は IAM ロールを引き受け、指定されたバケット、キー、および CloudWatch ロググループとストリーム。

次のアクセスポリシーを使用して、Kinesis Data Firehose が S3 バケットにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 アクションのリストに s3:PutObjectAcl を追加します。これにより、Kinesis Data Firehose で配信されるオブジェクトへのフルアクセスが、バケット所有者に付与されます。このポリシーは、Kinesis Data Firehose へのアクセス権も付与します。 CloudWatch エラーログとAWS Lambdaデータ変換用。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。Kinesis Data Firehose は Splunk へのアクセスに 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 アドレスでパブリックにアクセス可能である必要があります。また、Kinesis Data Firehose の IP アドレスをブロック解除して、Splunk プラットフォームへのアクセス権を Kinesis Data Firehose に付与する必要があります。Kinesis 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

  • カナダ (中部) 用の 35.183.92.64/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

HTTP エンドポイントの送信先へのアクセス権を Kinesis Data Firehose に付与する

Kinesis Data Firehose を使用して、任意の HTTP エンドポイントの送信先にデータを配信できます。また、Kinesis Data Firehose は指定した Amazon S3 バケットにデータをバックアップします。必要に応じて Amazon S3 のサーバー側の暗号化のために所有している AWS KMS キーを使用することもできます。エラーログ記録が有効になっている場合、Kinesis Data Firehose はデータ配信エラーを CloudWatch ログストリーム。データ変換のために AWS Lambda を使用することもできます。

配信ストリームを作成するときは、IAM ロールが必要です。Kinesis Data Firehose は IAM ロールを引き受け、指定されたバケット、キー、および CloudWatch ロググループとストリーム。

次のアクセスポリシーを使用して、Kinesis Data Firehose がデータバックアップ用に指定した S3 バケットにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 アクションのリストに s3:PutObjectAcl を追加します。これにより、Kinesis Data Firehose で配信されるオブジェクトへのフルアクセスが、バケット所有者に付与されます。このポリシーは、Kinesis Data Firehose へのアクセス権も付与します。 CloudWatch エラーログとAWS Lambdaデータ変換用。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。

重要

Kinesis Data Firehose は IAM を使用して、サポートされているサードパーティーサービスプロバイダーが所有する HTTP エンドポイントの送信先 (Datadog、Dynatrace、LogicMonitor、MongoDB、New Relic、Splunk、または Sumo Logic など) にアクセスすることはありません。サポートされているサードパーティーサービスプロバイダーが所有する指定された HTTP エンドポイントの送信先にアクセスするには、そのサービスプロバイダーに連絡して、Kinesis 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 サービスにアクセス許可を委任するロールの作成」を参照してください。

重要

現在、Kinesis Data Firehose は VPC 内の HTTP エンドポイントへのデータ配信をサポートしていません。

Amazon S3 の送信先へのクロスアカウント間の配信

AWS CLI または Kinesis Data Firehose API を使用して、1 つの AWS アカウントで配信ストリームを作成し、Amazon S3 の送信先は別のアカウントに設定できます。次の手順では、アカウント A が所有する Kinesis Data Firehose 配信ストリームを設定して、アカウント B が所有する Amazon S3 バケットにデータを配信する例を示します。

  1. [Amazon S3 Destination へのアクセス権限を Kinesis Firehose に付与する] で説明されているステップを使用して、アカウント A で IAM ロールを作成します。

    注記

    この場合、アクセスポリシーで指定した Amazon S3 バケットはアカウント B が所有しています。Amazon Kinesis Data Firehose が配信するオブジェクトへのフルアクセスがアカウント B に付与されるよう、アクセスポリシーで Amazon S3 アクションのリストに s3:PutObjectAcl を追加したことを確認してください。このアクセス許可は、クロスアカウント配信に必要です。Kinesis 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 で Kinesis Data Firehose 配信ストリームを作成します。

へのクロスアカウント間の配信 OpenSearch サービス送信先

♪AWS CLIまたは Kinesis Data Firehose API を使用して、1 つの配信ストリームを作成します。AWSアカウントに OpenSearch 別のアカウントにあるサービスの送信先。次の手順では、アカウント A で Kinesis Data Firehose 配信ストリームを作成し、にデータを配信するよう設定する方法の例を示しています。 OpenSearch アカウント B が所有するサービス送信先

  1. Kinesis Data Firehose にパブリックへのアクセス権を付与する OpenSearch サービス送信先 で示されているステップを使用して、アカウント A に IAM ロールを作成します。

  2. 前のステップで作成した IAM ロールからのアクセスを許可するには、 OpenSearch アカウント B のサービスポリシーを以下に示します。例として、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" ] } ] }
  3. ステップ 1 で作成した IAM ロールを使用して、アカウント A で Kinesis Data Firehose 配信ストリームを作成します。配信ストリームを作成する場合は、AWS CLIまたは Kinesis Data Firehose API を指定し、ClusterEndpointフィールドの代わりにDomainARNにとって OpenSearch サービス。

注記

1 つの配信ストリームを作成するにはAWSアカウントに OpenSearch 別のアカウントにあるサービスの送信先は、AWS CLIまたは Kinesis Data Firehose API。AWS Management Console を使用して、このような種類のクロスアカウント設定を作成することはできません。

タグを使用したアクセスの制御

IAM ポリシーでオプションの Condition 要素 (または Condition ブロック) を使用して、タグキーと値に基づいて Kinesis Data Firehose オペレーションへのアクセスを微調整できます。以下のサブセクションでは、さまざまな Kinesis Data Firehose オペレーションに対してこれを行う方法について説明します。の使用についての詳細Condition要素とその中で使用できる演算子については、「」IAM JSON ポリシーエレメント: 条件

CreateDeliveryStream および TagDeliveryStream

CreateDeliveryStream オペレーションと TagDeliveryStream オペレーションでは、aws:RequestTag 条件キーを使用します。次の例では、MyKeyMyValue はキー、およびタグの対応する値を表しています。

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

UntagDeliveryStream

UntagDeliveryStream オペレーションでは、aws:TagKeys 条件キーを使用します。次の例では、MyKey はサンプルタグキーです。

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

ListDeliveryStreams

ListDeliveryStreams でタグベースのアクセスコントロールを使用することはできません。

その他の Kinesis Data Firehose オペレーション

CreateDeliveryStreamTagDeliveryStreamUntagDeliveryStream、および ListDeliveryStreams 以外のすべての Kinesis Data Firehose オペレーションでは、aws:RequestTag 条件キーを使用します。次の例では、MyKeyMyValue はキー、およびタグの対応する値を表しています。

ListDeliveryStreamsで、firehose:ResourceTagその配信ストリームのタグに基づくアクセス制御のための条件キー。

次の例では、MyKeyMyValue はキー、およびタグの対応する値を表しています。このポリシーは、という名前のタグを持つ Data Firehose 配信ストリームにのみ適用されます。MyKeyの値でMyValue。リソースタグに基づくアクセス制御の詳細については、を参照してください。へのアクセスのコントロールAWSリソースタグを使用したリソースIAM ユーザーガイド

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