本番環境への直接アクセスを安全に管理する方法
エンジニアにSSH鍵を配布することは、すぐに混乱を招くことがあります。ある人が退職しても、その公開鍵が何十もの本番サーバーに残ったままになります。誤ったターミナルで危険なコマンドを実行してしまい、セッションが誰のものだったかを確認するために半日システムを調査することもあります。
サーバー数が増え、チームが拡大するにつれて、マシンへの直接接続が頭痛の種になります。通常、この段階で企業は4Aの概念(認証、認可、アカウンティング、監査)を検討します。しかし、TeleportやCyberArkのような重量級ソリューションの導入には、相当な時間とリソースが必要です。
私は最近、GitHubでOneTermというプロジェクトを見つけました。GoとVue.jsで書かれた轻量のオープンソースアクセスゲートウェイで、複雑な設定なしでサーバーへの集中アクセス問題を解決します。
OneTermの中身
原理はシンプルで、OneTermは従業員と本番インフラの間に立つ層になります。開発者はSSHやRDPでホストに直接接続せず、OneTermのWebダッシュボードにログインして、必要なセッションをそこから起動します。
このプロジェクトは基本的なセキュリティ要件に対応しています:
- 二要素認証対応の単一エントリーポイント。
- 特定のサーバーとユーザーグループへの権限付与。
- 各セッションのビデオとテキストログの記録。サーバーで何か問題が発生した場合、組み込みプレイヤーで操作を再生して詳細を確認できます。
- ユーザーが互いに干渉したり、ゲートウェイ内で権限を昇格させたりすることを防ぐセッション分離。
- 内部ホストを外部インターネットからの直接アクセスから保護。
標準的なSSHに加えて、OneTermはRDPとVNCプロトコルもサポートしています。これは、Windowsサーバーやグラフィカルインターフェースを持つ仮想マシンがインフラで動作している人々に便利です。
技術スタックと統合
プロジェクトのスタックはよく知られています。バックエンドはGoで書かれており、ユーザーインターフェースはAnt Design Vueライブラリを使用してVue.jsで構築されています。Goのビルドはメモリ消費量が少なく、Webターミナルのパフォーマンスが高速です。
開発者はVeops CMDBとのネイティブ統合を追加しました。これはまた別のオープンソースプロジェクトです。機器管理がCMDBで行われていれば、サーバーはワンクリックで bastion にインポートされます。IPアドレス、ポート、認証情報を手動で入力する必要はありません。
システムインターフェースを確認しましょう。
ターミナルはブラウザウィンドウ内で動作します。エンジニアはローカルクライアントを設定したり、トンネルをセットアップしたり、ラップトップに鍵を保存したりする必要がありません。
アクセス権限は時間と役割に基づいてセグメント化されます。オンコール期間中や技術作業中のみにサーバーへのアクセスを許可できます。
展開とテストの方法
ローカルでの導入向けに、著者はDocker Compose設定を用意しました。起動には数分かかります:
git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
docker compose up -d
コンテナが起動すると、Webインターフェースが http://127.0.0.1:8666 で開きます。デフォルトのログインは admin で、パスワードは 123456 です。
本番環境では、このオプションは機能しません。この場合、開発者はインタラクティブなセットアップスクリプト ./setup.sh を書きました。データベースと内部サービス用にランダムなパスワードを生成し、コンフィグを自動的に更新し、バックアップを保存します。
git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
./setup.sh
docker compose up -d
独自の機能を追加したい場合は、プロジェクトにはフロントエンドとバックエンド用のホットリロードスクリプトが準備されています: ./dev-start.sh frontend と ./dev-start.sh backend。ビルドには Node.js バージョン 14.17.6+ と Go バージョン 1.21.3+ が必要です。
ニュアンスと制限事項
このツールを本番環境に導入する前に、いくつかの特性を考慮する必要があります:
- コードはAGPL-3.0ライセンスで配布されています。閉じられた商用SaaSソリューションを作成する場合は、変更を開く必要があります。
- リポジトリの
mainブランチは継続的に更新されており不安定な場合があります。サーバーでの使用には、リリースページのビルドのみを使用してください。 - ドキュメントはまだかなり簡潔です。開発者はGitHub Issuesで応答しますが、いくつかの詳細はソースコードから直接理解する必要があります。
まとめ
OneTermは、小規模な運用チームやアクセス管理を迅速に整えたいシステム管理者に適しています。セッション記録、アクセスセグメンテーション、SSHとRDPサポートを備えたシンプルなbastion hostが必要な場合、このプロジェクトは不必要な複雑さなしで基本的なタスクに対応します。
インストールなしでインターフェースを試すには、ログイン demo とパスワード 123456 で公式デモ oneterm.v1ops.com にアクセスしてください。
関連プロジェクト