あらゆるリソースへのアクセスを一元管理するゲートウェイSaaS「strongDM」を触ってみた

本記事では、Infrastructure access platformと称されるstrongDMの紹介とデモを実施してきます。

本アドベントカレンダーでは主にデータに関係するSaaSを扱っており、データ基盤に関わる方々を対象とした記事を執筆していますが、strongDMに関しては情シスの方々がターゲットとなりそうです。すごく良い製品だったので、よかったらブラウザバックせずに立ち寄ってってください。

strongDMについて

strongDMは2015年にサンフランシスコで創業された、セキュリティ・ネットワーク関連のSaaSを開発・提供しているスタートアップです。2021年9月にはシリーズBの投資ラウンドにて$54Mの資金調達に成功しており、順調に事業規模を拡大させています。

strongDM Raises $54M Series B Led by Tiger Global to Transform Secure Infrastructure Access Management | strongDM

新しいクラウドサービスや技術が増え続けている現代、それに付随して各サービスにアクセスするためのエンドポイントの数も増加しているため、複雑化するアクセス情報の管理に悩む管理者や開発者の数は少なくないはずです。strongDMでは、サーバーやデータベース、コンテナ、Webサイトといった多種のエンドポイントに必要なアクセス情報を一元管理し、PCに専用のクライアントをインストールするだけで簡単に接続できるプラットフォームを提供しています。雑に言えば、SSOの拡張版みたいな感じでしょう。

strongDMには、SSO連携はもちろんのこと、アクセス権限の細かな調節やTerraformを使ったリソースのデプロイといった、ユーザーが効率的に運用管理できるための機能が詰まっています。

説明するのがちょっと難しいので、次節から実際に画面を触っていきます。なお、strongDMでは14日間のトライアルが可能です。

アカウント作成とサンプル接続

公式HPよりTry It Freeをクリックし、ユーザー情報を入力していきます。

登録したメールアドレスに送信される認証リンクをクリックすると、strongDMのユーザー一覧に飛びます。左メニューよりWelcomeをクリックして、チュートリアルを進めていきます。

使用中のOSを選択します。今回はmacOS版のクライアントをインストールします。

リンクをクリックすると、strongDMのクライアントアプリのダウンロードが開始します。Applicationsのディレクトリにコピー後、起動させるとMacのメニューバーにsdmのアイコンが表示されるようになります。

そのsdmのアイコンをクリックし、strongDMへのログインを実施します。

ログインに成功すると、strongDMがサンプルで用意しているリソース一覧が表示されるようになります。PostgreSQLのDB、プロキシ経由で接続するウェブサイト、Kubernetesのクラスタ、SSH接続するサーバーなど、ありとあらゆるリソースに対して一括で接続情報を管理が可能です。

その後、クライアントのメニューよりInstall 'sdm' in PATHをクリックして、CLIの設定を行います。ターミナルでsdm --versionが実行できれば設定完了です。

$ sdm --version
sdm-cli version 32.19.0 (549a135b631175f46ef4197d840b1cfe6fd3d1fe #219)

まずはSSH接続から試してみます。ターミナルでsdm ssh "Example - Star Wars"を実行し、SSH接続を行います。PCのセキュリティソフトが原因なのか、コネクションが瞬時に遮断されてしまいましたが、アクセスはできたみたいです。

続いてPostgreSQLにアクセスします。macOSのメニューバーのsdmのアイコンをクリックし、Example - RNA Centralをクリックして緑の稲妻マークを表示させます。この状態がコネクションが有効になっていることを表しています。

SQLクライアントで、ホストをlocalhost、ポートを15432に設定して接続してみます。私が使用しているPosticoでは、ユーザー名とデータベース名を空欄にすると、デフォルトでharuta.takumiが指定されて接続が開始されることになります。

結果無事接続に成功し、SQLも問題なく実行することができました。

KubernetesとWebsiteの接続チュートリアルが残っていますが、今回は割愛します。

Redshiftと接続する

次に、パブリックのRedshiftクラスタをデータソースとして登録していき、PostgreSQLと同じようにstrongDM経由でアクセスできるか試してみます。まずは、左メニューからDatasourcesをクリックし、画面右のadd datasourceをクリックします。

Redshiftの接続情報を入力していきます。

作成完了後、HEALTHにまだアラートが出ているので、接続確認を行なっていきます。haruta-redshift-demoをクリックし、詳細画面に入ります。

Diagnosticsのタブをクリックし、check nowをクリックします。

全てチェックマークがつけば接続テスト完了です。

続いて、このDatasourceにアクセスできるRoleを作成していきます。左メニュ=からRolesをクリックし、Add roleをクリックするとRole名のフォームが表示されます。任意の名前を入力してCreate roleで確定。

作成されたRoleをクリックし、詳細設定画面にいきます。

Access RulesのタブのStatic Ruleをクリックします。

RedshiftのDatasourceを選択し、Save and applyで確定させます。以上で、RedshiftへアクセスできるRoleの作成は完了です。

続いて、自分自身に対してそのRoleを付与し、strongDMのクライアント経由で自分がRedshiftへアクセスできるように設定していきます。左メニューのUsersをクリックし、自分自身の詳細画面に行きます。

Rolesタブで、先ほど作成したRoleをアタッチして確定させます。

アタッチするとすぐstrongDMのクライアントに情報が反映されるようになっています。こちらをクリックして緑の稲妻マークを表示させ、コネクションを有効にします。

SQLクライアントで、localhost:15439にアクセスしてみます。データベースはdevに設定しています。

接続できました!strongDMで払い出されているユーザー情報を使ってRedshiftにアクセスすることができました。これは便利ですね。

その他の機能

その他の機能も軽く紹介していきます。まずユーザーに対しては、Roleとは別に期限付きの一時権限を付与することもできます。

strongDMをプログラムやAPIで経由で操作するためのトークンやキーを発行することもでき、非常に細かい権限調節が可能です。

サンプルとして既に用意してあったリソースと、別途追加したRedshiftクラスタのDatasourceは、このGatewayというアドレスで束ねられています。Gatewayは新規追加ができるので、Gateway単位で接続リソースを分割することも可能です。

その他、ユーザーのアクティビティや実行されたSQLのログも収集しています。

SSHのログに関しては、セッション単位で実行されたコマンドが動画で残されており、誰がどのコマンドを叩いたのかを追跡できるようになっています。

ユーザー管理周りでも細かく機能が用意されていました。SSO連携も可能で、その種類のかなり豊富です。

紹介は以上です!紹介しきれなかった機能もあるので、さらに興味がある方は以下の公式ドキュメントも合わせてどうぞ。

Docs Home | strongDM Docs

所感

strongDMのような統合ゲートウェイと専用のクライアントがあれば、接続周りの管理がかなり楽になるイメージが持てました。Windows、Mac、Linuxでクライアントが用意されているので、どんな作業PCからのアクセスでも対応できる点がユーザーフレンドリーで良いですね。権限管理も細かく設定できるので、うまく使えればガバナンスをしっかり効かせた組織的な運用が可能になりそうです。

本アドベントカレンダーでは、今話題のデータ関連SaaSを取り上げていきますので、引き続き乞うご期待ください!