

# フローログのための Amazon S3 バケットのアクセス許可
<a name="flow-logs-s3-permissions"></a>

デフォルトでは、Amazon S3 バケットとそれに含まれているオブジェクトはプライベートです。バケット所有者のみが、そのバケットとそれに含まれているオブジェクトにアクセスできます。ただし、バケット所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。

フローログを作成するユーザーがバケットを所有し、そのバケットに `PutBucketPolicy` および `GetBucketPolicy` 許可を持っている場合、次のポリシーが自動的にそのバケットにアタッチされます。このポリシーは、バケットにアタッチされている既存のポリシーを上書きします。

それ以外の場合は、バケット所有者が、フローログ作成者の AWS アカウント ID を指定して、このポリシーをバケットに追加しなければ、フローログの作成は失敗します。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットポリシーの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:*"
                }
            }
        },
        {
            "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": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:*"
                }
            }
        }
    ]
}
```

------

*my-s3-arn* に指定する ARN は、Hive と互換性のある S3 のプレフィックスを使用するかどうかによって異なります。
+ デフォルトのプレフィックス

  ```
  arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_id/*
  ```
+ Hive 互換の S3 プレフィックス

  ```
  arn:aws:s3:::bucket_name/optional_folder/AWSLogs/aws-account-id=account_id/*
  ```

ベストプラクティスは、個々の AWS アカウント の ARN ではなく、ログ配信サービスプリンシパルに、これらのアクセス許可を付与することです。また、`aws:SourceAccount` および `aws:SourceArn` 条件キーを使用して、[混乱した使節の問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)から保護することもベストプラクティスです。ソースアカウントはフローログの所有者であり、ソース ARN は、ログサービスのワイルドカード (\$1) ARN です。

ログ配信サービスは、`HeadBucket` Amazon S3 API アクションを呼び出して、S3 バケットの存在と場所を確認することに注意してください。このアクションを呼び出すアクセス許可をログ配信サービスに付与する必要はありません。S3 バケットとその場所が確認できない場合でも、VPC フローログが配信されます。ただし、CloudTrail ログの `HeadBucket` への呼び出しには `AccessDenied` エラーが発生します。