share facebook facebook twitter menu hatena pocket slack

2019.04.01 MON

CloudWatch Logsの特定のロググループを特定のIPからのみ参照可能にする

木檜 和明

WRITTEN BY 木檜 和明

セキュリティ要件などでCloudWatch Logsの特定のロググループを特定のIPからのみ参照可能にしたい場合は、IAMの以下の2つのポリシーを対象となるユーザやグループにアタッチすればよい。

※ ただしAWSの他のサービスからアクセスが必要な場合はこの方法は使えないので注意が必要

  1. CloudWatchLogsFullAccessやCloudWatchLogsReadOnlyAccessのようなCloudWatch Logsにアクセスできるポリシー、あるいはそれに類するポリシー
  2. 指定したロググループに対して特定のIPからのみアクセス可能とするポリシー(新規作成)
    例) 「ng」というロググループに対してSourceIpで指定したIPからのみアクセス可能とする
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "logs:DescribeLogStreams",
            "Resource": "arn:aws:logs:<リージョン>:<AWSアカウント>:log-group:ng:*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "xxx.xxx.xxx.xxx"
                }
            }
        }
    ]
}

実行例

例えば以下の2つのロググループ/ログストリームが存在する状態で上記のポリシーを適用する。

  • ok/ok_test
  • ng/ng_test

この状態でロググループの一覧表示とログストリームの参照を行うと以下のような挙動となる。

  • ロググループ一覧表示(両方表示される)
$ aws logs describe-log-groups
{
    "logGroups": [
        {
            "arn": "arn:aws:logs:xxxxxxxxxxxx:xxxxxxxxxxxx:log-group:ng:*", 
            "creationTime": 1551426635634, 
            "metricFilterCount": 0, 
            "logGroupName": "ng", 
            "storedBytes": 0
        }, 
        {
            "arn": "arn:aws:logs:xxxxxxxxxxxx:xxxxxxxxxxxx:log-group:ok:*", 
            "creationTime": 1551426626316, 
            "metricFilterCount": 0, 
            "logGroupName": "ok", 
            "storedBytes": 0
        }
    ]
}
  • ログストリーム参照(どのIPからでも参照可能)
$ aws logs describe-log-streams --log-group-name ok
{
    "logStreams": [
        {
            "creationTime": 1551426648336, 
            "arn": "arn:aws:logs:xxxxxxxxxxxx:xxxxxxxxxxxx:log-group:ok:log-stream:ok_test", 
            "logStreamName": "ok_test", 
            "storedBytes": 0
        }
    ]
}
  • ログストリーム参照(特定のIPからのみ参照可能)
$ aws logs describe-log-streams --log-group-name ng
An error occurred (AccessDeniedException) when calling the DescribeLogStreams operation: User: arn:aws:iam::xxxxxxxxxxxx:user/xxxx is not authorized to perform: logs:DescribeLogStreams on resource: arn:aws:logs:xxxxxxxxxxxx:xxxxxxxxxxxx:log-group:ng:log-stream: with an explicit deny

参考サイト

送信元 IP に基づいて AWS へのアクセスを拒否する (Amazon Web Services)

元記事はこちら

CloudWatch Logsの特定のロググループを特定のIPからのみ参照可能にする

木檜 和明

木檜 和明

遠くのクラウドと手元のIoTデバイス、両エッジをつないだものづくりがしたいと妄想中。Arduinoのコミュニテイやってます。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。