ブログ

【SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた

2024年度クラウドネイティブセキュリティおよび利用状況レポート

皆さん、こんにちは!
第9回担当の川杉です。
コードを書くことで必要なインフラリソースを作成できるInfrastructure as Code(IaC)は、当たり前に使われる技術となってきました。 今回はSysdigの設定をIaCで管理する方法についてご紹介します。
それでは参りましょう。

SysdigをIaC管理するメリットとは

最近お客様からクラウド上のインフラをTerraformでコード化したので、利用しているSaaSサービスもTerraformで管理したいというご要望をよく聞きます。
Terraformは非常に汎用性が高くIaCのデファクトツールといっても過言ではないツールです。
Terraformの公式サイトでは実に4000以上のTerraformプロバイダーが公開されており、Sysdigもその1つです。
SysdigのTerraformプロバイダーは下記URLから確認できます。

https://registry.terraform.io/providers/sysdiglabs/sysdig/latest/docs

Sysdigのようなサードパーティ製品のSaaSをTerraformで管理することは下記のようなメリットにつながります。

  • 管理者間での設定共有が容易になる
  • 他のシステムへの転用が容易になる
  • コードをGitで管理することでいつ/どこで/誰が設定変更したか、などの見える化が容易になる
  • インフラとあわせて一元管理することで、運用の自動化や管理コストの削減が見込める
  • 災害時の復旧を高速化できる

など、様々なメリットを享受できます。

Terraformを利用することで、Sysdigの下記のような機能をコード管理できます。

Monitor
アラート設定、ダッシュボード作成など

Secure
ふるまい検知ポリシー設定、脆弱性スキャンルール設定など

共通
ユーザー設定、通知設定など

今回はSysdig Secureにユーザーを追加し、各機能へのアクセス権限を付与してみます。
ユーザーにアクセス権限を付与するためには、チームへの参加が必須です(Sysdigの仕様です)。
そのため今回は下記をTerraformで設定してみようと思います。

  1. ユーザー作成
  2. チーム作成およびユーザーの参加とteam manager権限の割り当て

Sysdigのユーザー権限管理につきましては下記URLに詳細があります。ご興味ありましたらご覧ください。

https://docs.sysdig.com/en/docs/administration/administration-settings/access-and-secrets/user-and-team-administration/

Terraform検証

事前準備

それでは早速検証の準備から始めていきましょう。
今回の検証で事前に用意するものは以下の通りです。

  1. 1. Sysdig SaaSと通信可能なTerraform実行環境
    Sysdigエンドポイントと通信できる必要があります。
    各リージョンのエンドポイント情報は下記URLをご覧ください。
    https://docs.sysdig.com/en/docs/administration/saas-regions-and-ip-ranges/#sysdig-platform-regions
  2. Sysdigにログイン > [Settings] > [User Profile]と画面遷移し、API Tokenを取得します。
    詳細な取得方法は公式ドキュメントにも記載がありますので下記URLをご覧ください。
    https://docs.sysdig.com/en/docs/administration/administration-settings/user-profile-and-password/retrieve-the-sysdig-api-token/

いざ検証

まずは検証用のテンプレートファイル(.tf)を作成していきましょう。
Terraformはテンプレートファイルに構成情報、プロバイダー情報、変数等をコードとして記載します。

Terraform実行環境にログインし、テンプレートファイルを実行するディレクトリを作成します。
※ディレクトリ名は任意の名前でOKです

$ mkdir sysdig-setting-terraform-blog

作成したディレクトリ配下に下記2つのテンプレートファイルを作成します。
※テンプレートファイル名は任意の名前でOKです
1つ目はSysdig SaaSと接続するための情報やプロバイダー情報を記載したテンプレートファイル(provider.tf)を作成します。

