Steampipeを利用してAWSリソースのリレーションを可視化してみた
データアナリティクス事業本部の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
を以下の通り設定します。
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リソースを可視化してみました。
参考になりましたら幸いです。