Help us understand the problem. What is going on with this article?

SORACOM Napterの監査ログをcliで取得してみる

これは

2019/10/9に、SORACOM Napterの監査ログを取得できる機能がリリースされました。
SORACOMエンジニアブログでは、WEBコンソールから確認する手順が紹介されていますが、今回はこれをcliから行ってみようと思います。

なお、Napterをcliから使う方法は「SORACOM Napterをcliから使ってみる」を参照してください。
また、本機能を利用するにはcliのバージョンは0.4.9以上にしてください。

Napterで接続する

まずは監査ログの対象(Napterでの接続)を作成するために、Napterでssh接続します。

%soracom port-mappings create --body @napter.json
{
    "createdTime": **********,
    "destination": {
        "imsi": "**************",
        "port": 22
    },
    "duration": 1800,
    "endpoint": "**********:*****",
    "expired": false,
    "expiredTime": *******,
    "hostname": "******.napter.soracom.io",
    "imsi": "***************",
    "ipAddress": "*****",
    "operatorId": "*****",
    "port": ****,
    "source": {
        "ipRanges": [
            "******"
        ]
    },
    "tlsRequired": false
}

接続できたらsshでログインしてみましょう。

監査ログを取得する

では、監査ログを取得してみます。

%soracom audit-logs napter get
[
        {
                "connectionId": "*************************",
                "createdAt": *****************,
                "direction": {
                        "destinationIPAddress": "************",
                        "destinationPort": 22,
                        "sourceIPAddress": "***********",
                        "sourcePort": **
                },
                "imsi": "***********",
                "operatorId": "*************",
                "tls": false,
                "type": "CLOSED"
        },
        {
                "connectionId": "************************",
                "createdAt": ****************,
                "direction": {
                        "destinationIPAddress": "************",
                        "destinationPort": 22,
                        "sourceIPAddress": "***********",
                        "sourcePort": **
                },
                "imsi": "************",
                "operatorId": "*****",
                "tls": false,
                "type": "CONNECTED"
        },
.....
]

こんな感じで簡単に取得できます。

指定できるオプションは以下の通りです。

オプション 機能説明
--fetch-all 自動的にページネーションする。デフォルトでON?
--from int 取得するログの開始時刻。unixtime millisなので、出力の「createdAt」の値を参考に
--last-evaluated-key time ページネイトしたときの最後のエントリの「createdAt」を入れると次のページから取得される
--limit int 取得するエントリー数
--resource-id リソースのIDで取得するものを指定・・とあるが、connectionIdを指定しても効かなかったので何か別の物?
--resource-type リソースタイプ。"ACCESS"とか指定できるのかと思ったらどうも"Subscriber"しか指定できない模様。今後の拡張で使われる?
--to int 取得するログの終了時刻。--fromと同じく範囲指定に使う

すいません、ちょっとオプションは調べきれていませんが、from/to/limit/last-evaluated-keyなどをうまく使ってページネイト処理を作りやすいようになっていますね。

まとめ

監査ログは取得して別の形式に成形して利用することが多いと思いますので、cliで取得できるのはとても便利です!
毎月の報告書作成のバッチなどで是非有効活用してください。

kkimura
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした