VPC フローログを S3 バケットへ配信しようとするとアクセスエラーになる
困っていること
VPC フローログを S3 バケットに配信したいのですが、「アクセスエラー ログの送信先にアクセスできません。」と表示され、配信できません。どうしたらいいですか?
どう対応すればいいの?
ログの送信先である S3 バケットの暗号化設定を確認してください。暗号化のタイプが SSE-KMS の場合、KMS キーポリシーに以下の権限を追加する必要があります。
{
"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:*"]
}
}
}
上記ポリシーは、Amazon S3 バケットのサーバー側の暗号化 より引用
やってみた
以下の構成でやってみます。EC2 のネットワークインターフェースに対して VPC フローログを設定します。
KMS キーの作成
S3 暗号化に使用する KMS キーを作成します。
KMS コンソールから「キーの作成」を選びます。
キーのタイプは「対称」、使用法は「暗号化および復号化」を選びます。
その後、任意のエイリアス名を設定し、その他はデフォルト設定とし、何も変更しません。キーポリシーも以下の通りデフォルトのまま使用します。
作成できました。
S3 バケットの作成
VPC フローログの配信先となる S3 バケットを作成します。
基本的にデフォルト設定で作成しますが、作成時の「デフォルトの暗号化」の部分のみ、以下のように「SSE-KMS」を選択します。キーは前述のものを指定します。
作成できました。
EC2, IAM ロール, フローログの作成
EC2 インスタンスの作成, VPC フローログに指定する IAM ロールの作成, 実際のフローログの設定方法については下記ブログを参照し、設定します。(下記ブログにもありますが、IAM ロールの信頼ポリシーの Principal
には vpc-flow-logs.amazonaws.com
を指定してください。)
なお、フローログ設定時の送信先は、前述の S3 バケットを指定します。
フローログの設定が完了しました。しかし、現段階では以下の通りアクセスエラーとなっています。
KMS キーポリシーの修正
今回フローログを配信する S3 は SSE-KMS にて暗号化されているため、以下ドキュメントの内容に従い、キーポリシーを修正します。
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<アカウント ID>:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"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": "<アカウント ID>"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:logs:ap-northeast-1:<アカウント ID>:*"
}
}
}
]
}
動作確認
キーポリシー修正後、ステータスがアクティブに変わりました!(自分の環境だとステータスがアクティブ表示になるまでは 20 分ほどかかっていました。)
S3 バケットを確認すると、ログ書き込みもちゃんとできていました。よかったです。
終わりに
今回は VPC フローログの S3 配信時における「アクセスエラー」を解消してみました。原因はキーポリシーにありましたが、同エラーについては別の要因で発生することもあります。下記ブログもフローログ設定時のアクセスエラーについて記載がありますため、適宜ご参考にしていただければと存じます。
参考情報