0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PR: レック・テクノロジー・コンサルティング株式会社
Re:Q 採用サイト

Steampipeを使ってクラウド環境のセキュリティチェックを実施してみよう!【OCI編】

0
Posted at

みなさん、こんにちは!

0. はじめに

こちらの技術ブログで紹介されているSteampipeですが、AWSだけでなくOCIでも利用が可能です。

今回はSteampipeを使ってOCIの環境を調査したり、セキュリティ診断を行ったりする方法をご紹介します!

1. 本手順で使用するツール

手順に入る前に、今回使用する主なツールをご説明します。

1.Steampipe:クラウドの構成情報をSQLでクエリできるオープンソースのツール
2.Steampipe OCI Plugin:SteampipeをOCI環境で使用するためのプラグイン
3.Powerpipe:Steampipeで収集したデータを元にダッシュボードやレポートへの可視化を行うツール
4.OCI用Powerpipe Mod:PowerpipeのMod(拡張機能)。「セキュリティ監査」、「リソースの可視化」など、収集したデータを元に特定の観点でダッシュボードやレポートを作成できる。

現在提供されている拡張機能は以下の3種類。

Mod名 観点 チェック内容例
Oracle Cloud Infrastructure Compliance セキュリティ・コンプライアンスの遵守 CISベンチマークへの適合性
Oracle Cloud Infrastructure Insights OCI環境のリソース可視化 リソースの数、経過日数、詳細
Oracle Cloud Infrastructure Thrifty 不要なリソースの発見 使用率が低いボリューム、古いバックアップデータ

今回はセキュリティチェックを実施できるComplianceの拡張機能を使用します。

2. 環境情報

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

本記事ではWSL2の利用方法は割愛させていただきます。利用したことのない方は、以下のMicrosoftの公式ドキュメントサイトを参考にして導入してください。

3. Steampipeインストール手順

1. WSLのUbuntu端末を起動する

PowerShell を「管理者として実行」で起動後、WSL(Ubuntu) 起動コマンドを実行します。

wsl.exe -d Ubuntu

2. Steampipeをインストールする

以下のコマンドでインストールを行います。

# Steampipeインストールコマンド実行
sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/steampipe.sh)"

インストール完了時、以下のように"installed successfully"と表示されていればOKです。

Steampipe was installed successfully to /usr/local/bin/steampipe

3. OCIプラグインをインストールする

Steampipeを用いてOCIリソースをチェックするためにはプラグインの導入が必要となります。

# Steampipeプラグインのインストールコマンド実行
steampipe plugin install oci

以下のようにInstalledと表示されていればOKです

Installed plugin: oci@latest v1.2.1
Documentation: https://hub.steampipe.io/plugins/turbot/oci

4. OCIアカウント接続手順

1. 操作ユーザーに必要な権限設定

SteampipeがOCIの情報を読み取るために必要なIAMポリシーを設定します。
OCIコンソールにて、操作ユーザーのグループに以下2つの権限を付与してください 。

①テナンシーの全リソースのRead権限

Allow group {group_name} to read all-resources in tenancy

②テナンシーの構成情報を取得する権限

Allow group {group_name} to manage all-resources in tenancy where request.operation='GetConfiguration'

※今回の検証で使用した社内OCI検証環境は、コンパートメントの権限制限により、セキュリティチェック実行に必要な上記権限の一部が付与されていない状態です。そのため、後続のセキュリティチェック結果でも権限不足によるエラー(確認不可)が出力されています。あらかじめご了承ください。

2. OCI 認証情報設定

SteampipeがテナンシーにアクセスするためのAPIキーを設定します。

OCIコンソールでの作業

1.OCIコンソール右上[ユーザーアイコン]>[ユーザー設定]をクリック。
2.左下メニュー[APIキー]>[APIキーの追加]をクリック。
3.[秘密鍵のダウンロード]をして、.pemファイルを手元に保存し、[追加]を押します。
4.画面に表示される構成ファイルのプレビューから、"user"、"fingerprint"、"tenancy"、"region" の値をメモします。

WSL側での作業

ダウンロードした鍵をWSL環境にコピーして権限を変更します。

# ディレクトリ作成
mkdir -p ~/.oci

