2024年度クラウドネイティブセキュリティおよび利用状況レポート
皆さん、こんにちは!
第9回担当の川杉です。
コードを書くことで必要なインフラリソースを作成できるInfrastructure as Code(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で管理することは下記のようなメリットにつながります。
など、様々なメリットを享受できます。
Terraformを利用することで、Sysdigの下記のような機能をコード管理できます。
今回はSysdig Secureにユーザーを追加し、各機能へのアクセス権限を付与してみます。
ユーザーにアクセス権限を付与するためには、チームへの参加が必須です(Sysdigの仕様です)。
そのため今回は下記をTerraformで設定してみようと思います。
Sysdigのユーザー権限管理につきましては下記URLに詳細があります。ご興味ありましたらご覧ください。
それでは早速検証の準備から始めていきましょう。
今回の検証で事前に用意するものは以下の通りです。
まずは検証用のテンプレートファイル(.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/