AWS ECSの日常運用とセキュリティの改善ためのE1sの使用

Posted on Dec 31, 2024

はじめに

いまのでは、私がいるSREチームは開発者がORMメソッドを通じてデータベースにアクセスできる機能を提供していました。これには、セキュリティを確保しながら本番環境の最新スキーマを維持する必要のため、本番環境複製して、開発者アクセス用の環境を提供してきました。

以前、システムの本番トラフィックは完全にEC2からECSに移行しましたが、データベースアクセスのワークフローはレガシーな移行が完了していなかったため、引き続き専用のEC2インスタンスに依存していました。しかし、このアプローチにはいくつかの課題がありました:

  • SSHキーの管理:サーバーアクセス用
  • スケーラビリティの制限:運用オーバーヘッド
  • 複雑なCI/CDパイプライン:EC2インスタンスに紐づいている
  • 高額なAWSコスト:継続的なEC2使用による
  • セキュリティリスク:粒度の低いアクセス制御と限られた監査機能

これらの問題に対処するため、e1s(ターミナルでECSリソースを管理するCLIツール)をECS Execと統合し、データベースアクセスのEC2ベースのワークフローを置き換えました。この移行により、運用が簡素化され、コストが削減され、セキュリティが向上しました。

旧ワークフローと新ワークフローの比較

旧ワークフロー:専用EC2インスタンス経由のアクセス

  • チームメンバーは特定のEC2サーバーにSSHキーを使用してログイン
  • 運用タスクはこれらのインスタンス上で手動実行

old-workflow.png

新ワークフロー:e1sを使用したECSベースの運用

  • チームメンバーは、onelogin aws assume role cli(OneLoginは私たちの会社全体で使用しているIDプロバイダー)を使用して、AWSの一時的な認証情報を取得します。
  • セキュリティ上の理由から、本番コンテナのexecは無効にしたままで、運用コンテナに対してECS Execアクセスを有効にします。
  • チームメンバーは、e1sを使用し、特定のAWS認証情報でECS Execを簡単に実行して、監査ログが完全に記録された状態でコンテナを操作します。

new-workflow.png

メリット概要

複雑さの軽減

  • SSHキーと専用EC2サーバーの必要性を排除し、キー管理に関連する手動運用を削減
  • EC2デプロイメント要件を削除することでCIワークフローを簡素化

セキュリティの強化

  • SSHキーの管理が不要となり、忘れたり紛失したりするリスクを排除
  • 本番環境のシークレットを特定のECSコンテナに分離
  • OneLogin付与のIAMロールを通じてロールベースのアクセス制御(RBAC)を強制
  • ECS Execの出力をS3にログ記録し、監査とトレーサビリティを向上

コスト効率

  • 継続的なEC2インスタンスを削除することでAWS費用を大幅に削減
  • EC2固有のデプロイメントパイプラインを排除することでCIコストを削減

結論

現代のテックチームにとって、インフラストラクチャのセキュリティと運用効率の管理は重要です。e1sへの移行により、私たちの運用はよりスリムで、より安全で、よりコスト効率の良いワークフローへと改善されました。e1sが皆様のツールキットの一部となり、私たちと同様に運用を簡素化することを願っています!