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 Elasticsearch Service クラスタ、およびDatadog、New Relic、またはSplunkを送信先として使用する場合に必要なアクセス権限。最後に、このトピックガイダンスでは、別の 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 ロールを割り当てる

コンソールを使用して配信ストリームを作成し、新しいロールを作成するオプションを選択した場合、必要な信頼ポリシーがロールにアタッチされます。または、 Kinesis Data Firehose 既存のIAM役割を使用する、または自分で役割を作成する場合は、以下の信頼ポリシーをその役割に添付して、 Kinesis Data Firehose 想定できる。

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

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

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

配信ストリームがデータ形式の変換を実行する場合、Kinesis Data Firehoseは AWS Glue に保存されているテーブル定義を参照します。Kinesis Data Firehose に必要な AWS Glue へのアクセス権を付与するには、ポリシーに次のステートメントを追加します。テーブルの 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 リソースへのアクセスの許可の詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.htmlの「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 リソースへのアクセスの許可の詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.htmlの「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 for 米国東部 (オハイオ)

  • 52.70.63.192/27 for 米国東部(バージニア北部)

  • 13.57.135.192/27 for 米国西部 (北カリフォルニア)

  • 52.89.255.224/27 for 米国西部 (オレゴン)

  • 18.253.138.96/27 for AWS GovCloud (米国東部)

  • 52.61.204.160/27 for AWS GovCloud (US-West)

  • 35.183.92.128/27 for カナダ (中部)

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

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

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

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

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

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

  • 52.81.151.32/27 for 中国 (北京)

  • 161.189.23.64/27 for 中国 (寧夏)

  • 35.158.127.160/27 for 欧州 (フランクフルト)

  • 52.19.239.192/27 for 欧州 (アイルランド)

  • 18.130.1.96/27 for 欧州 (ロンドン)

  • 35.180.1.96/27 for 欧州 (パリ)

  • 13.53.63.224/27 for 欧州 (ストックホルム)

  • 15.185.91.0/27 for 中東 (バーレーン)

  • 18.228.1.128/27 for 南米 (サンパウロ)

  • 15.161.135.128/27 for ヨーロッパ (ミラノ)

  • 13.244.121.224/277 for アフリカ (ケープタウン)

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

パブリック Amazon ES 送信先へのアクセスを Kinesis Data Firehose に許可する

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

次のアクセスポリシーを使用して、Kinesis Data Firehose が S3 バケット、Amazon ES ドメイン、および 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": [ "es:DescribeElasticsearchDomain", "es:DescribeElasticsearchDomains", "es:DescribeElasticsearchDomainConfig", "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 リソースへのアクセスの許可の詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.htmlの「IAM ユーザーガイドAWS サービスにアクセス許可を委任するロールの作成」を参照してください。

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

VPC の Amazon ES 送信先へのアクセスをKinesis Data Firehose に許可する

Amazon ES ドメインが VPC 内にある場合は、前のセクションで説明したアクセス許可を Kinesis Data Firehose に付与してください。さらに、Amazon ES ドメインの VPC にアクセスできるように、次のアクセス許可を Kinesis Data Firehose に付与する必要があります。

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

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

配信ストリームを作成または更新するときに、Amazon ES ドメインにデータを送信するときに Kinesis Data Firehose で使用するセキュリティグループを指定します。Amazon ES ドメインで使用しているのと同じセキュリティグループを使用することも、別のセキュリティグループを使用することもできます。別のセキュリティグループを指定する場合は、そのセキュリティグループで、Amazon ES ドメインのセキュリティグループへのアウトバウンド HTTPS トラフィックを必ず許可します。また、Amazon ES ドメインのセキュリティグループで、配信ストリームの設定時に指定したセキュリティグループからの HTTPS トラフィックを必ず許可します。配信ストリームと Amazon ES ドメインの両方に同じセキュリティグループを使用する場合は、セキュリティグループのインバウンドルールで 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 で配信されるオブジェクトへのフルアクセスが、バケット所有者に付与されます。このポリシーは、エラーログ記録のための CloudWatch へのアクセス権とデータ変換のための AWS Lambda へのアクセス権も Kinesis Data Firehose に付与します。このポリシーには、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 リソースへのアクセスの許可の詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.htmlの「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 for 米国東部 (オハイオ)

  • 34.238.188.128/26, 34.238.188.192/26, 34.238.195.0/26 for 米国東部(バージニア北部)

  • 13.57.180.0/26 for 米国西部 (北カリフォルニア)

  • 34.216.24.32/27, 34.216.24.192/27, 34.216.24.224/27 for 米国西部 (オレゴン)

  • 18.253.138.192/26 for AWS GovCloud (米国東部)

  • 52.61.204.192/26 for AWS GovCloud (US-West)

  • 18.162.221.64/26 for アジアパシフィック (香港)

  • 13.232.67.64/26 for アジアパシフィック (ムンバイ)

  • 13.209.71.0/26 for アジアパシフィック (ソウル)

  • 13.229.187.128/26 for アジアパシフィック (シンガポール)

  • 13.211.12.0/26 for アジアパシフィック (シドニー)

  • 13.230.21.0/27, 13.230.21.32/27 for アジアパシフィック (東京)

  • 35.183.92.64/26 for カナダ (中部)

  • 18.194.95.192/27, 18.194.95.224/27, 18.195.48.0/27 for 欧州 (フランクフルト)

  • 34.241.197.32/27, 34.241.197.64/27, 34.241.197.96/27 for 欧州 (アイルランド)

  • 18.130.91.0/26 for 欧州 (ロンドン)

  • 35.180.112.0/26 for 欧州 (パリ)

  • 13.53.191.0/26 for 欧州 (ストックホルム)

  • 15.185.91.64/26 for 中東 (バーレーン)

  • 18.228.1.192/26 for 南米 (サンパウロ)

  • 15.161.135.192/26 for ヨーロッパ (ミラノ)

  • 13.244.165.128/26 for アフリカ (ケープタウン)

助成金 Kinesis Data Firehose HTTPエンドポイントの送信先へのアクセス

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

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

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

重要

Kinesis Data Firehose 使用していない IAM DataDog、MongoDB、New Relicなど、サポート対象のサードパーティサービスプロバイダーが所有するHTTPエンドポイントの宛先にアクセスします。サポート対象のサードパーティサービスプロバイダが所有する特定のHTTPエンドポイントの宛先にアクセスするには、そのサービスプロバイダに連絡して、APIキーまたはからそのサービスへのデータ配信を有効にするために必要なアクセスキーを入手します。 Kinesis 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": [ "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 リソースへのアクセスの許可の詳細については、https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.htmlの「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 の送信先へのアクセス権を Kinesis Firehose に付与する」で説明されているステップを使用して、アカウント A で IAM ロールを作成します。

    注記

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

  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 配信ストリームを作成します。

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

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

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

  2. からアクセスを許可するには IAM 前のステップで作成した役割の Amazon ES 科目 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 または Amazon ES API を使用して、DomainARNClusterEndpoint ではなく Kinesis Data Firehose フィールドを指定します。

注記

1 つの AWS アカウントで配信ストリームを作成し、Amazon ES 送信先は別のアカウントに設定するには、AWS CLI または Kinesis Data Firehose API を使用する必要があります。AWS マネジメントコンソール を使用して、このような種類のクロスアカウント設定を作成することはできません。

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

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 はキー、およびタグの対応する値を表しています。

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