AWS 認定セキュリティ - 専門知識 試験対策


# はじめに

AWSのアソシエイトを三冠取ったので、次はSCSを取ろうと思い勉強はじめました。
その時のノートです。参考程度になればと思います。

### SCSの私の勉強法

- 参考書ベースで機能をざっと把握
- 参考書の最後の問題集とく
- AWSが無料で提供している問題とく
- 「AWS WEB問題集で学習しよう」で問題を解く
- [要点整理から攻略する『AWS認定 セキュリティ-専門知識』](https://www.amazon.co.jp/%E8%A6%81%E7%82%B9%E6%95%B4%E7%90%86%E3%81%8B%E3%82%89%E6%94%BB%E7%95%A5%E3%81%99%E3%82%8B%E3%80%8EAWS%E8%AA%8D%E5%AE%9A-%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3-%E5%B0%82%E9%96%80%E7%9F%A5%E8%AD%98%E3%80%8F-NRI%E3%83%8D%E3%83%83%E3%83%88%E3%82%B3%E3%83%A0%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/4839970947/ref=asc_df_4839970947/?tag=jpgo-22&linkCode=df0&hvadid=342518373760&hvpos=&hvnetw=g&hvrand=15959477939515007048&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009309&hvtargid=pla-920906043035&psc=1&th=1&psc=1)

---

2022/05/21 に受験して、[Score : 823]で合格しました。
所感としては
- KMSについてがめちゃくちゃ聞かれる
- GuardDutyが意外と細かいところまで聞かれる
- ルートアカウント周りもまあまあ聞かれる
- 初見問題もそこそこあった

---



### AWS Directory Service

- AWS内でマネージド型のMicrosoft Active Directoryを利用するためのサービス
- ３種類のパターン
    - `AWS Managed Microsoft AD`
        - AWS上にマネージド型のMicrosoft ADを構築するサービス
        - AWS上にフルスペックのMS ADを構築する場合
    - `Simple AD`
        - Linux-Samba Active Directoryで構築されたマネージド型ディレクトリサービス
        - シンプルな要件のユーザーID・パスワード管理のみで利用
    - `AD Connector`
        - 既存のAD(主にオンプレ)に対してリダイレクトするADのプロキシサービス    
        - オンプレ上など既存のADを利用したい場合
- オンプレとの接続パターン
　　　　-　AD Connector : 既存のADに対して`認証プロキシ`として動作させる
　　　　-　MS ADを構築し既存のADと`双方向の推移的信頼関係`を構築
　　　　-　どちらも、VPCを利用して専用線を接続するのが一般的


### Cognito

- web/モバイルアプリのユーザーの認証・認可を行うサービス
- 認証認可の登場人物
    - 利用者 : アプリの操作
    - Identity Provider : ユーザーの認証を行う
    - Federated Identities : 認証時に取得したトークンをもとに一時キーを取得
    - IAM : 一時的に付与する権利の管理
- `Cognito ユーザープール`   
    - ID・パスワードを管理するディレクトリサービス 
        - ユーザー名とパスワードを使用したサインアップ・サインイン機能
        - トークンベースの認証機能
- `Cognito IDプール`
    - 認可の機構を提供
    - AWSリソースを操作するための一時キーである Temporary security credentialを払い出す役割を持つ
    - IAMとSTSをラップして、SDKから簡単に利用できるようにしたもの
    - IDプールでは、UserPools以外に次のIDプロバイダーと連携可能
        - Twitter
        - Facebook
        - Google
        - OpenID Connectプロバイダー
        - SAML ID プロバイダー


#### AWS Organizations

- 複数のAWSアカウントをまとめるためのサービス
- ルートと呼ばれるマスターアカウントと、それに紐づく子アカウントであるメンバーアカウントの２種類



### WAF

- WEBアプリケーションに対するリクエストの内容をチェックし、攻撃パターンに合致するリクエストをブロックすることでシステムを防御するFW
- CloudWatchと連携させることで、リアルタイムに攻撃を検知したり、攻撃の分析を行うことができる
- `CloudFront / ALB / API Gatewayの保護に役立つ`
- 攻撃検知ルール
    - マネージドルール
    - ユーザー定義ルール
    　　　　-　IP制限
    　　　　-　レートベースルール
    　　　　-　特定の脆弱性に関するルール
    　　　　-　悪意あるhttpリクエストを判別するルール
- AWS WAF以外のWAF
    - EC2として動作させるバーチャルアプライアンス型のWAFもセキュリティベンダから提供
    - カスタマイズ性を重視する場合はこの選択



### AWS Shield

- DDoS攻撃からシステムを守るためにサービス
- `AWS Shield Standard`
    - 受信トラフィックを検査・分析することで悪意のあるトラフィックをリアルタイムで検知
    - WAFを利用することでアプリケーションレイヤーのDDoS攻撃対策できる
    - WAFとshieldを組み合わせることで基本的なDDoS攻撃はカバーできる
- `AWS Shield Advanced`
    - EC2,ELB,CloudFront,GlobalAccelerator,Route53を対象


### AWS Firewall Manager

- AWSのFWにあたる、WAF / shield Advanced / VPC Security Groupのポリシーを一元管理するためのサービス


### Artifact

- 「`AWS Artifact Reports`」
    - コンプライアンスドキュメントをダウンロードするためのサービス
    - ISO認定
    - PCIレポート
    - SOCレポート 
- 「`AWS Artifact Agreements`」
    - AWS契約の状況を確認、受諾、追跡するためのサービス 
    - 特定の規制の対象となる顧客に対応するために、様々な種類の契約を用意



### KMS

- 暗号化キーの作成と管理を行うマネージド型のサービス
- `操作履歴は全てCloudTrailに保存される`
- 自動キーローテーション
    - 新しいCMKを作成し、それ以降の暗号化処理は新しいCMKを使用する
    - パッキングキー


### AWS Secrets Manager

- RDSなどのAWSサービスの認証情報や、DB認証情報などの保存を目的に使用する
- 自動ローテーション(強み)
- 料金
    - シークレット1件あたり0.40USD/月
    - 10,000回のAPIコールあたり0.05USD


### AWS System Manager Parameter Store

- パラメータストアでは暗号化されないプレーンなデータと暗号テキストの両方を保存することできる
- 自動ローテーション機能はない
- CFnなど、数多くのAWSサービスと連携可能
- 利用料金は無料 (暗号化してればKMSの料金はかかる) 
- 基本的にこれを使えば良い


---

### AWS Systems Manager

- 複数サーバーの管理に向いているサービス


#### Session Manager

- SGの許可不要、SSHキーも不要でサーバーにSSHやPowerShellで接続ができる


#### Maintenance Windows

- メンテナンス時間をcron形式で設定できる
- この機能単体では利用せず、ここで設定した時間帯にAutomationなどのタスクと実行対象のサーバーを登録してメンテナンス作業を実行することができる

#### Run Command

- 複数のサーバーに一括でコマンドを実行できる


#### Automation

- 複数の処理をAutomation Documentという形でステップで記載し、それを実行


#### State Manager

- サーバーをあらかじめ定義した状態に保つための機能

#### Inventory

- サーバー上で稼働するソフトウェアの一覧を表示することができる


#### Patch Manager
- パッチの適用状況の確認及び自動適用を行うことができる

---



### AWS Config

- AWSリソースやEC2インスタンス、オンプレミスサーバーの設定の変更管理、変更履歴のモニタリングを行うためのサービス
- 設定内容が継続的にモニタリングされ、configルールと呼ばれる事前に定義した「あるべき設定」との乖離を評価できる
- 変更発生時にはCloudWatch Eventsをトリガーしたり、SNSを用いてユーザーに通知を送ることも可能
- 変更の履歴も記録されていくため、コンプライアンス監査やセキュリティ分析のための資料として利用可能
- 設定履歴の保存
    - AWSリソースの設定内容の変更とEC２インスタンス、オンプレミスサーバーのオペレーションシステム設定やアプリケーション設定
    - オンプレサーバーをモニタリングしたい時は、System Managerに対象のサーバーをマネージドインスタンスとして登録し、ソフトウェアインベントリの収集を開始することで可能
- トラブルシューティング
    - 設定変更の発生ごとに履歴が残るので、運用上でトラブルが発生した場合にconfigより設定の変更履歴を追うことができる。具体的に「いつの時点でどういった変更となったか」が確認できる
    - CloudTrailは「誰が、いつ、どういった変更要求を呼び出したのか」   

### CloudTrail

- AWSアカウントに対する操作のログを記録するサービス
- どのユーザーが、どのリソースに、いつ、何をしたかということを詳細に追うことができる
- 取得したログはS3にファイルとして出力したり、CloudWatch Logsに連携可能
- CloudTrailで取得できる操作機能
    - 管理イベント
        - マネージドコンソールへのログインと、EC2インスタンス、S3バケットといったAWSリソースの作成、変更、削除といった操作 
        - デフォルトで有効なのはこれだけ
    - データイベント
        - S3バケット上のデータ操作、Lambda関数の実行など、リソースオペレーションに関するもの　 
    - インサイトイベント 
        - AWSアカウント内で検知された異常なアクティビティ 
- S3への証跡保存
    - 過去90日以前の操作履歴を保存するためにはS3へCloudTrailログファイルを出力する設定を行う必要がある
    - このログファイルは「証跡(Trail)」  と呼ばれる
    - SSE-S3を使用して暗号化された状態で保存できる
    - ユーザーがコントロールしたいならKMS
        - 権限を持っているユーザーのみがログを参照可能というメリット
    - 改変や削除を防ぐために対策すべき
- ダイジェストファイルを使ったログの整合性確認
    - 保存されたログが改竄されていないことを証明
    - 整合性の検証機能を有効化すると配信する全てのログファイルに対してハッシュが作成
    - １時間ごとに過去１時間のログファイルを参照し、それぞれのハッシュを含むファイルを配信するようになる
    - ダイジェストファイルには、ログファイルの名前とそのハッシュ値、前のダイジェストファイルのデジタル署名などが含まれる
    - ログの整合性確認方法 : `CloudTrailvalidate-logs`コマンド    

### X-Ray

- アプリケーション内で発生するサービス間リクエストを収集し、分析するためのサービス
- レイテンシや障害発生率を検出できるため、パフォーマンスのボトルネック調査のような内部処理を細かく追う必要があるときに便利
- 対応アプリケーション
    - EC2
    - ECS
    - Lambda
    - Elastic Beanstalkで実行しているNode.js, Java, .NETアプリ
- 対象のアプリケーションにX-Ray SDKを統合し、X-Rayエージェントをインストールすることで、X-Rayがデータをキャプチャできるようになる  



### Inspector

- セキュリティ評価のためのサービス
- EC2にインストールしたエージェントが取得する情報からEC2インスタンスのネットワークアクセスおよび、そのインスタンスで実行しているアプリケーションのセキュリティ状態を評価できる
- `ルールパッケージ`と呼ばれるセキュリティチェックのコレクションを選択し、評価テンプレートと呼ばれる評価の実行設定を作成しておくことで、評価テンプレートに沿って自動的にセキュリティチェックが行われる
- 評価テンプレート
    - ルールパッケージ
        - ネットワークの到達可能性をチェックするもの
            - Inspector agent いらない
            - InspectorによってEC2のネットワーク構成が分析され、ネットワークを通してどのようなアクセスがEC2に届くか検査
        - EC2インスタンス自体の脆弱性・問題のある設定をチェック(ホスト評価)
            - anegt必要      
            - エージェントがホストにインストールされたソフトウェアデータと設定データを収集
            - 収集されたデータはInspectorが受信し、ルールパッケージと比較することでセキュリティの問題がないかを検索
            - ホスト評価ルール
                - 共通脆弱性識別子
                - CIS
                - セキュリティベストプラクティス
    - 評価実行期間
    - 通知の送信先
- ユーザーが独自にルールを定義することはできない  
- 評価ターゲット
    - 評価対象は評価ターゲットというグループで管理
    - EC2にタグを付与しておき、対象のタグを持つEC2インスタンスのみ評価とか可能 

### Athena

- S3に格納されているデータに対しSQLで分析ができるサービス
- CSV, JSON, 列データ形式、GZIP形式のデータにも対応
- AthenaではSQLを実行するため、通常のDBと同様にテーブルや列名などのスキーマ情報をメタデータとして持つ必要がある
- これらのメタデータは、AWS Glueというサービスのデータカタログに格納
- Athenaではそこに格納されたスキーマをもとに、S3上にあるファイルに対してSQL実行

### S3に保存されるAWSサービスのログ

- CloudTrailの証跡
- ELBのアクセスログ
- CloudFrontのアクセスログ
- GuardDuty結果ファイル
- WAFのログ
- VPC Flow Logs



### VPC Flow Logs

- VPC内のIPトラフィック状況をログとして保存できる`VPCの機能`
- `CloudWatch Logs`または`S3`上に保存することができる    
- 監視要件がある場合はCloudWatch Logsを、必要な時に確認できればOKならS3
    - CloudWatch LogsはS3と比べて料金が高くなるので注意が必要 
- フローログはNIC単位で出力
- 通信パケットの詳細な情報はフルーログで確認できないため、パケット確認が必要な場合はEC2にキャプチャツールを導入
- S3にフローログを出力している場合、Athenaを使用することでSQLを使用したログ確認が可能  


### Amazon QuickSight

- AthenaやS3上のファイルを可視化できる
- サポートされるデータソース
    - Amazon Athena
    - Amazon Redshift
    - MYSQL
    - Amazon Aurora
    - S3
    - PostgreSQL



### Amazon OpenSearch Service

- OpenSearchというオープンソースのRESTful分散検索/分析エンジンのクラスタをAWSクラウド上にデプロイして利用できるようにするマネージド型サービス


### AWS Trusted Advisor

- コスト、パフォーマンス、セキュリティ、フォールトトレランス、サービス制限の5つの観点からチェックを行うサービス
- リアルタイム検知を行いたい場合はCloudWatchを併用 


### Amazon Macie

- S3上にある個人情報や機密情報をチェックし、その利用状況を合わせて監視する

### Amazon GuardDuty

- AWS上で発生する不正やセキュリティイベントなどの脅威を検出するサービス
- サービスをワンクリックで有効化でき、すぐにAWSアカウント内のセキュリティ状況を分析できる
- インプット情報となるのは`CloudTrail, VPC Flow Logs, DNS Logs`の３種類
- 情報の検出にはMLが組まれており、様々な条件で脅威を検出することが可能

### AWS Security Hub

- AWSのセキュリティ状況やコンプライアンスの準拠状況を１箇所で確認できるサービス
- AWS上にあるセキュリティ情報の集約場所のような役割を担っている
- 主要機能
    - CIS AWS Foundations BenchmarkやPCI DSSといった基準に従ったコンプライアンスチェック
    - GuardDuty, Macie, Inspector, Firewall Manager, IAM Access Analyzerといった各種AWSのセキュリティサービスや3ed Partyのセキュリティサービスの検出、アラートの一元管理 

### Amazon Detective

- Detectiveは発生したインシデントについて時系列情報を含んだ形で調査できるサービス
- VPC Flow logs, cloudTrail, GuardDutyなどのほかのAWSサービスの情報をインプットに潜在的なセキュリティ問題や不審なアクティビティを分析、調査できるサービス
- GuardDutyは発生したセキュリティイベントを検知するため、発生したイベントベースでの調査を行うことになる
- Detectiveでは過去のログやイベント情報をといった時系列の観点を含み、グラフなどで視覚化することが可能