レック・テクノロジー・コンサルティング株式会社TECH BLOG

Steampipe を使ってAWS環境のセキュリティチェックを実施してみよう!

0. はじめに

Re:Q Techブログをご覧いただきありがとうございます。
クラウド&ネットワーク技術統括部のN.Tです。

皆さんの組織では、AWS環境のセキュリティ設定をどのようにチェックされていますか? 「マネジメントコンソールでの確認は時間がかかる」「設定漏れがないか不安」といった悩みを抱えている方も多いのではないでしょうか。
前回の記事ではAWS Service Screener V2を用いてセキュリティチェックを実施しましたが、今回は「Steampipe」を利用して、AWS環境のセキュリティ状態を可視化します!
Steampipeの導入からセキュリティチェック実施手順までをいちから順を追って解説していきます。



1. 環境情報

  • Windows 11 Pro
    • WSL上: Ubuntu 24.04.2 LTS Windows端末でSteampipeを利用する場合はWSL2を利用して、Linux上で動作させる必要があります。

本記事ではWSL2の利用方法は割愛させていただきますので、利用したことのない方は以下のリンクを参考にして導入してください。
WSL を使用して Windows に Linux をインストールする方法

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo



2. インストール手順

1. WSLのUbuntu端末を起動します。

  • すでに導入済みの場合は、Windowsターミナルからドロップダウンボタンを押下後、Ubuntuを選択することで起動できます。

image-5.png


2. インストールコマンド実行

  • 以下のコマンドでインストールを行います。
sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/steampipe.sh)"
  • インストール完了時、以下のようにinstalled successfullyと表示されていればOKです。
HTTP request sent, awaiting response... 200 OK
Length: 20237831 (19M) [application/octet-stream]
Saving to: '/tmp/tmp.QLngNGKdM8/steampipe.tar.gz'

/tmp/tmp.QLngNGKdM8/steamp 100%[========================================>]  19.30M  18.2MB/s    in 1.1s

2026-05-02 10:41:19 (18.2 MB/s) - '/tmp/tmp.QLngNGKdM8/steampipe.tar.gz' saved [20237831/20237831]

Deflating downloaded archive
Installing
Applying necessary permissions
Removing downloaded archive
Steampipe was installed successfully to /usr/local/bin/steampipe


3. バージョン確認

  • インストール後のバージョン確認を行います。
$ steampipe -v
Steampipe v2.4.2


4. AWSプラグインをインストールする

  • Steampipeを用いてAWSリソースをチェックするためにはプラグインの導入が必要となります。
steampipe plugin install aws
  • 以下のようにInstalledと表示されていればOKです
Installed plugin: aws@latest v1.30.2
Documentation:    https://hub.steampipe.io/plugins/turbot/aws



3. AWSアカウント接続手順

  • 本環境ではSSOサインインの場合のパターンを記載します。
  • 各自のログイン方法に合わせ必要な設定を行ってください。

1. 必要なパッケージのインストール

  • awscliのインストールに必要な、curlとunzipのパッケージをインストールします。
sudo apt update
sudo apt install curl unzip -y
  • インストール確認は以下のコマンドで行います。
## Curlの確認
testuser:~$ curl --version
curl 8.5.0 (x86_64-pc-linux-gnu) libcurl/8.5.0 OpenSSL/3.0.13 zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.7 libpsl/0.21.2 (+libidn2/2.3.7) libssh/0.10.6/openssl/zlib nghttp2/1.59.0 librtmp/2.3 OpenLDAP/2.6.7

## unzipの確認
testuser:~$ unzip -v
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.


2. AWS CLI v2のダウンロード及びインストール

  • 以下の3つのコマンドを実行し、インストールします。
# zip ファイルのダウンロード
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

# パッケージの解凍
unzip awscliv2.zip

# インストールスクリプトの実行
sudo ./aws/install
  • 以下のコマンドでバージョンが表示されればOKです!
$ aws --version
aws-cli/2.34.41 Python/3.14.4 Linux/6.6.87.2-microsoft-standard-WSL2 exe/x86_64.ubuntu.24


3. SSO設定の実施

  • aws configureの設定を作成します。
  • 以下のコマンドを実行し、対話形式で設定を行います。
    • sso-profileの箇所は任意のプロファイル名を指定してください。
$ aws configure sso --profile sso-profile
  • 設定完了後、2回目以降は以下のコマンドでSSOサインインを実施します。
aws sso login sso --profile sso-profile
  • サインイン後は以下のコマンドを実行し、サインインしているユーザーを確認できます。
$ aws sts get-caller-identity --profile sso-profile


4. 上記で設定したプロファイルを使用するようにSteampipeの設定ファイルを更新する

  • ~/.steampipe/config/aws.spc ファイルに、SSOプロファイルを使用する接続設定を追加します。
  • viコマンドで設定ファイルを編集してください。
vi .steampipe/config/aws.spc
  • 以下のように設定します。
connection "aws" {
  plugin  = "aws"
  profile = "sso-profile"
  # 必要に応じて対象リージョンを限定します
  regions = ["ap-northeast-1"]
}


5. 別のIAMロールの権限に委任して実行する(オプション)

※別のIAMロールで実行する必要がない場合は、読み飛ばして大丈夫です!

  • Steampipe(およびPowerpipe)の公式ドキュメントでは、基本設定として ReadOnlyAccess ポリシーの付与が推奨されています。 (Steampipe AWS Plugin - Credentials)

    "Grant the ReadOnlyAccess policy to your user or role."


  • 本環境では、推奨通り最小権限に基づいたIAMロールを利用しセキュリティチェックを行います。 そのため、下記の設定を行います。

  • 追加で、aws configに以下を追記します。