# 鍵のコピーと権限変更(※{YOUR_USER_NAME}はご自身のWindowsユーザー名に置き換えてください)
cp /mnt/c/Users/{YOUR_USER_NAME}/Downloads/*.pem ~/.oci/oci_api_key.pem
chmod 600 ~/.oci/oci_api_key.pem

次に、設定ファイルを作成します。

vi ~/.oci/config

ファイル内に、先ほどメモしたOCIの情報を以下のように貼り付けて保存します。

[DEFAULT]
user=ocid1.user.oc1..aaaaaaaaxxxxxxx
fingerprint=xx:xx:xx:xx:xx:xx...
tenancy=ocid1.tenancy.oc1..aaaaaaaaxxxxxxx
region=ap-tokyo-1
key_file=~/.oci/oci_api_key.pem

3. クエリ実行テスト

ここまで設定が完了したら、実際にOCIからデータが取得できるかテストしてみましょう!

# クエリコンソール起動コマンド実行
steampipe query

# クエリコンソールが起動する
Welcome to Steampipe v2.4.2
For more information, type .help

# 以下のSQLを入力して Enterキーを押す。
select name from oci_identity_tenancy;

自分の所属しているテナンシー名が返ってくれば、接続は成功です。
接続を終了する時は ".exit"を入力、または Ctrl + D キーを押します。

5. Powerpipeインストール手順

1. Powerpipeをインストールする

引き続きWSL環境でPowerpipeインストールを行います。

sudo /bin/sh -c "$(curl -fsSL https://powerpipe.io/install/powerpipe.sh)"

インストール完了時、以下のように"installed successfully"と表示されていればOKです。

Powerpipe was installed successfully to /usr/local/bin/powerpipe

2. Modをインストールする

専用ディレクトリを作成し、移動します。

# ディレクトリ作成
mkdir -p ~/steampipe-oci-compliance

#作成したディレクトリへ移動
cd ~/steampipe-oci-compliance

Oracle Cloud Infrastructure Compliance Mod をインストールします。

# Powerpipe Modの初期化
powerpipe mod init

# Compliance Modのインストール
powerpipe mod install github.com/turbot/steampipe-mod-oci-compliance

6. セキュリティチェック(ブラウザ版)

1. Steampipeを起動する

# Steampipe起動
steampipe service start

"Steampipe service is running:"と出力されていればOKです。

2. Powerpipeサーバーを起動する

# Powerpipeサーバー起動
powerpipe server

以下のように出力されていればOKです

[ Ready ] Dashboard server started on 9033 and listening on local

3. ブラウザでセキュリティチェックを実行する

ブラウザで 「http://localhost:9033」 にアクセスすると、以下の画面が表示されます。
image.png

左メニューから見たい項目をクリックすると、チェックが始まります。
今回は「OCI CIS v3.0.0」を実行しました。
今回の検証では操作ユーザの権限不足によりエラーがたくさん出ていますが、OCIアカウント接続手順の「1. 操作ユーザーに必要な権限設定」でご紹介した権限が操作ユーザーに付与できていれば問題なくチェック可能です。
image.png

Goole翻訳にかけるとこんな感じです。
「アイデンティティおよびアクセス管理」、「ネットワーキング」のように項目ごとに結果が表示されます。
全項目でチェックが可能なわけではなく、手動での確認が必要な項目もあります。
その他、「ネットワークセキュリティグループが0.0.0.0/0からポート22へのイングレスを許可していないことを確認する」、「オブジェクトストレージバケットがパブリックに公開されていないことを確認する」など基本ではあるものの気を付けたい項目もチェックされていました。
image.png

7. セキュリティチェック(レポート版)

ブラウザ以外にもHTML、CSV、JSONなど様々な形式でのレポート出力が可能です。試しにHTMLレポートを出力してみます。
※レポート出力の場合は、Powerpipeサーバーの起動は不要です。

# 実行可能なベンチマーク一覧を表示する
powerpipe benchmark list

以下のように一覧が出力されます。

MOD NAME TYPE
oci_compliance oci_compliance.benchmark.cis_v110 control
oci_compliance oci_compliance.benchmark.cis_v120 control
oci_compliance oci_compliance.benchmark.cis_v200 control
oci_compliance oci_compliance.benchmark.cis_v300 control

実行例(例:oci_compliance.benchmark.cis_v300)

powerpipe benchmark run oci_compliance.benchmark.cis_v300 --export=html

# HTMLのほか、`--export=csv` や `--export=json` を指定して複数形式で同時に出力することも可能です。

このようなHTMLファイルが作成されました。
チーム内での結果共有や生成AIを使用した分析にはHTMLやCSVでの出力が適していそうです。
(生成AIでの分析の際は、個人情報やAIの再学習設定にご注意ください!)
image.png

8. おわりに

最後までお読みいただきありがとうございます。
今回検証したSteampipeによるセキュリティチェックは、CISベンチマークに沿って網羅的に環境をチェックでき、自分で準拠状況を一つ一つ判断する必要がないのが非常に便利でした。
OCI公式のCloud Guardでもセキュリティチェックは可能ですが、あちらは常時監視や継続運用を前提としたサービスのため、スポット的に環境の状態を確認したい場面では少し大掛かりに感じることもあります。その点、Steampipeは手軽にセットアップができ、必要なタイミングで即座にチェックを実施できるところがメリットだと感じました。
自社環境の状態を手軽に可視化してみたいという方は、ぜひ試してみてはいかがでしょうか。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?