【AWS】同一ロググループでログストリームごとに閲覧権限を分ける方法

この記事を書いたチーム:tenko

はじめに

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

この記事では、AWSのCloudWatch Logsでログストリームの閲覧権限を制御する方法をご紹介します。

方法

IAMポリシーで、特定のログストリームに対する「logs:GetLogEvents」のAllowまたはDenyを定義する。

例

ロググループ:test-log-group
ログストリーム(パターン1):「test-log-stream1-」という文字列が含まれる
ログストリーム(パターン2):「test-log-stream2-」という文字列が含まれる 

パターン1のログストリームのみを閲覧可能とするIAMポリシー例

補足

■Sid

ポリシーステートメントの識別子として、オプションで指定できるIDです。Sidの値はJSONポリシー内で一意である必要があります。 

■Effect

・Allow:許可する
・Deny:拒否する 

■Action

・cloudwatch:GetMetricData:CloudWatchメトリクスデータのバッチ容量を取得し、取得したデータでMetric Mathを行うアクセス許可を付与する
・cloudwatch:ListMetrics:AWSアカウント所有者に保存されている有効なメトリクスのリストを取得するアクセス許可を付与する
・logs:DescribeLogGroups:リクエストを行うAWSアカウントに関連付けられているすべてのロググループを返すアクセス許可を付与する
・logs:DescribeLogStreams:指定されたロググループに関連付けられているすべてのログストリームを返す許可を付与する(※ロググループ単位での指定が必須)
・logs:FilterLogEvents:指定されたロググループから、オプションのフィルターパターンによってフィルタリングされたログイベントを取得する許可を付与する(※ロググループ単位での指定が必須)
・logs:GetLogEvents:指定されたログストリームからログイベントを取得する許可を付与する(※ログストリーム単位での指定が必須)
・logs:StartLiveTail: CloudWatch Logsでライブテールセッションを開始する許可を付与します。(※ロググループ単位での指定が必須)
・logs:StopLiveTail:進行中のライブテールセッションを停止する許可を付与します。

■Resource

・log-group:arn:${Partition}:logs:${Region}:${Account}:log-group:${LogGroupName}
・log-stream:arn:${Partition}:logs:${Region}:${Account}:log-group:${LogGroupName}:log-stream:${LogStreamName}

 

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス