Steampipeを利用してAWSリソースのリレーションを可視化してみた

2023.07.21

データアナリティクス事業本部のueharaです。

今回は、Steampipeを利用してAWSリソースを可視化してみたいと思います。

Steampipeとは

Steampipeは、AWSやGCPなど対応するクラウドサービスに対してSQLを使用してリソース情報を抽出できるOSSです。

v0.18.0にてRelationship graphsに対応したので、今回はそちらの機能を試してみたいと思います。

事前準備

Steampipeのインストール

SteampipeはHomebrewでインストールすることができます。

$ brew install turbot/tap/steampipe

インストール後、steampipeコマンドが利用できるか確認してみましょう。

$ steampipe -v
Steampipe v0.20.9

AWSプラグインのインストール

SteampipeのAWSプラグインをインストールします。

インストールは以下のコマンドで可能です。

$ steampipe plugin install aws

認証情報の設定

Steampipeを利用する際の認証情報の設定については色々ありますが、今回は「AssumeRole (With MFA)による認証情報の設定」を利用します。

SSOやアクセスキーの直設定等、その他の方法について確認したい方は以下の公式ドキュメントをご確認下さい。

aws.spcの設定

~/.steampipe/config/aws.spcを以下の通り設定します。

aws.spc

connection "aws" {
  plugin = "aws"
  profile = "test_steampipe"
  regions = ["ap-northeast-1"]
}

上記では、test_steampipeというAWS Profileを利用することを想定しています。

credentialsの設定

~/.aws/credentialsにtest_steampipeを以下のように追加します。

[your_master_user]
aws_access_key_id = AKIA4YFAKEKEYXTDS252
aws_secret_access_key = SH42YMW5p3EThisIsNotRealzTiEUwXN8BOIOF5J8m
mfa_serial = arn:aws:iam::999999999999:mfa/my_role_mfa

[test_steampipe]
credential_process = sh -c 'mfa.sh arn:aws:iam::111111111111:role/my_role arn:aws:iam::999999999999:mfa/my_role_mfa your_master_user 2> $(tty)'

arn:aws:iam::111111111111:role/my_roleがスイッチ先のロールで、arn:aws:iam::999999999999:mfa/my_role_mfaがMFA認証を行うユーザの情報になります。

credential_processで使用しているmfa.shについては次で解説します。

mfa.shの作成

公式よりmfa.shが公開されているので、こちらを利用します。

上記ページのコードを~/bin/mfa.shにコピペを行います。

# mfa.shの記載
$ sudo vi ~/bin/mfa.sh

# 実行権限の設定
$ chmod +x ~/bin/mfa.sh

# (任意)~/binがPathに追加されていない場合は以下を実行
$ export PATH=$PATH:~/bin

Steampipe Dashboardsのダウンロード

以下の手順でSteampipe Dashboardsをダウンロードします。

$ git clone https://github.com/turbot/steampipe-mod-aws-insights.git

Steampipe Dashboardsの起動

先の「Steampipe Dashboardsのダウンロード」でダウンロードしたディレクトリに移動し、ダッシュボードを起動します。

$ cd steampipe-mod-aws-insights

$ steampipe dashboard

ダッシュボード起動後、`http://localhost:9194/`にアクセスすると画面が表示されます。

2023/7/21時点での補足

2023/7/21時点(Steampipe v0.20.9)について、ダッシュボードにアクセスした際にターミナルでMFA Tokenの入力が求められるのですが、入力後フリーズしてしまう現象が確認できています。

この際、credential_processで設定しているmfa.shの実行を一度ターミナルで実行したあと(認証情報を作成した後)、再度ダッシュボードを起動すると画面を確認することができます。

# 一度認証情報を作成(MFA Tokenの入力)
$ sh -c 'mfa.sh arn:aws:iam::111111111111:role/my_role arn:aws:iam::999999999999:mfa/my_role_mfa your_master_user 2> $(tty)'

# ダッシュボードの起動
$ steampipe dashboard

ダッシュボードの確認

VPCの例

確認のために、以下のようなAWSリソースを作成しました。

上記のVPCの構成に対して、「AWS VPC Detail」のダッシュボードを確認してみると以下のようなリレーショングラフを確認できます。

確認できると分かる通り、EC2(cm-uehara-demo)や各種セキュリティグループ、ルートテーブル等も可視化できていることが分かります。

その他の情報として、サブネットの一覧やNACLなど、様々な情報を確認することができます。

CodePipelineの例

以下のようなCodePipelineも確認してみます。

「AWS CodePipeline Pipeline Detail」ダッシュボードでリソースのリレーションを確認したところ、以下のように表示されておりました。

こちらも紐づいているIAMロールや、CodeDeployのアプリケーションの情報などが確認できることが分かります。

IAMロールの例

IAMロールは「AWS IAM Role Detail」ダッシュボードにて以下のようにアタッチされているポリシーや、assumeに関する情報を可視化することができます。

これがどのようなロールか?をひと目で確認したい時などに便利そうです。

最後に

今回は、今回は、Steampipeを利用してAWSリソースを可視化してみました。

参考になりましたら幸いです。

参考文献