fluentd で S3, Kinesis Streams にログを送るための最低限の IAMポリシー
Written by @ryysud Nov 12, 2017 20:46 · 628 words · 2 minutes read
はじめに
アプリケーションから Amazon S3 と Amazon Kinesis Streams へログを送るために fluetnd の plugin を利用していたのですが、不要な Policy が付与された IAM User の aws key を使い続けてしまっていた(FullAccess のポリシーが付与された IAM User)ため、必要な IAMポリシー のみを付与した IAM User を作成してみました。という記事です。
使用しているプラグインはこちら
- fluent-plugin-s3 v0.8.7(Amazon S3 への書き込み)
- fluent-plugin-kinesis v1.3.0(Amazon Kinesis Streams への書き込み)
fluent-plugin-s3 で S3 へ書き込むために必要な権限を付与した IAMポリシー
my-s3bucket
は自身の環境のものに変更して下さい
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::my-s3bucket"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-s3bucket/*"
}
]
}
fluent-plugin-s3 で Kinesis Streams へ書き込むために必要な権限を付与した IAMポリシー
region
, account-id
, stream-name
は自身の環境のものに変更して下さい
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kinesis:ListStreams",
"kinesis:PutRecords"
],
"Resource": [
"arn:aws:kinesis:region:account-id:stream/stream-name"
]
}
]
}
さいごに
もろもろ検証しながら進めてきましたが、基本的には List と Put のポリシーを付与すれば良いみたいでした。 参考資料に記載したページでの議論を見てみると td-agent.conf の内容によっては S3 Bucket を作成する権限や他の権限も必要みたいですが、基本的には上記の IAMポリシー で(少なくとも自分の環境では)良いかなと思いました。
AWS 初心者ですが今後も勉強続けていきたいと思います ✌(‘ω’✌ )三✌(‘ω’)✌三( ✌’ω’)✌
余談ですが、せっかくなので fluent-plugin-s3 にプルリクエストも投げてみました。 https://github.com/fluent/fluent-plugin-s3/pull/216