AWS認定試験 AWS Certified Security - Specialty(SCS)受験対策記録→合格体験記！

# はじめに
目下わたしはAWS Security Specialty 認定資格の勉強中です。
AWSの認定資格としてはSAAにつづき2つ目となります。

自分のアウトプットを兼ねて、勉強中の内容をまとめてみようと思います。
（記事内容は2021/12時点のものとなります、ご承知おきください。）

# 試験について
公式資料はこのあたり。
[AWS Certified Security - Specialty](https://aws.amazon.com/jp/certification/certified-security-specialty/)
[試験ガイド](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-security-spec/AWS-Certified-Security-Specialty_Exam-Guide.pdf)
> AWS Certified Security - Specialty(SCS-C01) 試験は、セキュリティ担当者を対象としています。この試験では、受験者が AWS プラットフォームのセキュリティ保護を理解していることをきちんと証明できるかどうかを検証します。

とのこと、出題範囲は以下5分野で65問ですが
> 
第 1 分野: インシデントへの対応 
第 2 分野: ログ記録とモニタリング 
第 3 分野: インフラストラクチャのセキュリティ 
第 4 分野: アイデンティティ管理とアクセス管理 
第 5 分野: データ保護 

65問中15問は採点対象外とか・・・そんなことあるんだ:alien:



# 試験対策
先人の記事も参考にさせていただきつつ:raised_hands:
現在形で進めている内容をまとめてみます。

https://kdnakt.hatenablog.com/entry/2020/11/01/090000

https://qiita.com/tomoki-koike/items/7acd2aec5401ee98d592

https://qiita.com/go_sougen/items/7a96d2358ffc5eceb960

基本的には[前回ITIL受けた](https://qiita.com/t_ake-it-easy/items/81641226e7c68c0a8138#%E5%8B%89%E5%BC%B7%E6%96%B9%E6%B3%95)時と学習方法の流れは一緒。

https://qiita.com/t_ake-it-easy/items/81641226e7c68c0a8138#%E5%8B%89%E5%BC%B7%E6%96%B9%E6%B3%95


## テキスト
[要点整理から攻略する『AWS認定 セキュリティ-専門知識』](https://www.nri.com/jp/knowledge/book/lst/2020/o_book220) を読み、
普段の担当業務では触れないサービスを重点的にポイントをスプレッドシートにまとめる。
サービスがどんどんブラッシュアップされるので、ベースとしての知識をテキストから取り込む気持ちで。

## 問題集サイト
[whizlabs](https://www.whizlabs.com/aws-certified-security-specialty/)のPractice Testsを購入、テスト問題を解く。
日本語版がないのは残念だけど、Google翻訳でWEBページ翻訳機能に頼りつつ解く。
（SAA受けた時、怪しい日本語との対峙も自分の中でポイントだったので、ここで英語にも慣れておく）
Udemy社の問題集も検討したけど、問題数がwhizlabsのほうが多いことからこっちに。

試験モードと練習モードがあって、練習モードだと問題ごとに答えと解説が見れるので
間違えた問題とか、気になったポイントについてはせっせとスプレッドシートにまとめつつ進める。

## 模擬試験

https://dev.classmethod.jp/articles/aws-exam-free-practice/

記事を参考に、模擬試験を受けました。
正答率70％だったので、またテキストと問題集サイトに戻って深堀しながら対策を進めているところ

# 個人的まとめ

## IAMポリシー
いざ出題されるとPrincipalとResourceの違いを読み飛ばして間違えたり、混乱してしまったり；；

- Principal  :リソースベースのポリシーを作成する場合、指定する
    * AWS アカウントおよびルートユーザー
    * IAM ユーザー
    * フェデレーティッドユーザー（ウェブ ID または SAML フェデレーションを使用）
    * IAM ロール
    * ロールを引き受けるセッション
    * AWS のサービス

- Resource：IAM アクセス許可ポリシーを作成する場合は、アクションが適用されるリソースのリストを指定する
    * S3のバケット名
    * DynamoDBのテーブル名とか
    
[アイデンティティベースのポリシーの例](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_examples.html)も参考になると聞いたので現在読んでいるところ。

## Cognito
* Cognitoユーザープール：ユーザーのIDパスワードを管理するディレクトリサービス
=>認証のほう

* CognitoIDプール(Federated Identities)：認証されたユーザーに一時キー（STS）を払い出しAWSリソースの操作権限を与えるフェデレーション
=>認可のほう

以下サイトの画像でイメージをつかむとわかりやすい気がする

https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/what-is-amazon-cognito.html#feature-overview

## VPC
VPCと外部の接続について

* インターネットゲートウェイ:VPCとインターネット間の通信を可能にする。パブリックなアクセス。
* NAT Gateway:NATはネットワークアドレス変換のこと。ソフトウェア更新などの目的でインターネットへの通信を行いたい場合に用いる(NATインスタンスも選択肢としてあるが、自前で構築する必要がある)こっちはプライベートなアクセス
* VPC ピアリング：VPC同士をプライベートIPアドレス指定で相互にセキュアに通信する。
* AWS Site-to-Site VPN：VPCとオンプレ機器をIPsec VPNを用いて、セキュアな接続経路を確立する

VPCとAWS他サービスの接続について

* VPCエンドポイント : VPCと他AWSサービスを閉域で通信するときに使う
 * インターフェースVPCエンドポイント:S3とDynamoDB
 * ゲートウェイVPCエンドポイント:EC2-KMSやEC2-Kinesisとか

#S3
* 3つのアクセスポリシー
 * ユーザーポリシー
 * バケットポリシー
 * アクセスコントロールリスト(ACL)
* クロスアカウントでオブジェクトの共有方法:[AWSユーザーガイド](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example3.html) 
* バケット保存時に暗号化を必須とするにはs3:PutObject のアクセス許可を付与する

```
"Condition": {
     "StringNotEquals": {
         "s3:x-amz-server-side-encryption": "AES256"
     }
```

S3は奥が深すぎてもう:confounded:
この記事も読んで勉強してます:pencil2:

https://qiita.com/kabik/items/a95388fc2b912ef1ff23

## WAF
* 保護対象サービス：CloudFront、ALB、API Gateway、AppSync
* SQLインジェクションやクロスサイトスクリプティングといった攻撃に対応

## Shield Advanced
* 保護対象サービス：EC2、ELB、CloudFront、Global Accelerator、Route53
* DDoS攻撃からの保護・DDoS攻撃に起因するコスト増加へのケア

## Firewall Manager	
* AWS Organizationsにあるアカウントとアプリケーション全体で一元的にファイアウォールのルールを設定、管理する 
* ルール適用状況のチェックや設定内容の監査はConfigを用いる
* 以下サービスのルールを有効にできる

| Firewall Managerの設定対象　| 設定対象が作用するリソース | 
|:-----------|:-----------|
| WAFルール| ALB、API Gateway、CloudFront| 
| Shield Advanced| ALB、ELB、Elastic IP、CloudFront| 
| VPCセキュリティグループ　| EC2、ALB、ENIリソースタイプのセキュリティグループを監査 | 
| AWS Network Firewall| 組織内のアカウントとVPC全体にデプロイ| 
| Route 53 Resolver DNS Firewall| 組織全体にわたっての、VPCとのルール関連付け| 


## GuardDuty	
* 悪意のあるアクティビティなどの脅威を検出するサービス(インスタンス/アカウント/バケットの侵害)
* インプットとなる情報はCloudTrail、VPCFlowLogs、DNS Logsの3種類
* リアルタイム検知が必要な場合はCloudWatchイベントを使用する。

## Inspector	
AWSのEC2 インスタンスにおいてアプリケーションの露出、脆弱性、ベストプラクティスからの逸脱を評価(ルールの定義はAWS)

## Trusted Advisor	
AWSのベストプラクティスをフォローするためのアドバイスを以下5観点で受けることができる。（すべてのチェック結果確認にはビジネスサポート/エンタープライズサポートの契約が必要）

* コスト
* パフォーマンス
* セキュリティ：
* フォールトレランス(耐障害性)：可用性と冗長性
* サービスクオータ（サービス制限）：サービスの上限の80%を超えていないかチェック

## Security Hub	
セキュリティのベストプラクティスのチェックを行い、アラートを集約し、自動修復を可能にするクラウドセキュリティ体制管理サービス

* [CIS AWS Foundations Benchmark](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-cis-controls.html)や[PCI DSS](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-pci-controls.html)といったフレームワークに沿ったチェック
* GuardDuty、Macie、Inspector、Firewall Manager、IAM Access Analyzer、AWS Systems Managerといった各種AWSのセキュリティサービスやAPNセキュリティサービスの検出、アラートの一元管理

リアルタイム検知が必要な場合はCloudWatchイベントを使用する。



# さいごに
受かりたーい。がんばります。

12/27追記：
12/25に受験したところ合格しました！:relaxed: