セキュアなアーキテクチャの設計
Design Secure Architectures
学習目標
- IAM ユーザー・グループ・ロール・ポリシーと、STS によるロールの切り替え・クロスアカウントアクセスを使い分けられる
- Organizations・SCP・Control Tower・IAM Identity Center で複数アカウントの統制を設計できる
- パブリック/プライベートサブネット、セキュリティグループ、ネットワーク ACL、NAT ゲートウェイ、VPC エンドポイントで通信経路を設計できる
- KMS・ACM・Secrets Manager・S3 の暗号化とアクセス制御、バックアップとレプリケーションで、データ保護の要件を満たせる
要点
- 人には IAM Identity Center(または社内 ID とのフェデレーション)、アプリやサービスには IAM ロールの一時的な認証情報を使う。長期のアクセスキーは最小限にし、ルートユーザーは MFA で保護して日常作業に使わない。
- IAM のポリシー評価では、明示的な拒否が常に優先され、どこにも許可がなければ暗黙的に拒否される。SCP やアクセス許可の境界は「許可の上限」を決めるもので、それ自体は権限を与えない。
- 別アカウントのリソースへのアクセスは、アクセス先アカウントのロールを AssumeRole する方法か、S3 バケットポリシーなどのリソースベースのポリシーで相手を許可する方法がある。
- Web サーバーはパブリックサブネット(または ALB のみパブリック)、アプリとデータベースはプライベートサブネットに置く。プライベートサブネットからインターネットへ出るには NAT ゲートウェイ、S3 や DynamoDB へインターネットを経由せずに接続するにはゲートウェイ VPC エンドポイントを使う。
- セキュリティグループはステートフルで許可ルールのみ、ネットワーク ACL はステートレスで許可と拒否を書け、サブネット単位で特定の IP を拒否したいときに使う。
- SQL インジェクションやクロスサイトスクリプティングは AWS WAF、DDoS は AWS Shield(Standard は自動・無料、Advanced は有料の高度な保護)。脅威検知は GuardDuty、S3 の機密データ検出は Macie、脆弱性スキャンは Inspector。
- 保存時の暗号化は KMS(キーポリシーで誰が鍵を使えるかを制御し、自動ローテーションを設定できる)、転送時の暗号化は ACM の証明書で TLS。データベースのパスワードは Secrets Manager で自動ローテーションする。
- S3 のデータ保護:パブリックアクセスのブロック、バケットポリシー、バージョニング、オブジェクトロック(WORM・保持期間)、レプリケーション(別リージョン・別アカウントへの複製)。バックアップの一元管理は AWS Backup。
業務での使いどころ
- 経理請求書 PDF を保存する S3 バケットで、パブリックアクセスをブロックし、KMS キーで暗号化。法定保存期間はオブジェクトロックで削除や上書きを防ぐ。
- 総務子会社ごとの AWS アカウントを Organizations でまとめ、SCP で東京・大阪以外のリージョンの利用を禁止。社員は社内 ID で IAM Identity Center からサインインする。
- 営業営業支援システムの DB パスワードを Secrets Manager に保存して自動ローテーション。アプリは IAM ロールで取得し、コードにパスワードを書かない。
公式のタスクステートメント(英語)
- 1.1 Design secure access to AWS resources.
- 1.2 Design secure workloads and applications.
- 1.3 Determine appropriate data security controls.