terraform {
  required_providers {
    sysdig = {
      source = "sysdiglabs/sysdig"
      version = "1.31.1"
    }
  }
}
// Configure the Sysdig provider
provider "sysdig" {
// Check the url that matches your region
  sysdig_secure_url = https://secure.sysdig.com #事前準備1で確認した値を入力
  sysdig_secure_api_token = "XXXXXXXXX"   #事前準備2で確認した値を入力
}

2つ目はSysdig SaaSの設定を定義するテンプレートファイル(user-setting.tf)を作成します(下記参照)。
今回はSysdig Secureにユーザーを追加し、各機能へのアクセス権限を付与する内容のテンプレートファイルとなっています。

resource "sysdig_user" "test-user" {
  email = "hogehoge-sysdig-test@outlook.jp"
  system_role = "ROLE_USER"
}

resource "sysdig_secure_team" "test" {
  name = "sysdig test team"

  user_roles {
    email = sysdig_user.test-user.email
    role = "ROLE_TEAM_MANAGER"
  }
 }

Terraformでは、resourceブロックでSysdigの設定を定義します。
1行目のresource "sysdig_user"では下記の要素を定義しています。
email: 新規ユーザー登録するメールアドレス
system_role: 一般ユーザーか管理者ユーザーを定義します。今回は"ROLE_USER"を定義しており、一般ユーザーとなります。

6行目のresource "sysdig_secure_team"では下記の要素を定義しています。
name: ユーザーが所属するチーム名です。今回は新規で作成しています。
user_roles: ユーザーに割り当てる権限を定義します。emailでユーザー、roleで割り当てる権限を定義しています。
Sysdigはチーム単位orユーザー単位でアクセス権限を付与してアクセスを制御する仕様です。ユーザーはチームに必ず参加する必要があります。
今回はユーザー単位でアクセス権限を付与しています。

準備もできたところで早速Terraformを実行してみましょう
まずはinitコマンドを実行し、Sysdigプロバイダー情報を読み込みます。

$ terraform init
== 実行結果中略  ==

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform has been successfully initialized! と表示されたら成功です。

次にapplyコマンドで定義した設定をSysdig SaaSに反映します。
※途中でEnter a value: と表示されるのでyesと入力します

$ terraform apply
== 実行結果中略  ==
Enter a value: yes
sysdig_user.test-user: Creating...
sysdig_user.test-user: Creation complete after 1s [id=75814]
sysdig_secure_team.test: Creating...
sysdig_secure_team.test: Creation complete after 0s [id=69550]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

実行結果を確認してみましょう。
まずは作成したユーザーの確認から、
Sysdigにログイン > [Settings] > [Users]と画面遷移します。

作成したユーザーがありました!

次にチームを見てみましょう。
[Settings] > [Teams]と画面遷移します。

チームも作成されており、ユーザーにteam manager権限の割り当てられていることも確認できましたね!
Terraformで定義した設定がしっかり反映できていることを確認できました。

最後に

最近はTerraformでインフラを管理することも当たり前になってきたように感じます。SysdigのようなSaaSサービスも併せてTerraformで管理することで運用コスト削減につながります。Terraformで管理できるSysdigの設定が今後増えていくことにも期待していきたいですね!
本ブログでは次回以降もSysdigやコンテナ、Kubernetesを中心としたセキュリティやモニタリングについてとりあげていきます。
それでは、またの機会に!

※今回ご紹介した機能の詳細情報は下記URLに掲載されております。
https://docs.sysdig.com/en/docs/developer-tools/terraform-provider/

担当者紹介

SCSK 川杉
担当者名
川杉
コメント
3年ほど前からSysdigを中心にコンテナ・Kubernetes領域で仕事をしています。社内でコンテナ技術の啓蒙活動も積極的に行っています。
保有資格
Certified Kubernetes Administrator
Certified Kubernetes Security Specialist

Sysdigに関するお問い合わせはこちらから

最近の投稿

カテゴリー

アーカイブ

ご質問・お問い合わせはこちら

top