翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS サービスからのログ記録を有効にする
多くのサービスは CloudWatch ログにのみログを発行しますが、一部の AWS サービスは Amazon Simple Storage Service または Amazon Data Firehose に直接ログを発行できます。ログの主な要件がこれらのサービスのいずれかでのストレージまたは処理である場合、ログを生成するサービスが追加のセットアップなしでそれらを Amazon S3 または Firehose に直接送信するように簡単に設定できます。
ログが Amazon S3 または Firehose に直接公開された場合でも、料金が適用されます。詳細については、「Amazon 料金」の「ログ」タブの「Vended Logs」を参照してください。 CloudWatch
一部の AWS サービスは、共通のインフラストラクチャを使用してログを送信します。これらのサービスからのロギングを有効にするには、特定の権限を持つユーザーとしてログインする必要があります。さらに、ログの送信を有効にする AWS には、 にアクセス許可を付与する必要があります。
これらのアクセス許可を必要とするサービスの場合、必要なアクセス許可には 2 つのバージョンがあります。これらの追加のアクセス許可を必要とするサービスは、表に [サポートあり [V1 アクセス許可]] および [サポートあり [V2 アクセス許可]] と表示されます。これらの必要な権限については、表の後のセクションを参照してください。
追加のアクセス許可が必要なロギング [V1]
一部の AWS サービスは、共通のインフラストラクチャを使用してログを CloudWatch Logs、Amazon S3、または Firehose に送信します。以下の表にリストされている AWS のサービスがこれらの宛先にログを送信できるようにするには、特定のアクセス許可を持つユーザーとしてログインする必要があります。
さらに、ログの送信を有効にする AWS には、 にアクセス許可を付与する必要があります。 AWS は、ログの設定時にそれらのアクセス許可を自動的に作成できます。または、ログを設定する前に、最初に自分で作成することもできます。クロスアカウント配信では、アクセス許可ポリシーを手動で作成する必要があります。
自分または組織の誰かがログの送信を最初にセットアップするときに、必要なアクセス許可とリソースポリシー AWS を自動的にセットアップすることを選択した場合、このセクションで後述するように、ログの送信をセットアップするユーザーには特定のアクセス許可が必要です。または、リソースポリシーをユーザーが独自に作成することもできます。そうすると、ログの送信を設定するユーザーがそれほど多くのアクセス許可を持つ必要がなくなります。
次の表は、このセクションの情報が適用されるログの種類とログの送信先の概要です。
以下のセクションでは、これらの各送信先について詳しく説明します。
ログに送信された CloudWatch ログ
重要
次のリストのログタイプを CloudWatch Logs に送信するように設定すると、必要に応じて、ログを受信するロググループに関連付けられたリソースポリシー AWS を作成または変更します。詳細については、このセクションを続けてお読みください。
このセクションは、前のセクションの表に記載されているログのタイプが CloudWatch ログに送信される場合に適用されます。
ユーザーアクセス許可
これらのタイプのログを CloudWatch ログに初めて送信するように設定するには、次のアクセス許可を持つアカウントにログインする必要があります。
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 はログへのログの送信を開始するときに、ロググループの次のポリシー 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
許可を持っているという場合は、その文がロググループのリソースポリシーに追加されます。
ロググループリソースポリシーのサイズ制限に関する考慮事項
これらのサービスは、リソースポリシーでログを送信する各ロググループを一覧表示する必要があります。また、 CloudWatch ログリソースポリシーは 5,120 文字に制限されています。多数のロググループにログを送信するサービスは、この制限内で実行される可能性があります。
これを軽減するために、 CloudWatch Logs は、ログを送信しているサービスが使用するリソースポリシーのサイズをモニタリングし、ポリシーが 5,120 文字のサイズ制限に近づくことを検出した場合、そのサービスのリソースポリシー/aws/vendedlogs/*
で CloudWatch を自動的に有効にします。その後、/aws/vendedlogs/
で始まる名前のロググループをこれらのサービスからのログの送信先として使用し始めることができます。
Amazon S3 に送信されたログ
Amazon S3 に送信するログを設定すると、 は、必要に応じてログを受信している S3 バケットに関連付けられたリソースポリシー AWS を作成または変更します。
Amazon S3 に直接発行されたログは、指定する既存のバケットに発行されます。指定したバケットで、5 分おきに 1 つ以上のログが作成されます。
ログを Amazon S3 バケットに初めて配信する場合、ログを配信するサービスはバケットの所有者を記録し、ログがこのアカウントに属するバケットにのみ配信されるようにします。その結果、Amazon S3 バケット所有者を変更するには、元のサービスでログサブスクリプションを再作成または更新する必要があります。
注記
CloudFront は、 S3 にベンダードログを送信する他のサービスとは異なるアクセス許可モデルを使用します。詳細については、「標準ログ記録の設定およびログファイルへのアクセスに必要なアクセス許可」を参照してください。
さらに、 CloudFront アクセスログと別のログソースに同じ S3 バケットを使用する場合、 をバケットACLで有効にすると、このバケットを使用する他のすべてのログソース CloudFront にもアクセス許可が付与されます。
重要
Amazon S3 バケットにログを送信していて、バケットポリシーに NotAction
または NotPrincipal
要素が含まれている場合、バケットにログ配信アクセス許可を自動的に追加し、ログサブスクリプションを作成すると失敗します。ログサブスクリプションを正常に作成するには、バケットポリシーにログ配信アクセス許可を手動で追加してから、ログサブスクリプションを作成する必要があります。詳細については、このセクションの手順を参照してください。
バケットにカスタマーマネージド AWS KMS キーを使用したサーバー側の暗号化がある場合は、カスタマーマネージドキーのキーポリシーも追加する必要があります。詳細については、「Amazon S3」を参照してください。
ユーザーアクセス許可
これらのタイプのログの 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
、このバケットにログIDSが配信されるアカウントのリストを指定します。ではaws:SourceArn
、ログを生成するリソースARNsのリストを の形式で指定します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 SS3-managedキーによるサーバー側の暗号化 (SSE-S3) または AWS Key Management Service (SSE-) に保存されている AWS KMS キーによるサーバー側の暗号化を有効にします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
、このバケットにログIDSが配信されるアカウントのリストを指定します。ではaws:SourceArn
、ログを生成するリソースARNsのリストを の形式で指定しますarn:aws:logs:
。source-region
:source-account-id
:*
Firehose に送信されたログ
このセクションは、前のセクションの表に記載されているログのタイプが Firehose に送信される場合に適用されます。
ユーザーアクセス許可
これらのタイプのログを Firehose に初めて送信するように設定するには、次のアクセス許可を持つアカウントにログインする必要があります。
logs:CreateLogDelivery
firehose:TagDeliveryStream
iam:CreateServiceLinkedRole
これらのタイプのログのいずれかがすでに Firehose に送信されている場合は、これらのタイプのログの別の 1 つを 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 サービスでは、新しい方法を使用してログを送信します。これは、これらのサービスからログ、Amazon S3 CloudWatch 、または Firehose のいずれかまたは複数の宛先へのログ配信を設定できる柔軟な方法です。
作業ログ配信は、次の 3 つの要素で構成されます。
DeliverySource
ログを実際に送信するリソース (複数可) を表す論理オブジェクトである 。DeliveryDestination
は、実際の配信先を表す論理オブジェクトです。配信ソースを配信先に接続する
Delivery
。
サポートされている AWS サービスと送信先間のログ配信を設定するには、以下を実行する必要があります。
を使用して配信ソースを作成しますPutDeliverySource。
を使用して配信先を作成しますPutDeliveryDestination。
クロスアカウントでログを配信する場合は、送信先アカウント PutDeliveryDestinationPolicyで を使用して、送信先に IAM ポリシーを割り当てる必要があります。このポリシーは、アカウント A の配信元からアカウント B の配信先への配信の作成を許可します。クロスアカウント配信の場合は、アクセス許可ポリシーを手動で作成する必要があります。
を使用して、1 つの配信元と 1 CreateDeliveryつの配信先をペアリングして配信を作成します。
以下のセクションでは、V2 プロセスを使用して各タイプの宛先へのログ配信を設定するためにサインインしたときに必要なアクセス許可の詳細について説明します。これらのアクセス許可は、サインインしているIAMロールに付与できます。
重要
ログ生成リソースを削除した後、ログ配信リソースを削除することはお客様の責任です。これを行うには、以下の手順に従います。
DeleteDelivery オペレーション
Delivery
を使用して を削除します。DeleteDeliverySource オペレーション
DeliverySource
を使用して を削除します。削除
DeliverySource
したDeliveryDestination
に関連付けられた がこの特定の にのみ使用されている場合はDeliverySource
、 DeleteDeliveryDestinationsオペレーションを使用して削除できます。
目次
ログに送信された CloudWatch ログ
ユーザーアクセス許可
ログへの CloudWatch ログの送信を有効にするには、次のアクセス許可でサインインする必要があります。
{ "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 はログへのログの送信を開始するときに、ロググループの次のポリシー 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
:*"] } } } ] }
ロググループリソースポリシーのサイズ制限に関する考慮事項
これらのサービスは、リソースポリシーでログを送信する各ロググループを一覧表示する必要があります。また、 CloudWatch ログリソースポリシーは 5,120 文字に制限されています。このため、多数のロググループにログを送信するサービスは、この上限に到達する可能性があります。
これを軽減するために、 CloudWatch Logs は、ログを送信するサービスが使用するリソースポリシーのサイズをモニタリングし、ポリシーが 5,120 文字のサイズ制限に近づくことを検出した場合、そのサービスのリソースポリシー/aws/vendedlogs/*
で CloudWatch を自動的に有効にします。その後、/aws/vendedlogs/
で始まる名前のロググループをこれらのサービスからのログの送信先として使用し始めることができます。
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": "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
:delivery-source*"] } } }, { "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
、このバケットにログIDSが配信されるアカウントのリストを指定します。の場合aws:SourceArn
、ログを生成するリソースARNsのリストを の形式で指定します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 SS3-managedキーによるサーバー側の暗号化 (SSE-S3) または AWS Key Management Service (SSE-) に保存されている AWS KMS キーによるサーバー側の暗号化のいずれかを有効にします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
、このバケットにログIDSが配信されるアカウントのリストを指定します。の場合aws:SourceArn
、ログを生成するリソースARNsのリストを の形式で指定します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
アクションが認可されます。これらのサービスでは、次のポリシーを使用して を置き換えます。service
また、resource-type
適切な値を使用します。これらのフィールドのサービス固有の値については、これらのサービスのドキュメントページ「vended logs」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceLevelAccessForLogDelivery", "Effect": "Allow", "Action": [ "
service
:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:service
:region
:account-id
:resource-type
/*" } ] }
コンソール固有のアクセス許可
前のセクションで説明したアクセス許可に加えて、 の代わりに コンソールを使用してログ配信を設定する場合はAPIs、次の追加のアクセス許可も必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogDeliveryActionsConsoleCWL", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "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 は、アカウント内の Amazon Bedrock ナレッジベースから ARN arn:aws:bedrock を使用してログを配信したいと考えています。region
:AAAAAAAAAAAA
:knowledge-base/XXXXXXXXXX
.
この例では、アカウント 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 は、基盤ナレッジベースを使用して配信ソースを作成します。
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" } ] }
このポリシーは、このリソースをアタッチ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" } ] }
このポリシーは、このリソースをアタッチ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 では、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルですべてのサービスのデータを保護するために役立つツールを提供しています。
CloudWatch Logs がリソースに別のサービスに付与するアクセス許可を制限するにはaws:SourceArn
、リソースポリシーで、aws:SourceAccount
、aws:SourceOrgID
、、および aws:SourceOrgPaths
グローバル条件コンテキストキーを使用することをお勧めします。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 バケット などのアカウント ID が含まれていない場合ARNは、 aws:SourceAccount
と の両方を使用してアクセス許可aws:SourceArn
を制限する必要があります。
混乱した代理問題から保護するために、リソースベースポリシー内のリソースの組織 ID または組織パスを指定しながら、aws:SourceOrgID
または aws:SourceOrgPaths
のグローバル条件コンテキストキーを使用してください。aws:SourceOrgID
または aws:SourceOrgPaths
キーを含むポリシーには正しいアカウントが自動的に組み込まれるため、組織のアカウントを追加、削除、移動する際には手動で更新する必要はありません。
このページの前のセクションにあるポリシーでは、aws:SourceArn
と aws:SourceAccount
グローバル条件コンテキストキーを使って、混乱した代理問題を防ぐ方法を示しています。
CloudWatch AWS マネージドポリシーの更新をログに記録します
このサービスがこれらの変更の追跡を開始してからの CloudWatch ログの AWS マネージドポリシーの更新に関する詳細を表示します。このページの変更に関する自動アラートについては、 CloudWatch ログドキュメント履歴ページのRSSフィードにサブスクライブします。
変更 | 説明 | 日付 |
---|---|---|
AWSServiceRoleForLogDelivery サービスにリンクされたロールポリシー – 既存のポリシーの更新 |
CloudWatch ログが に関連付けられたIAMポリシーのアクセス許可を変更しました AWSServiceRoleForLogDelivery サービスにリンクされたロール。以下の変更が行われました。
|
2021 年 7 月 15 日 |
CloudWatch ログが変更の追跡を開始しました |
CloudWatch ログは AWS 、管理ポリシーの変更の追跡を開始しました。 |
2021 年 6 月 10 日 |