Denoで作る快適な “as Code” プラットフォーム

トラック3

セッション

16:00~16:30

クラウドのセキュリティをプログラマブルにチェックできるPolicy as Codeプラットフォーム「Shisho Cloud」において、「クラウドの設定値検査ルールをTypeScriptで書ける」という機能を最近リリースしました。この機能の開発では「検査ルールを快適に読み書きする体験」にこだわり、コード生成器やDenoベースのランタイム・バンドラ等を開発しました。 トークテーマ: ・クラウドの検査ルールを書く言語としてのTSの魅力 ・“as TypeScript Code”プラットフォームの基盤にDenoを採用した背景 ・コード生成器・ランタイム・バンドラの作り方、快適な“as Code”体験のための細かなこだわり、実装の苦労話 トークの題材である「クラウドの設定値検査ルールをTypeScriptで書ける」機能は、次のようなものです。 ・ユーザーはどのような設定値(例:S3バケットの公開設定)を検査したいかをGraphQLクエリとして記述する ・ユーザーは設定値に不備があるかどうかを判定するTypeScriptコードを書く(例:S3バケットが公開状態ならNGを出力) ・ユーザーがアップロードしたGraphQLクエリとTSの検査コードをもとに、Shisho Cloudは継続的にクラウドの設定値を取得して検査コードを実行し、出力がNGなら報告する この機能を実現するために、以下のものを実装しました。 ・ユーザーのGraphQLクエリに基づきクラウドの設定値データを取得するシステム ・取得した設定値データを入力として、ユーザーのTSコードをサンドボックス実行するシステム(Denoベース) ・ユーザーのGraphQLクエリからTSの型定義を生成するツール(Rust向けの型定義生成器をフォーク) ・ユーザーが指定したTSファイルに対し、依存モジュールをバンドルしてShisho Cloudにアップロードするツール(Denoベース) バンドラについては、ユーザー体験を考えてあえてesbuild等を使わずdeno_graphをベースに内製しました。話題の例として、DenoのRustライブラリは綺麗にモジュール化されていて応用が効く一方で、モジュールのダウンロード等の処理はライブラリ化されておらず、Denoと一貫した挙動をするツールを作るのは難しい、などを話す予定です。

pizzacat83_image
pizzacat83

株式会社Flatt Security / ソフトウェアエンジニア

大学在学中の2020年5月に株式会社Flatt Securityにアルバイトとして入社し、2024年4月より正社員に。セキュリティエンジニア時代はWeb・Firebase・クラウドのセキュリティ診断を担当しながら、診断を管理する社内システムの内製にも従事。現在はセキュリティSaaS「Shisho Cloud」の開発に従事し、フロントエンド、バックエンド、CLI、TypeScript・Regoコード実行基盤など幅広く手掛ける。

https://pizzacat83.com/
github_linktwitter_link