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 クラスターへのアクセス権を付与する方法と、送信先として 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 がロールを引き受けることができるように、次の信頼ポリシーをそのロールにアタッチします。ポリシーを編集し、account-id をお客様の AWS アカウント ID に置き換えます。こうすることで、お客様のみが Kinesis Data Firehose による IAM ロールの引き受けをリクエストできます。

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

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

データ形式変換のために 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 リソースへのアクセスの許可の詳細については、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

  • AWS GovCloud (米国東部) の場合は 18.253.138.96/27

  • AWS GovCloud (US-West) の場合は 52.61.204.160/27

  • カナダ (中部) の場合は 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

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 リソースへのアクセスの許可の詳細については、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 リソースへのアクセスの許可の詳細については、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

  • AWS GovCloud (米国東部) の場合は 18.253.138.192/26

  • AWS GovCloud (US-West) の場合は 52.61.204.192/26

  • アジアパシフィック (香港) の場合は 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

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 ロールからのアクセスを許可するには、アカウント B に Amazon ES ポリシーを作成します。例として、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 ポリシー要素: Condition」を参照してください。

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