[profile security-audit]
source_profile = sso-profile
role_arn = arn:aws:iam::XXXXXXXXXX:role/tst-steampipe-role-01
  • 後述のpowerpipeでは、--profileオプションでプロファイルを指定できないため、環境変数を利用します。
export AWS_PROFILE=security-audit
  • 以下のように、get-caller-identityをprofile指定なして実行し、上記で追記したprofileのrole_arnが表示されていればOKです。
$ aws sts get-caller-identity
{
    "UserId": "XXXXXXXXXXXXXXXX:botocore-session-YYYYYYYYYYY",
    "Account": "ZZZZZZZZZZZ",
    "Arn": "arn:aws:sts::ZZZZZZZZZZZZ:assumed-role/tst-steampipe-role-01/botocore-session-ZZZZZZZZZZ"
}
  • steampipe側のconfigも、security-auditに修正します。
vi .steampipe/config/aws.spc
  • 以下のように設定します。
connection "aws" {
  plugin  = "aws"
  profile = "security-audit"
  # 必要に応じて対象リージョンを限定します
  regions = ["ap-northeast-1"]
}



4. Powerpipeの準備

  • PowerpiprはSteampipeが集めたデータを元に、「ベンチマーク(セキュリティチェック)の実行」や「ダッシュボードの表示」を行うためのツールです。
    今回はセキュリティチェックを行うことが目的となるため、本ツールをインストールします。

1. steampipeを起動しておきます。

$ steampipe service start
Steampipe service is running:

Database:

  Host(s):            127.0.0.1, ::1, 172.26.180.188, 10.255.255.254
  Port:               9193
  Database:           steampipe
  User:               steampipe
  Password:           ********* [use --show-password to reveal]
  Connection string:  postgres://steampipe@127.0.0.1:9193/steampipe

Managing the Steampipe service:

  # Get status of the service
  steampipe service status

  # View database password for connecting from another machine
  steampipe service status --show-password

  # Restart the service
  steampipe service restart

  # Stop the service
  steampipe service stop


2. セキュリティベンチマーク実行用のPowerpipeをインストール・設定します。

  • installed successfullyと表示されていればOKです。
# Powerpipeのインストール
sudo /bin/sh -c "$(curl -fsSL https://powerpipe.io/install/powerpipe.sh)"
  • 続けて、ワークスペースを作成しセキュリティチェックのためのMODをインストールします。
# ワークスペースディレクトリの作成
mkdir ~/steampipe-security-check
cd ~/steampipe-security-check

# MODの初期化とインストール
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-aws-compliance



5. セキュリティチェック実行

ベンチマークを実行し、結果をHTMLレポートとして出力します。

  • 以下のコマンドで利用できるベンチマーク一覧を確認できます。
  • 今回は、CIS V3.0.0を実行してみます。
# 利用可能なベンチマークの一覧を表示
powerpipe benchmark list


1. 以下のコマンドでセキュリティチェックを実行します。

# セキュリティチェックの実行(例:CIS v3.0.0)
powerpipe benchmark run aws_compliance.benchmark.cis_v300 --export=html
  • コマンド出力の末尾に以下のように表示されます。
Summary

OK ................................................................... 344 [=======   ]
SKIP .................................................................. 83 [==        ]
INFO ................................................................... 5 [=         ]
ALARM ................................................................ 112 [===       ]
ERROR .................................................................. 4 [=         ]

TOTAL .......................................................... 116 / 548 [==========]
⠹ Exporting 1 of 1
File exported to /home/%USERNAME%/steampipe-security-check/aws_compliance.benchmark.cis_v300.20260502T124349.html
  • 保存されたhtmlファイルをブラウザで確認すると、以下のようなページが表示されます。

    • ページの一番トップには、全チェック項目数とその内訳(何件OK、Alramは何件...等)のサマリが表示されます。 image-6.png

    • 各見出しでは、"1. IAM"や"2. Storage", "3. Logging" 等項目単位のサマリと、詳細な情報が記載されます。
      image-10.png

    • 例として、以下の項目ではアクセスキーを90日間ローテーションしていないものをチェックしています。
      image-12.png



6. GUIでの確認(オプション)

  • また、先ほどの実行コマンドとは別に、powerpipeサーバーを起動することでブラウザ上でセキュリティチェックを行うことも可能です。

1. 各種サービスを起動します。

# SteampipeとPowerpipeの起動
steampipe service start
powerpipe server


2. ブラウザからpowerpipeにアクセス

  • ブラウザで 「http://localhost:9033」 にアクセスします。


3. ベンチマークの実行

  • ブラウザでアクセスすると、以下のようにベンチマーク一覧が表示されます。
    image-7.png

  • 任意のベンチマークをクリックすると、セキュリティチェックが開始されます。 image-8.png

  • 結果から、各種項目をドリルダウンすることで詳細を確認できます。

    • 以下は例として、S3のバケットポリシーでHTTPSを強制化していないバケットを確認しています。 image-13.png



7. さいごに

今回、SteampipeとPowerpipeでAWSのセキュリティチェックを実施してみましたが、チェックがコマンド一つで完了し、レポートまで出力できるのは非常に効率的でした。
まだ試していない方は、まずは手元の環境でレポートを出力してみるだけでも、現状の可視化として役に立つはずので、ご利用してみてはいかがでしょうか。

参考

Install Steampipe: Windows

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る