API Gateway のアクセスログを Firehose に直接送信する構成で CMK を使用する場合、kms 権限はどこに付与すればいいですか

API Gateway のアクセスログを Firehose に直接送信する構成で CMK を使用する場合、kms 権限はどこに付与すればいいですか

API Gateway のアクセスログを Firehose に送信する際、SSE-CMK を使用している場合の権限設定について、呼び出し元プリンシパルの特定と KMS キーポリシーへの権限付与方法を解説します。
2026.07.31

困っていた内容

API Gateway のアクセスログの送信先として Amazon Data Firehose を直接指定しています。
Firehose ストリームにカスタマーマネージド KMS キー(SSE-CMK)を設定しており、PutRecord / PutRecordBatch の呼び出し元に kms:GenerateDataKey および kms:Decrypt を付与する必要があります。
この構成での呼び出し元となるプリンシパルが何か、また権限をどこに付与すればよいかが分かりません。

どう対応すればいいの?

呼び出し元となるプリンシパル

API Gateway のアクセスログを Firehose に直接送信する構成では、Firehose への PutRecord / PutRecordBatch の呼び出し元は AWSServiceRoleForAPIGateway というサービスリンクロールとなります。

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-logging-to-kinesis.html#set-up-kinesis-access-logging-permissions

ステージで Firehose アクセスログ記録を有効にすると、API Gateway はアカウントにサービスリンクロールを作成します (ロールがまだ存在しない場合)。このロールは AWSServiceRoleForAPIGateway という名前で、APIGatewayServiceRolePolicy マネージドポリシーがロールにアタッチされます。

権限をどこに付与すればよいか

Firehose ストリームに設定した CMK のキーポリシーに、AWSServiceRoleForAPIGateway の ARN を Principal として直接指定して kms:GenerateDataKey および kms:Decrypt を付与します。
指定する ARN のフォーマットは以下のとおりです。

arn:aws:iam::AWS_ACCOUNT_ID:role/aws-service-role/apigateway.amazonaws.com/AWSServiceRoleForAPIGateway

Firehose で SSE-CMK を使用するには、呼び出し元の IAM ポリシーと KMS キーポリシーの両方でこれらのアクションを許可する必要があります。
ただし、AWSServiceRoleForAPIGateway はサービスリンクロールであるため、アタッチされている IAM ポリシーはユーザー側で変更できません。

IAM ポリシーは変更できないため、KMS キーポリシーに直接権限を付与するようにご対応ください。

https://docs.aws.amazon.com/firehose/latest/dev/encryption.html#sse-with-direct-put

To successfully use CUSTOMER_MANAGED_CMK, both the caller's IAM policy and the KMS key policy must allow kms:GenerateDataKey and kms:Decrypt operations.

参考訳:

CUSTOMER_MANAGED_CMK を正常に使用するには、呼び出し元の IAM ポリシーと KMS キーポリシーの両方が kms:GenerateDataKey および kms:Decrypt オペレーションを許可する必要があります。

参考情報

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-logging-to-kinesis.html

https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/APIGatewayServiceRolePolicy.html

https://docs.aws.amazon.com/ja_jp/firehose/latest/dev/encryption.html


AWSテクニカルサポートノートについて

過去にクラスメソッドのAWS総合支援サービスで頂いたお問合せの中から、通常のAWS利用時でも有益になりうる情報をテクニカルサポートチームがTIPSとしてご紹介しています。技術サポートは、無料でご提供しております。詳細は下記ボタンからご覧ください。

クラスメソッドのAWSサポートの詳細を見る

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事