☁️
クラウドインフラサービスを利用時のチェックリスト
皆さま、こんにちは。株式会社ホロラボの秋猫です。
弊社はこれまで XR 系の技術開発に注力してまいりましたが、PoC の先を見据えて実用性を追求するため、新たに Web 開発分野にも力を入れております。私自身もその挑戦の一貫として Web エンジニアとして入社いたしました。
さらに、組織の急速な拡大に伴い、開発の効率化と品質向上を実現するためのガイドライン策定にも取り組んでおります。そこで今回は、私が担当した Web 開発およびクラウドインフラサービスを活用した開発・運用に関するチェックリストをご紹介いたします。
- Webサービス開発時のチェックリスト
- クラウドインフラサービスを利用時のチェックリスト[本記事]
チェックリストの方針と注意点
本チェックリストは、実際に活用される事を最優先に設計しています。具体的には以下の点に留意しながら作成しております。
-
実用性の重視
現場で実際に使用されることを前提に網羅性や詳細さに偏りすぎず、読みやすさと実践的な内容のバランスを取っています。 -
更新負荷の軽減
あまりに細かい情報を盛り込むと頻繁な更新が必要になり、結果として古い情報が残ってしまう恐れがあります。そのため、あくまで調査や検討のきっかけとなる内容に留めています。 -
継続的な改善
チームメンバーの成長や頂いたフィードバックを反映しながら、チェックリストは定期的に更新・改善を進めてまいります。 -
必須項目と推奨項目の区分
実際のリストは「必須」と「推奨」に分かれておりますが、プロジェクトの背景により必須とした項目が対象外となる場合もございます。
1. アカウント管理
- アカウントの多要素認証(MFA)を設定している
- 最小権限原則に基づいたアカウントとロールの権限設定を行っている
- 不要なアカウントや過剰なアクセス権限がないかの定期的な見直しを行っている
- 定期的にアカウントのログイン履歴を確認している
- 不正なログイン試行があった際にアラートを通知するなど
- サービスやプログラムの利用するアカウントにユーザーに紐づくアカウントを利用していない
2. ネットワークセキュリティ
- ファイアウォール設定などで不要なポートやプロトコルを拒否している
- プライベートサブネットとパブリックサブネットを適切に設定している
- インスタンスへの安全な接続方法を確立している
- 特定の IP アドレスからの接続のみを許可した踏み台サーバーを用意する
- プロバイダのセキュアな接続が行えるサービスを利用する
3. データセキュリティ
3.1 データ暗号化
- ストレージやデータベース内のデータを暗号化している
- データ転送時に暗号化を行っている
- プログラムに反映する機密情報を暗号化している
- 例: クラウドの専用サービスを利用する
- AWS Secrets Manater, Google Cloud Secret Manager, Azure Key Vault
3.2 アクセス制御
- 非公開データに対するアクセス経路を切断している
- 機密データに対するアクセス経路や認証方法を定めている
- アクセスログを保存し定期的に確認している
3.3 バックアップとリカバリ
- 定期的なバックアップを実施している
- 障害時の復旧手順を作成している
- 実施テストを行っている
4. モニタリング
4.1 監査ログ
- すべての重要なアクティビティのログを有効にしている
- 不正アクセスや異常なアクティビティを検出する為の監視設定を行っている
- ログの保存期間を定め設定している
- 定期的にログや監視設定のレビューを行っている
- 必要な情報(種類と内容)がログに出力されているか
- 監視設定の検出条件に過不足がないか
4.2 リソース監視
- CPU/メモリ/ファイルIOなどのメトリクスを取得している
- メトリクスに対するアラートなどの監視設定を行っている
- 定期的にメトリクスや監視設定のレビューを行っている
- 請求アラートを設定している
5. アプリケーションセキュリティ
- 脆弱性スキャンを実施している
- ペネトレーションテストを実施している
- WAF (Web Application Firewall) を導入している
- 以下は導入しているなら
- 誤検知を最小限に抑える調整を実施している
- 重要な攻撃パターンをブロックしている
- WAFルールを定期的に更新している
- WAFのログを監視している
6. インフラストラクチャセキュリティ
6.1 インスタンスのパッチ管理
- 対象となる脆弱性情報の取得方法を策定している
- OS のセキュリティアップデートを定期的に行っている
- コンテナもベースは Linux のいずれかのディストリビューションなので同様
- 緊急パッチの適用手順を定めている
6.2 コンテナセキュリティ
- 信頼できるベースイメージを利用している
- プログラムを root 以外のユーザーで実行している
- コンテナイメージの脆弱性スキャンを行っている
6.3 インフラ変更の監視と管理
- 汎用的な Terraform や各種クラウドの IaC サービスを使ったコード化を行っている
- バージョン管理及びレビューを行っている
7. 障害対策
- 複数のクラウド/リージョン/アベイラビリティゾーンを利用し冗長性を確保している
- 障害発生時の対応手順を策定している
- セキュリティインシデント発生時の対応手順を策定している
推奨資料
AWS
- AWS Foundational Security Best Practices - AWS Audit Manager
-
AWS 運用のベストプラクティス - AWS Audit Manager
- Security Hub という設定ミスなどがないかチェックしてくれるサービスもあります
- IAM でのセキュリティのベストプラクティス - AWS Identity and Access Management
- VPC のセキュリティのベストプラクティス - Amazon Virtual Private Cloud
- 暗号化のベストプラクティスの概略 - AWS 規範ガイダンス
- AWS CloudTrailでのセキュリティのベストプラクティス - AWS CloudTrail
Google Cloud
-
Cloud セキュリティ ベスト プラクティス センター | Google Cloud
- 一部はブループリントとして実行可能な Terraform のコードが提供されています
- Google Cloud 設定チェックリスト | Documentation
- Google Cloud アーキテクチャ フレームワーク | Cloud Architecture Center
- サービス アカウントの使用に関するベスト プラクティス | IAM Documentation | Google Cloud
- VPC 設計のためのおすすめの方法とリファレンス アーキテクチャ | Cloud Architecture Center | Google Cloud
- Cloud Security の暗号化 | Google Cloud
- Cloud 監査ログのベスト プラクティス | Cloud Logging | Google Cloud
Azure
- セキュリティのベスト プラクティスとパターン - Microsoft Azure | Microsoft Learn
- Azure 資産のセキュリティに関するベスト プラクティス - Azure security | Microsoft Learn
- Azure で運用可能なセキュリティのチェックリスト | Microsoft Learn
- Azure Operator Nexus サービス プリンシパルのベスト プラクティス | Microsoft Learn
- ネットワーク セキュリティのベスト プラクティス - Microsoft Azure | Microsoft Learn
- データ セキュリティと暗号化のベスト プラクティス - Microsoft Azure | Microsoft Learn
- Azure Monitor のベスト プラクティス: データ収集を構成する - Azure Monitor | Microsoft Learn
コンテナ
- 公式のセキュリティ以外も含めたコンテナに関するベストプラクティス
- Dockerfile の Linter
- 脆弱性診断ツール
- その他
Discussion