AWS認定セキュリティ専門知識(SCS)を、１年の空白期間を経て取得したやったことまとめ

# はじめに
AWS認定セキュリティ専門知識(SCS)について、受験者数の絶対数が少ないのか試験対策に関する参考記事の投稿が少なく情報収集に苦労しました。

今回、２ヶ月ほどの準備をして取得できた試験準備のコツなどについてまとめてみました。セキュリティ専門知識に関わるAWS関連サービスのイメージを掴んでいただければ幸いです。


# 本記事の主な対象者
- AWS認定の他の試験区分は取得済みで、セキュリティ専門知識の受験を検討している方
- 取得に向けて有効な学習方法などの情報収集したい方

# 筆者のAWS認定履歴

|AWS認定  |取得日  |
|---|---|---|
|ソリューションアーキテクト - アソシエイト  |2018-05-13|
|デベロッパー - アソシエイト  |2018-06-03|
|SysOpsアドミニストレーター - アソシエイト | 2018-06-10|
|ソリューションアーキテクト - プロフェッショナル  |2018-07-29|
|DevOpsエンジニア - プロフェッショナル  |2018-08-26|
|ビッグデータ専門知識  |2019-08-25|
|セキュリティ専門知識  |2019-12-08|

実は、昨年のDevOpsエンジニアプロフェッショナルを取得直後に、模擬試験無料バウチャーを使用して模擬試験を受けていました。その時は半分程度のスコアだったのを今でも覚えています。それから、計画止まりとなっていましたが、ビッグデータ専門知識を取得したことをきっかけに再度取得を目指すこととしました。

# 今回のスコア(2019-12-08受験)
```
総合スコア: 831/1000 (ボーダー750)

スコアと評価
分野 1: インシデント対応  ->  再学習の必要あり
分野 2: ログと監視  ->  十分な知識を有する
分野 3: インフラストラクチャのセキュリティ  ->  十分な知識を有する
分野 4: ID およびアクセス管理  ->  十分な知識を有する
分野 5: データ保護  ->  十分な知識を有する
```

