ポートフォリオ作成
はじめに
ご覧頂きありがとうございます。
このホームページは、私のこれまでのインフラエンジニアとしての経験をもとに作成し、まとめたポートフォリオです。
これまでの経験を整理し、皆様にどのようなプロジェクトでスキルを磨いてきたかを具体的にお伝えしたいと思い、サーバー構築からセキュリティ監視、クラウドインフラの運用まで、幅広い領域に携わって得た知識を元に作成しました。
新たなチャレンジに挑みたいという強い意欲とともに、これまで培ってきたスキルがどのように役立つかをお伝えできれば幸いです。ぜひご覧いただき、私が貢献できる分野についてご検討いただければと思います。
構成図
Oracle Cloud Infrastructure(OCI)の無料枠を最大限に活用し、最終的な構成は以下のようになりました。
各サブネットの通信はセキュリティリストで制御し、OCI環境(VCN)にリモート接続する際は、VPN接続が必須となります。
詳細については後述します。
クラウドインフラ選定
Oracle Cloud Infrastructure(OCI)
インフラ環境を構築する際、AWSやGCPといった主要なクラウドサービスを検討しましたが、それらのパブリッククラウドは無料枠の制約や価格の点でやや負担が大きく感じられました。コストを抑えつつ、堅牢なインフラ構築ができるサービスを模索する中で、OCI (Oracle Cloud Infrastructure) を選択肢に入れることにしました。
OCIの無料枠の特徴
OCIは、他のクラウドサービスと比べて、無料枠が非常に充実しています。具体的には、最大で4台のサーバー(仮想マシン)を稼働させることができ、これは他の主要クラウドに比べて柔軟性とコストパフォーマンスに優れています。また、他にもOCIの無料枠には、10GBのオブジェクトストレージ、10TBのアウトバウンド・データ転送、ロードバランサー、NATゲートウェイといった様々なサービスが含まれており、実用的なインフラ環境を無料で試せる点が大きな魅力でした。
OCI Cloud Free Tierの詳細についてはこちらをご覧ください。
他クラウドサービスとのコスト比較
AWSやGCPと比較した際のOCIの料金の低さが大きな決め手となりました。特に、デプロイしたインフラを24/365の稼働状態で維持しても、ほとんどのコストが無料枠内に収まるため、最終的にOCIでの構築を選択しました。業務経験のあるAWSと比較して、細かい部分を除けば基本的なコンポーネントの概念や設定方法が非常に似ており、このため、AWSでのインフラ運用経験を活かしながら、OCIのコスト面での優位性を享受できる点が非常にメリットだと感じました。
OCI上で作成した環境
メールサーバ
独自ドメインのメールサーバを設置し、ビジネス用のメール運用を開始しました。このメールサーバは、OCIのComputeインスタンス上でdocker-mailserverを利用して構築しています。インフラ管理の観点から、設定の保守性も高いと感じています。
VPNサーバ
残念ながらOCIにはAWSの様なマネージド 型クライアントVPNサービスは存在しません。そのため、ローカル環境とOCI間のセキュアな通信を実現するために、VPNサーバをOCI上に設置しました。これにより、ローカルからインフラ環境へのアクセスを暗号化し、安全性を確保できるようになりました。VPN構築にはSoftEtherを使用し、OCIのVirtual Cloud Network (VCN) の一部として設定しています。
「インテリア浦芝」のホームページ
家業の一環である内装工事業「インテリア浦芝」のホームページを、WordPressで構築しました。ホームページのサーバもOCI上に構築し、WordPress用のLAMP環境をDockerでデプロイしました。フロントの開発知識は未熟なため、テンプレートから作成した簡易的なページになりますが、管理がしやすく、メンテナンスも容易です。
Zabbixサーバによる監視環境
インフラ全体の監視にはZabbixを導入し、インスタンスの稼働状態をモニタリングしています。OCI上の各コンピュートインスタンスやDockerコンテナに対してリソース使用状況やログ監視を行い、問題発生時にはLINEアプリ通知(LINE Notify)でアラートを受け取れるようにしています。
セキュリティ対策の考慮
ネットワークの分離
セキュリティを最優先とし、すべてのサーバをプライベートサブネットに配置しました。
パブリックサブネット(DMZ)にはロードバランサーのみを配置し、インターネットから直接アクセス可能なサーバは一切設置しません。これにより、外部からの攻撃対象を最小限に抑えています。
WAFの導入
OCIのリージョナルWAFを設定し、ロードバランサーに到達する前のトラフィックをフィルタリングしています。
具体的には、以下のようなセキュリティ対策を施しました。
- SQLインジェクションやXSSなど、アプリケーション層の脅威を防御。
- 不審なIPアドレスや地理的なアクセス制限を適用。
- リクエストにレート制限を設定し、サービスの安定性を確保。
WAFにより、トラフィックを監視・制御することで、ロードバランサーやアプリケーションに届く前に不正リクエストを遮断します。
サービスゲートウェイによる通信制御
プライベートサブネット内のサーバが、必要に応じてOCIの以下のクラウドサービスにアクセスできるよう、サービスゲートウェイを設定しました。
OCIサービスゲートウェイは、AWSのVPCエンドポイントに相当します。
- オブジェクトストレージ(バックアップやファイルの保存に使用)
- メール配信サービス(メールリレーによる配信到達性の向上、OP25B対策)
これにより、インターネットを経由せず、直接クラウドサービスと通信することで安全性を向上させています。
管理アクセスの制限とVPN活用
サーバへのSSH接続や管理コンソール(WordPress、Zabbix、VPN)へのアクセスは、VCN内のプライベートIPアドレスに限定しています。ローカル端末からのアクセスは、必ずVPN接続を経由する必要があります。また、VPN接続には証明書方式を採用し、パスワード認証よりも高いセキュリティを確保しています。この構成により、VPN接続後のみ管理者がアクセス可能となり、不正アクセスリスクを最小化しています。
ログイン・接続監視と通知
ZabbixでSSHやVPN接続のログを監視し、特定のログインイベントが発生した際にはLINEアプリ通知を行う設定にしています。これにより、リアルタイムで不正アクセスを把握でき、迅速な対応が可能となっています。
構成管理と自動化
Terraformによるリソース管理
全てのリソースはTerraformを使用して管理し、コードによるインフラ構成を可能にしました。また、tfstateファイルはOCIのオブジェクトストレージで管理し、障害時も迅速に環境復旧できるように可用性を向上させています。
dockerとdocker-composeによるミドルウェアのデプロイ
メールサーバ、VPNサーバ、WordPress、MySQL、Zabbixなどのミドルウェアをdockerでデプロイし、docker-compose.yamlファイルで設定を一元管理しています。環境の再構築やアップデートも容易で、運用管理の負担が軽減されました。
CertbotによるSSL/TLS証明書更新の自動化
Let's Encryptを使用してSSL/TLS証明書を取得し、3ヶ月ごとの更新はCertbotを組み込んだスクリプトで自動化しました。ロードバランサーへの反映もOCIのAPI経由で実行することで、セキュリティを維持しつつ、手動作業を減らすことに成功しました。
運用コスト
無料枠の活用と月額コストの低減
4台のComputeインスタンス、ロードバランサー、NATゲートウェイ、サービスゲートウェイ、DNS、メール配信など多数のOCIサービスを利用していますが、24/365で稼働している状況でも以下請求書(DNSクエリ回数の請求のみで月額6円)のようなコストで運用可能な状態を維持しています。ほとんどの費用が無料枠でまかなえるため、インフラのランニングコストを大幅に抑えることができました。
ドメインやSSL/TLS証明書の取得方法
OCIではドメイン取得に対応していないため、お名前.com の無料ドメインサービスを活用し、OCIのDNSサービスでゾーンを作成しました。この方法により、コストを抑えながら独自ドメインを利用したメールやWebサービスを実装しています。
また、Let's Encrypt の無料SSL/TLS証明書を使用してHTTPS通信を実現し、安全性を確保しています。これにより、独自ドメインとHTTPSの導入を低コストで達成しつつ、信頼性の高いウェブサービスを提供することが可能になりました。
今後の挑戦
今後さらに学びを深めるため、以下の機能やサービスを取り入れていく予定です。
- ミドルウェアの追加導入
- Redmine: タスク管理や進捗管理の練習を兼ねて導入予定。実際のプロジェクト運営を想定して活用します。
※現在勉強中 - Nextcloud: ファイル共有やコラボレーション環境の構築を目指して導入します。
- Redmine: タスク管理や進捗管理の練習を兼ねて導入予定。実際のプロジェクト運営を想定して活用します。
- インフラ機能の強化
- OCI DevOps(CI/CD): 作成済みのTerraform環境で継続的デリバリーやデプロイの自動化を学びつつ、効率的な開発フローの構築を目指します。
※現在対応中 - パブリッククラウドとの接続:他のクラウドプロバイダー(AWSやAzure)との接続を構築し、マルチクラウド環境の学習を目指します。
- OCI DevOps(CI/CD): 作成済みのTerraform環境で継続的デリバリーやデプロイの自動化を学びつつ、効率的な開発フローの構築を目指します。
- SaaSとの連携
- Cloudflare: セキュリティやパフォーマンスの最適化を学ぶために連携予定です。
- SendGrid: メール通知やマーケティングメールの配信を試すことで、外部サービスとの連携スキルを高めます。
おわりに
ここまでお読みいただき、ありがとうございました。私がこれまで取り組んできた経験とスキルが、少しでも皆様のお役に立てることを願っています。今後も、新しい技術や運用方法を学び続け、さらに効率的で安全なシステムの構築を目指していきます。
もし、私のスキルや経験についてご興味を持っていただけた場合は、ぜひお気軽にご連絡いただければと思います。新たなプロジェクトに挑戦することに意欲的であり、共に成長できる機会を楽しみにしています。どうぞよろしくお願いいたします。
最後になりましたが、本記事で紹介したポートフォリオは、Oracle Cloud Infrastructure (OCI) の無料枠を活用して構築、運用しております。このような素晴らしいクラウドサービスを無料で試用できる機会を提供してくださったOracle社に、心より感謝申し上げます。
また、お名前.com での無料のドメイン取得や、Let's Encrypt による無料のSSL証明書発行をはじめとした各種サービス、日々高品質なソフトウェアを開発・公開してくださる多くのオープンソース開発者の皆様に深く感謝いたします。