翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS サービスからのログ記録を有効にする
多くのサービスは CloudWatch Logs にのみログを発行しますが、一部の AWS サービスは Amazon Simple Storage Service または Amazon Data Firehose に直接ログを発行できます。ログの主な要件がストレージまたはこのいずれかのサービスでの処理である場合、追加の設定を行わずに、サービスで簡単にログを作成し、直接 Amazon S3 または Firehose に配信することができます。
ログが Amazon S3 または Firehose に直接公開される場合でも、料金が適用されます。詳細については、[Logs (ログ)] タブの Amazon CloudWatch 料金表
一部の AWS サービスは、共通のインフラストラクチャを使用してログを送信します。これらのサービスからのロギングを有効にするには、特定の権限を持つユーザーとしてログインする必要があります。さらに、ログの送信を有効にする AWS には、 にアクセス許可を付与する必要があります。
これらのアクセス許可を必要とするサービスの場合、必要なアクセス許可には 2 つのバージョンがあります。これらの追加のアクセス許可を必要とするサービスは、表に [サポートあり [V1 アクセス許可]] および [サポートあり [V2 アクセス許可]] と表示されます。これらの必要な権限については、表の後のセクションを参照してください。
追加のアクセス許可が必要なロギング [V1]
一部の AWS サービスでは、共通のインフラストラクチャを使用して CloudWatch Logs、Amazon S3、または Firehose にログを送信します。以下の表にリストされている AWS のサービスがこれらの宛先にログを送信できるようにするには、特定のアクセス許可を持つユーザーとしてログインする必要があります。
さらに、ログの送信を有効にする AWS には、アクセス許可を に付与する必要があります。 は、ログの設定時にそれらのアクセス許可を自動的に作成 AWS できます。または、ログ記録を設定する前に最初に自分で作成できます。クロスアカウント配信では、アクセス許可ポリシーを手動で作成する必要があります。
組織内のユーザーが最初にログの送信を設定するときに、 で必要なアクセス許可とリソースポリシー AWS を自動的に設定することを選択した場合、ログの送信を設定するユーザーには、このセクションで後述する特定のアクセス許可が必要です。または、リソースポリシーをユーザーが独自に作成することもできます。そうすると、ログの送信を設定するユーザーがそれほど多くのアクセス許可を持つ必要がなくなります。
次の表は、このセクションの情報が適用されるログの種類とログの送信先の概要です。
以下のセクションでは、これらの各送信先について詳しく説明します。
CloudWatch Logs に送信されたログ
重要
以下のリストにあるログタイプを CloudWatch Logs に設定するようにセットアップすると、 AWS がそのログを受け取るロググループに関連付けられたリソースポリシーを必要に応じて作成または変更します。詳細については、このセクションを続けてお読みください。
このセクションは、前のセクションの表に掲載されているタイプのログが CloudWatch Logs に送信される場合に適用されます。
ユーザーアクセス許可
これらのタイプのログの CloudWatch Logs への送信を初めてセットアップするには、以下のアクセス許可でアカウントにログインする必要があります。
-
logs:CreateLogDelivery
-
logs:PutResourcePolicy
-
logs:DescribeResourcePolicies
-
logs:DescribeLogGroups
注記
logs:DescribeLogGroups
、logs:DescribeResourcePolicies
、またはlogs:PutResourcePolicy
アクセス許可を指定する場合は、1 つのロググループ名のみを指定するのではなく、そのResource
行の ARN で*
ワイルドカードを使用するように設定してください。例:"Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*"
これらのタイプのログのいずれかが CloudWatch Logs のロググループにすでに送信されている場合、これらの中の別のログを同じロググループに送信するためのセットアップに必要となるのは logs:CreateLogDelivery
アクセス許可のみです。
ロググループのリソースポリシー
ログが送信されているロググループには、特定のアクセス許可が含まれるリソースポリシーが必要です。現在ロググループにリソースポリシーがなく、ロギングをセットアップしているユーザーがロググループに対する logs:PutResourcePolicy
、logs:DescribeResourcePolicies
、および logs:DescribeLogGroups
アクセス許可を持っているという場合は、CloudWatch Logs へのログの送信を開始するときに AWS
が以下のポリシーを自動的に作成します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:
us-east-1
:0123456789
:log-group:my-log-group
:log-stream:*" ], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } } ] }
ロググループにリソースポリシーがあるが、上記のポリシーにある文がそのポリシーに含まれておらず、ロギングをセットアップしているユーザーがロググループに対する logs:PutResourcePolicy
、logs:DescribeResourcePolicies
、および logs:DescribeLogGroups
許可を持っているという場合は、その文がロググループのリソースポリシーに追加されます。
Amazon S3 に送信されたログ
Amazon S3 にログを送信するように設定すると、 は、必要に応じてログを受信している S3 バケットに関連付けられたリソースポリシー AWS を作成または変更します。
Amazon S3 に直接発行されたログは、指定する既存のバケットに発行されます。指定したバケットで、5 分おきに 1 つ以上のログが作成されます。
ログを Amazon S3 バケットに初めて配信する場合、ログを配信するサービスはバケットの所有者を記録し、ログがこのアカウントに属するバケットにのみ配信されるようにします。その結果、Amazon S3 バケット所有者を変更するには、元のサービスでログサブスクリプションを再作成または更新する必要があります。
注記
CloudFront は、S3 に vended log を送信する他のサービスとは異なるアクセス許可モデルを使用します。詳細については、「標準ログ記録の設定およびログファイルへのアクセスに必要なアクセス許可」を参照してください。
さらに、CloudFront アクセスログと別のログソースに同じ S3 バケットを使用する場合、CloudFront のバケットで ACL を有効にすると、このバケットを使用する他のすべてのログソースにもアクセス許可が付与されます。
重要
Amazon S3 バケットにログを送信していて、バケットポリシーに NotAction
または NotPrincipal
要素が含まれている場合、バケットにログ配信アクセス許可を自動的に追加し、ログサブスクリプションを作成すると失敗します。ログサブスクリプションを正常に作成するには、バケットポリシーにログ配信アクセス許可を手動で追加してから、ログサブスクリプションを作成する必要があります。詳細については、このセクションの指示を参照してください。
バケットにカスタマーマネージド AWS KMS キーを使用したサーバー側の暗号化がある場合は、カスタマーマネージドキーのキーポリシーも追加する必要があります。詳細については、「Amazon S3」を参照してください。
レプリケート先バケットで SSE-KMS が有効になっていてバケットキーが有効になっている場合、アタッチされたカスタマーマネージド KMS キーポリシーはすべてのリクエストで想定どおりに機能しなくなります。詳細については、「Amazon S3 バケットキーを使用した SSE-KMS のコスト削減」を参照してください。
カスタマーマネージド AWS KMS キーで販売ログと S3 暗号化を使用している場合は、バケットを設定するときに AWS KMS キー ID の代わりに完全修飾キー ARN を使用する必要があります。詳細については、「put-bucket-encryption」を参照してください。
ユーザーアクセス許可
これらのタイプのログの Amazon S3 への送信を初めてセットアップするには、以下のアクセス許可でアカウントにログインする必要があります。
logs:CreateLogDelivery
S3:GetBucketPolicy
S3:PutBucketPolicy
これらのタイプのログのいずれかが Amazon S3 バケットにすでに送信されている場合、これらの中の別のログを同じバケットに送信するためのセットアップに必要となるのは logs:CreateLogDelivery
アクセス許可のみです。
S3 バケットのリソースポリシー
ログが送信されている S3 バケットには、特定のアクセス許可が含まれるリソースポリシーが必要です。バケットに現在リソースポリシーがなく、ログ記録を設定するユーザーにバケットの S3:GetBucketPolicy
および アクセスS3:PutBucketPolicy
許可がある場合、Amazon S3 へのログの送信を開始すると、 によって次のポリシー AWS が自動的に作成されます。
{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["
0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/account-ID
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } } ] }
前のポリシーでは、aws:SourceAccount
にはこのバケットにログが配信されるアカウント ID のリストを指定します。aws:SourceArn
には、ログを生成するリソースの ARN のリストを arn:aws:logs:
の形式で指定します。source-region
:source-account-id
:*
バケットにリソースポリシーがあるが、上記のポリシーにあるステートメントがそのポリシーに含まれておらず、ロギングをセットアップしているユーザーがバケットに対する S3:GetBucketPolicy
および S3:PutBucketPolicy
アクセス許可を持っているという場合は、そのステートメントがバケットのリソースポリシーに追加されます。
注記
アクセスs3:ListBucket
許可 AWS CloudTrail が に付与されていない場合、 にAccessDenied
エラーが表示されることがありますdelivery.logs.amazonaws.com
。CloudTrail ログにこのようなエラーが表示されないようにするには、s3:ListBucket
が delivery.logs.amazonaws.com
にアクセスアクセス許可を付与し、前述のバケットポリシーで設定された s3:GetBucketAcl
アクセス許可で示されている Condition
パラメータを含める必要があります。これを簡単にするには、新しい Statement
を作成する代わりに、AWSLogDeliveryAclCheck
を “Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]
であるように直接更新することができます
Amazon S3 バケットのサーバー側の暗号化
Amazon S3 バケット内のデータを保護するには、Amazon S3-managedキーによるサーバー側の暗号化 (SSE-S3) または に保存されている AWS KMS キーによるサーバー側の暗号化 AWS Key Management Service (SSE-KMS) を有効にします。詳細については、「サーバー側の暗号化を使用したデータの保護」を参照してください。
SSE-S3 を選択した場合、追加の設定は必要ありません。Amazon S3 が暗号化キーを処理します。
警告
SSE-KMS を選択した場合、このシナリオでは マネージドキーの使用はサポートされていないため、カスタマー AWS マネージドキーを使用する必要があります。 AWS マネージドキーを使用して暗号化を設定すると、ログは読み取り不可能な形式で配信されます。
カスタマーマネージド AWS KMS キーを使用する場合、バケット暗号化を有効にするときに、カスタマーマネージドキーの Amazon リソースネーム (ARN) を指定できます。ログデリバリーアカウントが S3 バケットに書き込めるように、カスタマーマネージドキーのキーポリシー (S3 バケットのバケットポリシーではありません) に次を追加する必要があります。
SSE-KMS を選択した場合、このシナリオでは マネージドキーの使用はサポートされていないため、カスタマー AWS マネージドキーを使用する必要があります。カスタマーマネージド AWS KMS キーを使用する場合、バケット暗号化を有効にするときに、カスタマーマネージドキーの Amazon リソースネーム (ARN) を指定できます。ログデリバリーアカウントが S3 バケットに書き込めるように、カスタマーマネージドキーのキーポリシー (S3 バケットのバケットポリシーではありません) に次を追加する必要があります。
{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["
0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } }
aws:SourceAccount
には、このバケットにログが配信されるアカウント ID のリストを指定します。aws:SourceArn
には、ログを生成するリソースの ARN のリストを arn:aws:logs:
の形式で指定します。source-region
:source-account-id
:*
Firehose に送信されるログ
このセクションは、前のセクションの表に掲載されているタイプのログが Firehose に送信される場合に適用されます。
ユーザーアクセス許可
これらのタイプのログの Firehose への送信を初めて設定するには、以下のアクセス許可を使用してアカウントにログインする必要があります。
logs:CreateLogDelivery
firehose:TagDeliveryStream
iam:CreateServiceLinkedRole
これらのタイプのログのいずれかが Firehose に既に送信されている場合、これらのタイプの別のログを Firehose に送信するように設定するには、logs:CreateLogDelivery
および firehose:TagDeliveryStream
許可のみが必要です。
アクセス許可のために使用される IAM ロール
Firehose はリソースポリシーを使用しないため、 はこれらのログを Firehose に送信するように設定するときに IAM ロール AWS を使用します。 は、 という名前のサービスにリンクされたロール AWS を作成しますAWSServiceRoleForLogDelivery。このサービスリンクロールには、以下のアクセス許可が含まれます。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:ListTagsForDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/LogDeliveryEnabled": "true" } }, "Effect": "Allow" } ] }
このサービスにリンクされたロールは、 LogDeliveryEnabled
タグが に設定されているすべての Firehose 配信ストリームにアクセス許可を付与しますtrue
。 は、ログ記録を設定するときに、このタグを送信先配信ストリームに AWS 付与します。
このサービスリンクロールには、delivery.logs.amazonaws.com
サービスプリンシパルが必要なサービスリンクロールを引き受けることを可能にする信頼ポリシーもあります。以下がその信頼ポリシーです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
追加のアクセス許可が必要なロギング [V2]
一部の AWS サービスでは、新しい メソッドを使用してログを送信します。これは、これらのサービスから CloudWatch Logs、Amazon S3、または Firehose のうち 1 つ以上の宛先へのログ配信を設定できる柔軟な方法です。
動作しているログ配信は、次の 3 つの要素で構成されます。
実際にログを送信するリソースを表す論理オブジェクトである
DeliverySource
。実際の配信先を表す論理オブジェクトである
DeliveryDestination
。配信ソースを配信先に接続する
Delivery
。
サポートされている AWS サービスと送信先間のログ配信を設定するには、以下を実行する必要があります。
PutDeliverySource を使用して配信ソースを作成します。
PutDeliveryDestination を使用して配信先を作成します。
クロスアカウントでログを配信する場合は、送信先アカウントで PutDeliveryDestinationPolicy を使用して、送信先に IAM ポリシーを割り当てる必要があります。このポリシーは、アカウント A の配信ソースからアカウント B の配信先への配信の作成を許可します。クロスアカウント配信の場合は、アクセス許可ポリシーを手動で作成する必要があります。
CreateDelivery を使用して、1 つの配信元と 1 つの配信先だけをペアリングして配信を作成します。
以下のセクションでは、V2 プロセスを使用して各タイプの宛先へのログ配信を設定するためにサインインしたときに必要なアクセス許可の詳細について説明します。これらのアクセス許可は、サインインに使用する IAM ロールに付与できます。
重要
ログ生成リソースを削除した後、ログ配信リソースを削除することはお客様の責任です。そのためには、以下の手順を実行します。
DeleteDelivery オペレーションを使用して
Delivery
を削除します。DeleteDeliverySource オペレーションを使用して
DeliverySource
を削除します。削除した
DeliverySource
に関連付けられたDeliveryDestination
がこの特定のDeliverySource
にのみ使用されている場合は、DeleteDeliveryDestinations オペレーションを使用して削除できます。
目次
CloudWatch Logs に送信されたログ
ユーザーアクセス許可
CloudWatch Logs へのログ送信を有効にするには、次のアクセス許可でサインインする必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyCWL", "Effect": "Allow", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region
:account-id
:*" ] } ] }
ロググループのリソースポリシー
ログが送信されているロググループには、特定のアクセス許可が含まれるリソースポリシーが必要です。現在ロググループにリソースポリシーがなく、ロギングをセットアップしているユーザーがロググループに対する logs:PutResourcePolicy
、logs:DescribeResourcePolicies
、および logs:DescribeLogGroups
アクセス許可を持っているという場合は、CloudWatch Logs へのログの送信を開始するときに AWS
が以下のポリシーを自動的に作成します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:
us-east-1
:0123456789
:log-group:my-log-group
:log-stream:*" ], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } } ] }
Amazon S3 に送信されたログ
ユーザーアクセス許可
Amazon S3 へのログ送信を有効にするには、次のアクセス許可でサインインする必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyS3", "Effect": "Allow", "Action": [ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "arn:aws:s3:::bucket-name" } ] }
ログが送信されている S3 バケットには、特定のアクセス許可が含まれるリソースポリシーが必要です。バケットに現在リソースポリシーがなく、ログ記録を設定するユーザーにバケットの S3:GetBucketPolicy
および アクセスS3:PutBucketPolicy
許可がある場合、Amazon S3 へのログの送信を開始すると、 によって次のポリシー AWS が自動的に作成されます。
{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/account-ID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:delivery-source:*"] } } } ] }
前のポリシーでは、aws:SourceAccount
にはこのバケットにログが配信されるアカウント ID のリストを指定します。aws:SourceArn
には、ログを生成するリソースの ARN のリストを arn:aws:logs:
の形式で指定します。source-region
:source-account-id
:*
バケットにリソースポリシーがあるが、上記のポリシーにあるステートメントがそのポリシーに含まれておらず、ロギングをセットアップしているユーザーがバケットに対する S3:GetBucketPolicy
および S3:PutBucketPolicy
アクセス許可を持っているという場合は、そのステートメントがバケットのリソースポリシーに追加されます。
注記
アクセスs3:ListBucket
許可 AWS CloudTrail が に付与されていない場合、 にAccessDenied
エラーが表示されることがありますdelivery.logs.amazonaws.com
。CloudTrail ログにこのようなエラーが表示されないようにするには、s3:ListBucket
が delivery.logs.amazonaws.com
にアクセスアクセス許可を付与し、前述のバケットポリシーで設定された s3:GetBucketAcl
アクセス許可で示されている Condition
パラメータを含める必要があります。これを簡単にするには、新しい Statement
を作成する代わりに、AWSLogDeliveryAclCheck
を “Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]
であるように直接更新することができます
Amazon S3 バケットのサーバー側の暗号化
Amazon S3 バケット内のデータを保護するには、Amazon S3-managedキーによるサーバー側の暗号化 (SSE-S3) または に保存されている AWS KMS キーによるサーバー側の暗号化 AWS Key Management Service (SSE-KMS) を有効にします。詳細については、「サーバー側の暗号化を使用したデータの保護」を参照してください。
SSE-S3 を選択した場合、追加の設定は必要ありません。Amazon S3 が暗号化キーを処理します。
警告
SSE-KMS を選択した場合、このシナリオでは マネージドキーの使用はサポートされていないため、カスタマー AWS マネージドキーを使用する必要があります。 AWS マネージドキーを使用して暗号化を設定すると、ログは読み取り不可能な形式で配信されます。
カスタマーマネージド AWS KMS キーを使用する場合、バケット暗号化を有効にするときに、カスタマーマネージドキーの Amazon リソースネーム (ARN) を指定できます。ログデリバリーアカウントが S3 バケットに書き込めるように、カスタマーマネージドキーのキーポリシー (S3 バケットのバケットポリシーではありません) に次を追加する必要があります。
SSE-KMS を選択した場合、このシナリオでは マネージドキーの使用はサポートされていないため、カスタマー AWS マネージドキーを使用する必要があります。カスタマーマネージド AWS KMS キーを使用する場合、バケット暗号化を有効にするときに、カスタマーマネージドキーの Amazon リソースネーム (ARN) を指定できます。ログデリバリーアカウントが S3 バケットに書き込めるように、カスタマーマネージドキーのキーポリシー (S3 バケットのバケットポリシーではありません) に次を追加する必要があります。
{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["
0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:delivery-source:*"] } } }
aws:SourceAccount
には、このバケットにログが配信されるアカウント ID のリストを指定します。aws:SourceArn
には、ログを生成するリソースの ARN のリストを arn:aws:logs:
の形式で指定します。source-region
:source-account-id
:*
Firehose に送信されるログ
ユーザーアクセス許可
Firehose へのログ送信を有効にするには、次のアクセス許可を使用してサインインする必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyFH", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": [ "arn:aws:firehose:region
:account-id
:deliverystream/*" ] }, { "Sid": "CreateServiceLinkedRole", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::account-id
:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery" } ] }
リソースのアクセス許可のために使用される IAM ロール
Firehose はリソースポリシーを使用しないため、 はこれらのログを Firehose に送信するように設定するときに IAM ロール AWS を使用します。 は、 という名前のサービスにリンクされたロール AWS を作成しますAWSServiceRoleForLogDelivery。このサービスリンクロールには、以下のアクセス許可が含まれます。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:ListTagsForDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/LogDeliveryEnabled": "true" } }, "Effect": "Allow" } ] }
このサービスにリンクされたロールは、 LogDeliveryEnabled
タグが に設定されているすべての Firehose 配信ストリームにアクセス許可を付与しますtrue
。 は、ログ記録を設定するときに、このタグを送信先配信ストリームに AWS 付与します。
このサービスリンクロールには、delivery.logs.amazonaws.com
サービスプリンシパルが必要なサービスリンクロールを引き受けることを可能にする信頼ポリシーもあります。以下がその信頼ポリシーです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
サービス固有のアクセス許可
前のセクションに記載されている送信先固有のアクセス許可に加えて、一部のサービスでは、セキュリティの追加のレイヤーとして、お客様がリソースからログを送信することを許可する明示的な承認が必要です。これにより、そのサービス内でログを記録したリソースの AllowVendedLogDeliveryForResource
アクションが承認されます。これらのサービスでは、次のポリシーを使用し、サービス
とリソースタイプ
を適切な値に置き換えます。これらのフィールドのサービス固有の値については、これらのサービスの vended log に関するドキュメントページを参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceLevelAccessForLogDelivery", "Effect": "Allow", "Action": [ "
service
:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:service
:region
:account-id
:resource-type
/*" } ] }
コンソール固有のアクセス許可
API ではなくコンソールを使用してログ配信を設定する場合は、前のセクションに記載されているアクセス許可に加えて、以下の追加アクセス許可も必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogDeliveryActionsConsoleCWL", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:CreateLogGroups" ], "Resource": [ "arn:aws:logs:us-east-1:
111122223333
:log-group:*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleS3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleFH", "Effect": "Allow", "Action": [ "firehose:ListDeliveryStreams", "firehose:DescribeDeliveryStream" ], "Resource": [ "*" ] } ] }
アカウント間の配信の例
この例では、2 つのアカウントが関係しています。ログ生成リソースを持つアカウントはアカウント A、ID: AAAAAAAAAAAA
、ログ消費リソースを持つアカウントはアカウント B、ID: BBBBBBBBBBBB
です。
アカウント A は、ARN arn:aws:bedrock:region
:AAAAAAAAAAAA
:knowledge-base/XXXXXXXXXX
を使用して、アカウントの Amazon Bedrock ナレッジベースからログを配信したいと考えています。
この例では、アカウント A には次のアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowVendedLogDeliveryForKnowledgeBase", "Effect": "Allow", "Action": [ "bedrock:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:bedrock:
region
:AAAAAAAAAAAA
:knowledge-base/XXXXXXXXXX
" }, { "Sid": "CreateLogDeliveryPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliverySource", "logs:CreateDelivery" ], "Resource": [ "arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:*", "arn:aws:logs:region
:AAAAAAAAAAAA
:delivery:*", "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:*" ] } ] }
配信ソースを作成する
まず、アカウント A は、Bedrock ナレッジベースを使用して配信ソースを作成します。
aws logs put-delivery-source --name my-delivery-source --log-type APPLICATION_LOGS --resource-arn arn:aws:bedrock:
region
:AAAAAAAAAAAA
:knowledge-base/XXXXXXXXXX
次に、アカウント B は、次のいずれかのフローを使用して配信先を作成する必要があります。
Amazon S3 バケットへの配信を設定する
アカウント B は ARN arn:aws:s3:::amzn-s3-demo-bucket を使用して S3 バケットでログを受信したいと考えています。この例の場合、アカウント B には次のアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutLogDestinationPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:*" } ] }
バケットポリシーには、次のアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogsDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/
AAAAAAAAAAAA
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["AAAAAAAAAAAA
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:my-delivery-source"] } } } ] }
バケットが SSE-KMS で暗号化されている場合は、 AWS KMS キーポリシーに適切なアクセス許可があることを確認してください。例えば、KMS キーが arn:aws:kms:
の場合、以下を使用します。region
:BBBBBBBBBBBB
:key/X
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogsGenerateDataKey", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" } "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:
region
:BBBBBBBBBBBB
:key/X
", "Condition": { "StringEquals": { "aws:SourceAccount": ["AAAAAAAAAAAA
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:my-delivery-source"] } } } ] }
アカウント B は、S3 バケットを宛先リソースとして配信先を作成できます。
aws logs put-delivery-destination --name my-s3-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket"
次に、アカウント B は新しく作成された配信先に配信先ポリシーを作成し、アカウント A がログ配信を作成するアクセス許可を付与します。新しく作成された配信先に追加されるポリシーは次のとおりです。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "
AAAAAAAAAAAA
" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:my-s3-delivery-destination" } ] }
このポリシーは、アカウント B のコンピュータに destination-policy-s3.json
として保存されます。このリソースをアタッチするために、アカウント B は次のコマンドを実行します。
aws logs put-delivery-destination-policy --delivery-destination-name my-s3-delivery-destination --delivery-destination-policy file://destination-policy-s3.json
最後に、アカウント A は配信を作成し、アカウント A の配信ソースをアカウント B の配信先にリンクします。
aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:my-s3-delivery-destination
Firehose ストリームへの配信を設定する
この例では、アカウント B は Firehose ストリームでログを受信したいと考えています。Firehose ストリームには次の ARN があり、DirectPut 配信ストリームタイプを使用するように設定されています。
arn:aws:firehose:
region
:BBBBBBBBBBBB
:deliverystream/X
この例では、アカウント B には次のアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFirehoseCreateSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::
BBBBBBBBBBBB
:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery", }, { "Sid": "AllowFirehoseTagging", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": "arn:aws:firehose:region
:BBBBBBBBBBBB
:deliverystream/X
" }, { "Sid": "AllowFirehoseDeliveryDestination", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:*" } ] }
Firehose ストリームのタグ LogDeliveryEnabled
は true
に設定する必要があります。
その後、アカウント B は、Firehose ストリームを宛先リソースとして配信先を作成します。
aws logs put-delivery-destination --name my-fh-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:firehose:
region
:BBBBBBBBBBBB
:deliverystream/X
"
次に、アカウント B は新しく作成された配信先に配信先ポリシーを作成し、アカウント A がログ配信を作成するアクセス許可を付与します。新しく作成された配信先に追加されるポリシーは次のとおりです。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "
AAAAAAAAAAAA
" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:my-fh-delivery-destination" } ] }
このポリシーは、アカウント B のコンピュータに destination-policy-fh.json
として保存されます。このリソースをアタッチするために、アカウント B は次のコマンドを実行します。
aws logs put-delivery-destination-policy --delivery-destination-name my-fh-delivery-destination --delivery-destination-policy file://destination-policy-fh.json
最後に、アカウント A は配信を作成し、アカウント A の配信ソースをアカウント B の配信先にリンクします。
aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:my-fh-delivery-destination
サービス間での不分別な代理処理の防止
混乱した代理問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。では AWS、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、 AWS では、アカウントのリソースへのアクセス権が付与されたサービスプリンシパルで、すべてのサービスのデータを保護するために役立つツールを提供しています。
リソースポリシーで aws:SourceArn
、aws:SourceAccount
、aws:SourceOrgID
、aws:SourceOrgPaths
のグローバル条件コンテキストキーを使用して、CloudWatch Logs が別のサービスに付与する許可をそのリソースに制限することをお勧めします。1 つのリソースだけをクロスサービスのアクセスに関連付ける場合は、aws:SourceArn
を使用します。アカウント内の任意のリソースをクロスサービスの使用に関連付ける場合は、aws:SourceAccount
を使用します。組織内の任意のアカウントの任意のリソースをクロスサービスの使用に関連付ける場合は、aws:SourceOrgID
を使用します。 AWS Organizations パス内の任意のアカウントのリソースをクロスサービスの使用に関連付ける場合は、aws:SourceOrgPaths
を使用します。パスの使用と理解の詳細については、AWS Organizations 「エンティティパスを理解する」を参照してください。
混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定して、aws:SourceArn
グローバル条件コンテキストキーを使用することです。リソースの完全な ARN が不明な場合や、複数のリソースを指定する場合には、グローバルコンテキスト条件キー aws:SourceArn
で、ARN の未知部分を示すためにワイルドカード文字 (*
) を使用します。例えば、arn:aws:
。servicename
:*:123456789012
:*
aws:SourceArn
の値に Amazon S3 バケット ARN などのアカウント ID が含まれていない場合は、両方の aws:SourceAccount
と aws:SourceArn
を使用して、アクセス許可を制限する必要があります。
混乱した代理問題から保護するために、リソースベースポリシー内のリソースの組織 ID または組織パスを指定しながら、aws:SourceOrgID
または aws:SourceOrgPaths
のグローバル条件コンテキストキーを使用してください。aws:SourceOrgID
または aws:SourceOrgPaths
キーを含むポリシーには正しいアカウントが自動的に組み込まれるため、組織のアカウントを追加、削除、移動する際には手動で更新する必要はありません。
このページの前のセクションにあるポリシーでは、aws:SourceArn
と aws:SourceAccount
グローバル条件コンテキストキーを使って、混乱した代理問題を防ぐ方法を示しています。
AWS マネージドポリシーに対する CloudWatch Logs の更新
このサービスがこれらの変更の追跡を開始してからの CloudWatch Logs の AWS マネージドポリシーの更新に関する詳細を表示します。このページの変更に関する自動通知を入手するには、CloudWatch Logs ドキュメントの履歴ページから、RSS フィードにサブスクライブしてください。
変更 | 説明 | 日付 |
---|---|---|
AWSServiceRoleForLogDelivery サービスにリンクされたロールポリシー – 既存のポリシーに更新 |
CloudWatch Logs で AWSServiceRoleForLogDelivery サービスにリンクされたロールに関連付けられた IAM ポリシーの許可が変更されました。以下の変更が行われました。
|
2021 年 7 月 15 日 |
CloudWatch Logs が変更の追跡を開始しました |
CloudWatch Logs は AWS 、管理ポリシーの変更の追跡を開始しました。 |
2021 年 6 月 10 日 |