# AWS認定セキュリティ専門知識(SCS)について
ここからが本題となります。
まずは、以下の公式ページから試験概要の把握を行いました。

 - [AWS 認定セキュリティ トップページ](https://aws.amazon.com/jp/certification/certified-security-specialty/)
 - [試験ガイド](https://d1.awsstatic.com/training-and-certification/docs-security-spec/AWS%20Certified%20Security%20-%20Specialty%20Exam%20Guide%20001%20v1.5%20FINAL%20JPN.pdf)

 - [サンプル問題](https://d1.awsstatic.com/training-and-certification/docs-security-spec/AWS%20Certified%20Security%20-%20Specialty_Sample%20Questions.pdf)

# 具体的な試験準備で効果があったと思えること
実際に受験をしてみて、試験対策として効果があったと思う内容について、主観的な効果度合いで順に記載します。

 - [AWS サービス別資料 (旧ブラックベルト)](https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/)
   分野毎に、理解したと思えるレベルまで繰り返し読みこみました。あとはセキュリティ関連すると思われたホワイトペーバーをざっと目を通し、横串の全体感を把握しました。
   - インシデント対応
     - EC2, IAM, CloudWatch, Lambda, KMS, SES
   - ログと監視
     - CloudTrail, Config, CloudWatch, Athena, SNS
   - インフラストラクチャのセキュリティ
     - VPC, CloudFront, WAF, Shield, Inspector, Trusted Advisor, GuardDuty, Macie
   - IDおよびアクセス管理
     - IAM, Directory Service, Organizations, Cognito, S3/Glacier, KMS
   - データ保護
      - KMS, CloudHSM, Certificate Manager, Systems Manager, Secrets Manager
   - ホワイトペーバー
      - セキュリティのベストプラクティス
      - KMSのベストプラクティス
      - DDoSに対するベストプラクティス

 - ユーザーズガイド
プロフェッショナルやスペシャリティの試験区分になるとワンライナーの知識問題が出ることは稀で、ほぼほぼシナリオベースの与えられた条件の中からもっともらしいものを選択する能力が問われます。
これは、いくつかの試験区分を受けてみての経験則なのですが、正答を選択する基本的な考え方は、ユーザーズガイドに網羅されています。逆に、ユーザーズガイドに記載されていない技術的な手法は正答になり得ない可能性が高いと考えます。理解が不足している内容に遭遇した場合、ユーザーズガイドから該当部分を探してみる、記載されているチュートリアル通りに手を動かしてみるといったことをお勧めします。
   - ユーザーズガイド： [チュートリアル:AWS アカウント間の IAM ロールを使用したアクセスの委任](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)


 - 動画学習サイトの活用
英語力は必要となりますが、網羅的な試験対策コースがあります。動画を視聴する時間はそれなりに取られます。何れかのサイトを利用しておくと試験前の安心感が得られると思います（サイトのみの紹介、コースはお好みで）

   - [Udemy](https://www.udemy.com/)
   - [Linux Academy](https://linuxacademy.com/)
   - [Cloud Guru](https://acloud.guru/)

# その他試験TIPS
以下、私見を多分に含むメモです。キーワードの参考に。


## AWSサービス

#### IAM
  - ポリシードキュメントJSONレベルの認証認可トラブルシューティング
  - STSに関わる、IAMロール の 信頼ポリシー３つの区分
  - Permissions Boundary によるアクセス制御
  - リソースベースのポリシーと、IDベースのポリシーは何が違うか

#### Organization
  - Service control policies による組織内アカウントrootユーザーのアクセス制御

#### CloudTrail
  - ヒトに着目したログ収集
  - マルチリージョン、マルチアカウント
  - S3に集まるログをどう活用するか

#### Config
  - モノに着目したログ収集
  - ルールに基づく適合評価、修復アクション
    - AWS Maneged: ベーシックなルール
    - Customer Maneged: Lambdaでカスタマイズする独自管理ルール

#### CloudWatch
  - ログ集積基盤、各サービスから集めたログから何ができるかは結局同じ
    - フィルタ > メトリクス > アラート

#### KMS
  - ホワイトペーバー記載事項の理解（必ず目を通して下さい）
  - ３つの鍵の区分とローテーション、削除の運用
  - キーポリシーと、IAMポリシーの併用が必要となるアクセス制御

#### EC2
   - EC2 SSHキーペア、トラブルシューティング
   - メタデータ内の公開鍵のありか
   - KMSと絡めたEBS、AMI、スナップショットの暗号化できることできないこと

#### VPC
   - ルートテーブル、NAT、NACL、SG、ネットワーク疎通トラブルシューティング

#### CloudFront
   - 地域制限。国単位でブラックリスト、ホワイトリスト指定可能
   - OAIによるS3保護
   - CloudFront用のSSL証明書は、バージニア北部リージョン(us-east-1)にて設定
     - デフォルト証明書
     - カスタム証明書(ACM、IAM)
   - WAF連携による詳細なアクセス制限

#### WAF、Shield
   - WAFのルールで設定可能なアクセス制限
     - クロスサイトスクリプティング
     - GEO制限
     - IPアドレス
     - サイズ
     - SQLインジェクション
     - 文字列パターンマッチ（ヘッダ、メソッド、クエリ、ボディ）
   - Shieldアドバンスドは課金必要

#### Inspector
   - EC2にエージェントをインストールするEC2ホスト診断
   - ルールパッケージ４つの違い
    - CVE(Common Vulnerabilities and Exposures)共通脆弱性識別子
      - 主要なベンダーのソフトウェア製品の脆弱性をチェック
    - CIS
      - 業界標準のOSレベルのセキュリティベンチマーク
    - セキュリティのベストプラクティス
      - 主にSSH、パスワードに関するセキュリティチェック
    - ネットワーク到達可能性（旧:実行時の振る舞い分析）
      - ネットワーク設定を分析して セキュリティ上の脆弱性、ポートをチェック

#### Trusted Advisor
   - SGのポート無制限チェック、IAMのベストプラクティス適合チェック

#### Lambda
   - ファンクションポリシー、実行ロール
   
#### SSM
   - Patch Manager
   - パラメータストア
   - Run コマンド

---
## ユースケース

#### 認証情報漏洩、紛失、剥奪
  - AWS アクセスキー
  - SSH キーペア
  - root ユーザーアカウント管理

#### オンプレミス連携(ADFS)
  - データセンターとのセキュアな回線接続
  - IAMロール、STS、SAMLをベースとしたADFS仕組みの深い理解

#### DDoS対策
  - ホワイトペーバーのDDos基本対策の理解
  - エッジセキュリティとしてのCloudFrontの機能
  - L3/L4、はShieldでデフォルト保護
  - L7は、WAFで自前保護
  - 混同しがちな2つのWAF
    - AWS WAF
    - 3rdPartyWAF on EC2 (要サンドイッチ)

#### SSL証明書の運用
  - ACMおよびIAMで管理
    - CloudFrontは、バージニア北部リージョン(us-east-1)にて設定
    - ALBはサービスを展開する任意のリージョンにて設定
  - TLSターミネーションはどこでするか


# おわりに
今回は、CloudFrontやWAFを設定してみて、curlを投げで遊ぶなど、手を動かしながら楽しく学ぶことでできました。
その他日頃触らないようなAWSサービスに触れてみる良い機会にもなりました。

今後受験を検討される方の一助になれば幸いです。


#### 著者関連リンク
 -  [AWS認定ビッグデータ専門知識(BDS)を、１ヶ月の準備期間で取得した試験準備やったことまとめ](https://qiita.com/go_sougen/items/bfdf5e5d1c6c57ca6141)
 -  [AWS認定機械学習専門知識(MLS)を、２ヶ月の集中期間で取得したやったことまとめ](https://qiita.com/go_sougen/items/6a813eac0b2208e43bfb)
 - [AWS認定高度なネットワーキング専門知識(ANS)を、３ヶ月のハンズオン期間を経て取得したやったことまとめ](https://qiita.com/go_sougen/items/ed2df8131b3a2df8a0e8)
 - [AWS認定データベース専門知識(DBS)を、ほぼぶっつけ本番で取得したやったことまとめ](https://qiita.com/go_sougen/items/5e97feaacb387c36e9d1)
 - [AWS認定Alexaスキルビルダー専門知識(AXS)を、ツンデレメイドスキルを作りながら取得したやったことまとめ](https://qiita.com/go_sougen/items/7a78bac3f6a9300901c9)
 - [AWS 認定クラウドプラクティショナー(CLF)を、これまでの振り返りを兼ねて取得したやったことまとめ](https://qiita.com/go_sougen/items/5b5ac0e59fd67e1181ed)