[AWS認定トレーニング] Security Engineering on AWS を受けてみました
AWS認定トレーニングとは
AWS認定トレーニングとは、AWSの公式トレーニングメニューであり、クラスメソッドからも、下記のトレーニングを提供しています。 AWS社の厳格なテクニカルスキルチェックに合格した認定トレーナーから教えていただくことができます。
AWS認定トレーニングの中でも今回は、Security Engineering on AWSを受講しました。
Security Engineering on AWS とは
このメニューは、3日間で、AWS を利用する上でのセキュリティの考え方や、AWSのセキュリティサービスについて学ぶことができます。
私が受講した目的は、以下の2点です。
- AWS の様々なセキュリティサービスを理解し、実践でも使えるセキュリティを意識した設計・構築をできるようにしたい
- AWS Certified Security - Specialty (以後、SCS) 認定を取得するため
後者の目的については、今回のトレーニングと試験の対象範囲が被っておりますので、SCS試験を受ける方にもおすすめです!
このトレーニングを受講される対象の方や、受講前にやっておきたいことは、以下の記事に記載されていますので、1度熟読することをおすすめします。
また、 講義を受ける上で、下記のリンク集も使いながら説明を聞いていたため、こちらも参考記事として貼っておきます。
受講してみての感想
感想を箇条書きにします。
- 講義中は、いつでもSlackや直接トレーナーの方に質問ができるため、理解できないまま進む、といったことはなかったです。
- 幅広いAWSのセキュリティ関連サービスを講義やラボ、クイズを通じて、深い理解につなげることができました。また、1つ1つのサービスも詳細な機能まで学べますので、既知のサービスにおいても、新たな学びがありました。
- ラボで実際にサービスを触ることで、受講後、他の機能も気になり触ってみようというハードルが下がったと思います。
- SCSの資格勉強をしておりましたが、自主勉強だけだと理解しにくい点も、この講義や質問を通して、理解することができました。
- 手を動かしながらサービスを触ると理解しやすいため、ラボは、現時点で7つありますが、自主的にできるラボの数がもっとあればよいと思います。
体系的にセキュリティを学ぶ機会は、今までなかったため、今回のトレーニングに参加して満足でした。 自分自身、今まで以上にセキュリティの観点をもって、設計や構築などに取り組めるようになるかと思います。
トレーニングの内容
モジュール(講義)
- モジュール1 AWSのセキュリティ
- モジュール2 AWSのエントリポイントを確認する
- モジュール3 セキュリティに関する考慮事項:ウェブアプリケーション環境
- モジュール4 アプリケーションのセキュリティ
- モジュール5 データセキュリティ
- モジュール6 ネットワーク通信を保護する
- モジュール7 AWSでログをモニタリング、収集する
- モジュール8 AWSでログを処理する
- モジュール9 セキュリティに関する考慮事項:ハイブリッド環境
- モジュール10 リージョン外の保護
- モジュール11 セキュリティに関する考慮事項:サーバーレス環境
- モジュール12 脅威検出と調査
- モジュール13 AWSでの機密情報管理
- モジュール14 自動化と設計によるセキュリティ
- モジュール15 AWSのアカウント管理とプロビジョニング
ラボ(ハンズオン)
- ラボ1 クロスアカウント認証
- ラボ2 AWS System ManagerとAmazon Inspectorを使用する
- ラボ3 AWS Configを使用したモニタリングと応答
- ラボ4 Amazon EC2、Kinesis Data Firehose、Amazon S3、Athenaを使用したウェブサーバー
- ラボ5 AWS KMSを使用する
- ラボ6 AWS Service Catalogを使用する
- ラボ7 ADFSを使用したAWSフェデレーション認証
ラボ6と7は、講義外で自主的に行いました。
モジュール1 AWSのセキュリティ
AWSでのセキュリティの概要を学びました。
AWS クラウド内におけるセキュリティで守る要素(CIA)
- 機密性
- 許可されたユーザーのみが利用できるように制限
- 完全性
- 改ざんや破壊されておらず、内容が正しい状態にあること
- 可用性
- 障害が発生しにくい。障害が発生しても影響範囲が最小
クラウド内のセキュリティでは、以下の4つ観点があることを学びました。
- 可視性
- 自分の環境には何があるか、変更履歴
- 該当サービスの例:Config
- 監査可能性
- リソースにアクセスできるのは誰か
- 該当サービスの例:CloudTrail
- 可制御性
- アクセス制御
- 該当サービスの例:IAM
- 俊敏性とオートメーション
- セキュリティの設定を含めたリソースを迅速にデプロイ
- 該当サービスの例:CloudFormation
モジュール2 AWSのエントリポイントを確認する
ユーザーがAWSにアクセスする方法、ログの管理について学びました。
- APIリクエストの流れ
- リクエスト時、IAMで認証認可され、CloudTrailによって記録後、各AWSリソースのエンドポイントにリクエストされる
- APIコールは、自動的に署名される
- アイデンティティの確認
- 改ざんの防止
- リプレイ攻撃
セキュリティは、IAMに始まりIAMに終わると、トレーナーの方が言うほど、IAMが重要なんだと感じました。
ラボ1
ラボ1では、EC2インスタンスのIAMロールとS3のバケットポリシーを自分で調整し、ポリシーを介した権限を理解することができました。
モジュール3 セキュリティに関する考慮事項:ウェブアプリケーション環境
3層ウェブアプリケーション環境のセキュリティに関する考慮事項を学びました。
脅威を洗い出してから、脅威に対して対策する必要があり、そのツール(考え方)として、STRIDE
を知りました。
- Spoofing of user identity
- 偽造
- Tampering
- 改ざん
- Repudiation
- 否認
- Information disclosure
- 情報漏洩
- Denial of service
- サービス拒否
- Elevation of privilege
- 権限昇格
- 本来与えられないはずの権限がユーザーに与えられること
モジュール 4 アプリケーションのセキュリティ
EC2のセキュリティについて、特に、Inspector の機能や、実際の使い方が勉強になりました。
- Inspector
- version 1と2があるが、version 2を使う
- 脆弱性を検出し、評価する
- エージェントベースで利用するほうがよい
- CVE(共通脆弱性識別子)をチェックできる
- セキュリティ評価を自動化できる
- ベストプラクティスを元にチェック
ラボ3
ラボ3では、EC2インスタンスに、Systems ManagerのRun Commandを使用して、Inspectorをインストールし、セキュリティ評価を体験しました。
モジュール 5 データセキュリティ
データ保護について学びました。
特に、S3のデータ保護の概要と設定方法を理解しました。
SSE (server-side encryption)
- SSE-C
- AWS側では、キーを持たない
- SSE-S3
- S3が暗号化キーを持つ
- SSE-KMS
- データキー(暗号化キー)とKMS Key (CMK)(暗号化キーを暗号化するキー)は、どちらもKMSで管理
S3 リソース保護
- オブジェクトACL
- 普段使うことがない
- バケットACL
- 普段使うことがない
- バケットポリシー
- クロスアカウントや、パブリック公開時に記載する
- IAMポリシー
- IAMロールにアタッチし、EC2インスタンスなどに付与する
オブジェクトロック
- ガバナンスモード
- 特定の権限者のみ編集可能
- コンプライアンスモード
- 誰も書き込みできない
ブロックパブリックアクセス
- デフォルトでONにし、うっかり公開されることを防ぐ
- アカウント単位でON,バケット単位でONができる
ネットワーク通信を保護する
VPCのさまざまなセキュリティ機能について学びました。 AWSに限らず、フォレンジックは、できる業者にまかせる。二次被害になることもあるため、できないことは自分でやらないことが重要だと思いました。
VPCサブネットの種類
- パブリックサブネット
- プライベートサブネット
- 保護されたサブネット
- インターネットアクセスなし
VPCトラフィックミラーリング
- 重い
- トラブルシューティングで使用することがある
エンドポイントの種類
- ゲートウェイエンドポイント
- S3とDynamoDB
- 作成だけだと無料
- インターフェイスエンドポイント
- S3や、他のAWSサービスで利用できる
- 作成だけでも有料
モジュール7 AWSでログをモニタリング、収集する
モニタリングとログ記録戦略の重要性について学びました。
監視と言えば、CloudWatchですが、以下の色々な機能があることを知りました。
CloudWatch
- CloudWatch Synthetics
- 合成監視サービス
- 例、topページにアクセスし、カートに商品を入れて、購入するまでを監視できる
- CloudWatch Alarm
- メトリクスやログを収集して、メールなどで通知を行う
- EventBridge (旧、CloudWatch Events)
- イベント、ルール、ターゲットを組み合わせて使用する
- CloudWatch Logs
- ログ監視サービス
- S3よりも高い
- すぐに分析できる
- CloudWatch Logs Insight
- 高度な分析ができる
モジュール8 AWSでログを処理する
ログを処理する複数の方法を学びました。
Kinesis
- Kinesis Data Streams
- プロデューサー → streams → コンシューマ(Lambdaなど)
- カスタマイズできる
- 自分でプロビジョニングする必要がある
- 1秒以内にコンシューマがデータを入手できる
- コンシューマでいろいろな変換できる
- Kinesis Data Firehose
- プロデューサー → Firehose → S3,Redshiftなど
- シンプル
- 自動で拡張
- データ送信に60秒かかる。リアルタイム性は落ちる
- Lambdaでデータ変換はできる
- Kinesis Data Analytics
- リアルタイムストリーミングデータを読み取り処理、分析できる
Athena
- S3バケット内でSQLを用いて分析できる
- 通信は、TLS,HTTPS
ラボ4
ラボ4で、Kinesis Data Firehose と Athena を用いて、ウェブサーバーのログ分析を体験し、サービスの理解に繋がりました。
Athenaは、サーバーレスで簡便なことがわかったため、今後利用したいと思います!
モジュール9 セキュリティに関する考慮事項: ハイブリッド環境
オンプレミスとの接続に使用するサービスについて学びました。
- サイト間VPN接続 site to site vpn
- 拠点同士を繋ぐ
- VPC - VGW - VPN - CGW - オンプレミス
- 可用性は、AWS側の責任
- ソフトウェアVPN site to site vpn
- 拠点同士を繋ぐ
- EC2インスタンス(ソフトウェアVPN) - IGW - VPN - CGW - オンプレミス
- ユーザー側で管理
- Client VPN
- 拠点と個人を繋ぐ
- クライアントの端末からVPCに接続できる
- Direct Connect
- 拠点間を結ぶ
- Direct Connect ロケーションが拠点間の間を取り持つ
- レイテンシーを改善
- 一貫性のある接続
- Direct Connect Gateway
- Direct Connect から10個まで、VPCを繋ぐことができる
- Transit Gateway
- 複数のVPCとオンプレミスのネットワークを単一のゲートウェイに接続できる
Direct Connectのハンズオンは、色々な企業がたまに開催しているようなので、もし機会があれば参加したいと思いました。
モジュール10 リージョン外の保護
エッジロケーションで、データや環境を保護する仕組みを学びます。
DDoS の緩和アプローチ
- 防ぐのではなく、緩和する
- スケールする
- 攻撃対象領域を最小化する
- ユーザーに近いリソースを保護
- 通常の動作をベンチマークしておき、比較することで改善の確認をする
Route53
- 機能
- 耐障害性
- ヘルスチェック
- 異常検出
- トラフィックフロー
- エニーキャストストライピング
- ネームサーバー4つに分けることで可用性を担保
- シャッフルシャーディング攻撃を分離
- シャッフルシャーディング:シャード内のネームサーバーに顧客をランダムに割り当て、冗長化する
CloudFront
- OAI(オリジンアクセスアイデンティティ)
- OACが上位互換
- S3と連携すると、S3に直接アクセスできなくなる
- 機密データのフィールドレベル暗号化
- CloudFrontで受け取ったら、パブリックキーを使用し、データを暗号化
Shield
- 常時稼働
- ネットワークとトランスポートレイヤーの保護
- Route 53, CloudFront, ELBとの統合
- Advanced
- 24時間年中無休で対応するチームがいる
- 月額3000$
Firewall Manager
- 複数のアカウントで同じセキュリティの設定ができる
- 1つの設定で100$
インシデントへの対応 DDoS緩和方法の例
- CloudFrontでショートキャッシュする
- Route53で、特定の国以外のトラフィックをドロップ
- EC2 Auto Scaling スケールインを無効
実際にDDoS攻撃された場合の具体的な対応事例を聞くことができて勉強になりました。
モジュール11 セキュリティ:サーバーレス環境
サーバーレスサービスのセキュリティ機能について学びました。
Cognito
- ユーザープール
- サインアップ、サインイン
- ウェブUI
- アダプティブ認証
- 不審なアクセスに対して、ブロックやMFAを要求する
- 漏洩した認証情報のチェック
- IDプール
- ユーザーがサポート対象の ID プロバイダーを使用しサインインする
- Cognitoユーザープール
- FaceBookなどのプロバイダー
- ユーザーがサポート対象の ID プロバイダーを使用しサインインする
API Gateway
- アプリケーションの玄関
- 認可とアクセスをコントロール
- APIエンドポイントのアクセスコントロール
- リソースポリシーでコントロール
- 特定のユーザー、IP、CIDRブロックなどがコントロールできる
- リソースポリシーでコントロール
- キャッシュできる
- DDoS攻撃の軽減
モジュール12 脅威検出と調査
Amazon GuardDuty、AWS Security Hub、Amazon Detectiveの概要について学びました。
GuardDuty
- 脅威検出と監視
- 疑わしい攻撃者を特定する
- 機械学習を用いて異常を検出
- 検出カテゴリの一部
- ポートスキャン
- ビットコインアクティビティ
- RDPブルートフォース攻撃
Security Hub
- AWS のセキュリティサービスから検出結果を統合
- 最優先のセキュリティ上の問題を順位付け
- AWS 基礎セキュリティのベストプラクティス v1.0.0 で十分
Detective
- フルマネージド
- インシデントの調査
- ログやGuardDutyの検出結果など収集した情報を分析し、可視化できる
GuardDutyから指摘があった場合、Detectiveを使って色々調査できそうなので、指摘があった場合、試してみようと思いました。
モジュール13 AWSでの機密情報管理
AWS KMS、AWS CloudHSM、AWS Secrets Managerについて学びました。
KMS
- エイリアスとマスターキーを作成
- キーの使用は、CloudTrailで監査する
- キーの保護
- リソースベースポリシー
- 許可(Grants)
- 一時的なアクセス許可
- プログラムを使ってCMKを委任
- キーのインポート
- キーマテリアルをインポートできる
- ローテーション
- 古いキーも復号時に使用される
- マルチテナント
- FIPS 140-2 レベル2 のコンプライアンスに対応
CloudHSM
- 不正開封防止が備わったハードウェアデバイスを使用して、キーを作成して、保存
- キーの管理は、お客様
- シングルテナント
- FIPS 140-2 レベル3 のコンプライアンスに対応
KMS カスタムキーストア
- KMSとCloudHSMの折衷
- シングルテナント
- FIPS 140-2 レベル3 のコンプライアンスに対応
AWS Secrets Manager
- 自動ローテーション
- DB情報などを保存
KMSは、リソースベースポリシーだけでなく許可(Grants)という機能でアクセス許可をしている点が、他のawsサービスにはない点ですね。
ラボ5
ラボ5では、KMSの設定方法、KMSを用いてEBSの暗号化、S3の暗号化を行い、KMSの暗号化の設定を体験しました。
モジュール14 自動化と設計によるセキュリティ
AWS CloudFormation、AWS Service Catalogについて学びました。
CloudFormation
- IaC (Infrastructure as Code)
- リソースを作成(スタック)
- モジュラー設計
- 更新サイクルが異なる場合、スタックは分割する
- IAMの設定 (IAM,CloudTrail)
- 一度作成したら変更しないスタック
- VPC (VPC,サブネット)
- 一度作成したら変更しないスタック
- アプリケーションアーキテクチャ(ELB,S3,セキュリティグループ)
- 頻繁に更新があるスタック
- アプリケーション(EC2,RDS,AutoScaling)
- テンプレートに認証情報は埋め込まない
- Secrets Managerを利用する
Service Catalog
- 管理者がポートフォリオ(製品と設定情報コレクション)とテンプレートを作成し、ユーザーが利用できる
- 製品:CloudFormation テンプレート
- ユーザーは、権限がなくてもスタックをデプロイできる
ラボ6
ラボ6は、Service Catalogのポートフォリオの作成、製品を作成しポートフォリオに追加、Service Catalogを利用して製品の起動を行い、Service Catalogの製品の起動までの流れを理解することができました。
モジュール15 AWSのアカウント管理とプロビジョニング
AWS Organizations、AWS Control Towerについて学びました。
Organizations
- 複数のアカウントを一元管理
- 組織単位(OU)
- 複数のアカウント全体でポリシーの管理
- 一括請求モードと全ての機能モードの2つがある。基本的には、全ての機能モードを利用する
- すべてのアカウントのログを記録できる。
- ルートOUにFullAWSAccess がついていないと、何もできない
- ルートユーザーも制約を受ける
Control Tower
- Organizationsを拡張したサービス
- ランディングゾーンのベストプラクティスに基づいて、複数のアカウントのセットアップを自動化する
- ガードレール
- ルールの内容例:CloudTrail の設定変更を許可しない
- タイプ:必須、推奨、選択的
- 動作:予防、検出
- 予防は、SCP
- 検出は、Config
IAM アイデンティティセンター (AWS Single Sign-On の後継)
- 複数の AWS アカウントとアプリケーションへの SSO アクセスを一元管理できる
Directory Service
- 種類
- Simple AD
- AD Connector
- Managed Microsoft AD
複数のアカウントを所持している場合、AWS Organizationsは必須のサービスだと感じました。
ラボ7
Windowsサーバーに ADFSをインストールし、フェデレーティッドユーザーが AWSの管理コンソールにログインするまでの流れを学びました。 AWSサービスよりもWindowsサーバー内での作業が多かった印象です。
最後に
個人でもお申し込みできますので、気になる方は、下記のリンクからチェックしてみて下さい。