AWSのセキュリティ

出展：[AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC-%E5%B1%B1%E4%B8%8B-%E5%85%89%E6%B4%8B/dp/4797397403/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3ERB303UT76DT&keywords=aws%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC&qid=1578744077&sprefix=AWS%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%2Caps%2C266&sr=8-1)

#AWSの責任共有モデル

##AWSの責任共有モデルとは
・AWSとユーザーが責任を負う部分が明確に分かれ、それぞれがセキュリティを共有して守っていくこと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/e1991be9-350c-5f05-1f8e-8b7af822d8de.png)

###クラウド本体のセキュリティ
・AWSが担当

###クラウド内のセキュリティ
・ユーザが担当
・AWSが用意するセキュリティサービスを適切に活用して、ユーザはクラウド内のセキュリティを管理できる

#AWSクラウドのセキュリティ

##AWSセキュリティの利点

###データの保護
・すべてのデータは安全性が非常に高いAWSデータセンターに保存される

###コンプライアンスの要件に準拠
・AWSでは、インフラストラクチャ内で多くのコンプライアンスプログラムを管理できる
・コンプライアンスの一部は最初から達成されている

###コスト削減
・AWSデータセンターを利用することでコストを削減できる
・ユーザが独自の施設を管理する必要がなく、最上位のセキュリティを維持できる

###迅速なスケーリング
・AWSクラウドの使用量にあわせてセキュリティをスケーリングできる

##AWSが責任を持つ範囲の考え方

###物理的なセキュリティ
・AWSのデータセンターのセキュリティの範囲はAWSが担当する

・***環境レイヤー***：
　洪水、異常気象、地震といった環境的なリスクを軽減するために、データセンターの設置場所を選択
　AWSの各リージョンにおけるデータセンター群は、互いにそれぞれ独立し、物理的に分離されて配置されている

　⇒自然災害が特定のデータセンター群に影響を与えたとしても、処理中のトラフィックを影響のある地域から自動的に移動できる

***物理的な境界防御レイヤー***：
　保安要員、防御壁、侵入検知テクノロジー、監視カメラ、その他セキュリティ上の装置など

***インフラストラクチャレイヤー***：
　データセンターの建物、各種機器、およびそれらの運用にかかわるシステム
　発電設備や冷暖房換気空調設備、消火設備などの機器や設備

***データレイヤー***：
　データを保持する唯一のエリア　⇒　防御の観点で最もクリティカルなポイント
　アクセスを制御し、各レイヤーにおいて特権を分離する

###ハイパーバイザーのセキュリティの範囲
・AWSが担当する
・各インスタンスは別のインスタンスのメモリを読み取ることも、AWSハイパーバイザーのメモリを読み取ることもできない

###管理プレーンの保護
・ユーザが担当
・***IDとパスワードの管理***
　・ユーザの責任
　・権限の強いアカウントにはMFA（多要素認証）などを設定しアカウントの保護を行う
・***ルートアカウント***
　・AWSサインアップ時に作成したメールアドレスのアカウント
　・すべての操作をすることができる、ユーザが利用する最も権限の強いアカウント
　・日常の操作には利用せず、適切な権限のみを付与したユーザを作成し、利用する
・***キーペアの管理***
　・EC2などのインスタンスへのログインで利用する
　・公開鍵認証方式を用いる
　・キーペアの秘密鍵の管理はユーザの責任
・***APIキーの管理***
　・コマンドライン操作をするCLIやプログラム上で利用する際に利用する
　・***アクセスキー***と***シークレットアクセスキー***のペアで構成される
　・権限の強いアカウントからはAPIキーは作成しない
　・そのCLIで利用する範囲の権限や、プルグラム内で必要な権限のみを付与する
　・環境変数や認証ファイルに書き出し、適切な権限づけを行い、定期的にAPIキーを入れ替えて運用する

###マネージドでないサービスのセキュリティ
・Amazon EC2やAmazon VPCなどIaaSのカテゴリーに分類されるAWSサービス
・ユーザが必要なセキュリティ設定と管理タスクをすべて実行する
・ユーザがオンプレミスのシステム上でこれまで実行してきたセキュリティタスクと基本的に同じ

###マネージドなサービスのセキュリティ
・データベースサービスであるAmazon RDSやAmazon DynamoDBなど
・ユーザからは直接見えない（触ることのできない）部分のセキュリティ対応に関しては、AWSが行う
　　オペレーティングシステムやデータベースのパッチ適用、ファイアウォールの設定、災害対策といった基本的なセキュリティタスク
・ほとんどのマネージドサービスの場合、リソースのアクセスコントロールの設定と、アカウント認証情報の保護のみがユーザの責任範囲
・AWSがクラウドのインフラストラクチャの保護とメンテナンスを行うのに対し、ユーザはクラウド上に保存するあらゆるものを保護する責任を負う
・マネージドでないサービスより、ユーザのセキュリティに関する負担は軽減される

##セキュリティのベストプラクティス

###転送中データの保護
・適切なプロトコルおよび暗号化アルゴリズムを選択する

###蓄積データの保護
・データベースへの登録時にアプリケーション上でデータの暗号化を行う
・コンプライアンス要件に従い暗号化を行う
・AWSの提供する暗号化オプションを活用する

###AWS資格情報の保護
・ユーザごとにIAMユーザを作成し、必要な業務内容や機能を実行するために必要な最小限の権限を付与する

###アプリケーションの安全性の確保
・定期的な脆弱性診断と脆弱性情報の確認、青売りケーションの改善を行う

#IAM
##IAMとは
・「AWS Identify and Access Management」の頭文字をとったもの
・ユーザのAWSクラウドリソースへのアクセス管理サービス
・IAMを使用しることでAWSのユーザ（***IAMユーザ***）とグループ（***IAMグループ***）を作成および管理し、アクセス権を使用してAWSリソースへのアクセスを許可および拒否できる
・IAMユーザやIAMグループには、最初は権限が与えられていない　⇒　必要最低限の権限を割り当てる
・アクセス権限は許可と拒否の設定を行うことができる
・IAMポリシーが相反するときは拒否が優先される
・1人のIAMユーザにつき、APIキーは最大2つまで発行できる

##IAMロール
・現在APIキーの利用は推奨されておらず、これを解決するために***IAMロール***を利用する
・EC2やLambdaなどのAWSリソースに権限を付与することができる
・AWSの内部でIAMロールとEC2を直接紐付けることができるため、キーを管理する必要がない

#セキュリティグループ
##セキュリティグループとは
・1つ以上のインスタンスのトラフィックを制御する仮想ファイアウォール
・各インスタンスごとに個別のファイアウォール設定を行える機能
・グループとして利用でき、同一の目的で利用するサーバ群に対して同一の設定を適用することも可能
・セキュリティグループの設定
　・許可ルールの指定が可能
　・拒否ルールの指定は不可能
　・インバウンドトラフィックとアウトバウンドトラフィックのルールを個別に指定可能
・セキュリティグループを新規作成する際、インバウンドルールはない
　⇒インバウンドルールをセキュリティグループに追加するまで、別のホストからインスタンスに送信されるインバウンドトラフィックは許可されない
・デフォルトではセキュリティグループにはすべてのアウトバウンドトラフィックを許可するアウトバウンドルールが含まれる

#AWS ShieldとAWS WAF

##AWS Shieldとは

・マネージド型の分散サービス妨害（DDoS攻撃）に対する保護サービス
・AWSで実行しているWebアプリケーションを保護してくれる
・AWS ShieldのStandardとAdvanced
　・すべてのAWSユーザは追加料金なしでAWS Shield Standardの保護の適用を自動的に受けることができる
　・AWS Shield Standardは一般的なDDoS攻撃からAWS上のシステムを保護する
　・AWS Shield Advancedは、Standardに加えて、DDoS Response Teamによる緩和策を実施し、攻撃を可視化する
　・AWS Shield Advancedは、AWS WAFサービスを無償で無制限に利用できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/7c999711-9554-c16a-487c-706b81804d54.png)

##AWS WAF

・アプリケーションの可用性低下、セキュリティの侵害、リソースの過剰消費などの一般的なWeｂの脆弱性からWebアプリケーションを保護する、マネージド型のWebアプリケーションファイアウォール
・ユーザからの入力を受け付けたり、リクエストに応じて動的なページを生成したりするタイプのWebサイトを不正な攻撃から守る役割を果たす
・データの中身をアプリケーションレベルで解析できる
・基本利用料は無料
・WAFの定義はユーザ自身で行う必要がある
・課金は、ユーザが作成するカスタマイズ可能なWebセキュリティルールの指定に基づいて行われる
　・Webアクセスコントロールリスト（Web ACL）数に基づく課金方法
　・Web ACLごとに追加するルール数に基づく課金方法
　・受け取るWebリクエスト数に基づく課金方法

###AWS WAFの適用範囲
・CDNサービスのCloudFront、ロードバランサーのApplication Load Balancer、API GateWayから選択する

#Inspector
・AWSのEC2上にデプロイされたアプリケーションのセキュリティとコンプライアンスを向上させるための、脆弱性診断を自動で行うことができるサービス
・自動的にアプリケーションを評価し、脆弱性やベストプラクティスからの逸脱がないかどうかの確認をする
・各種ルールパッケージはAWSが最新のものにアップデート
・スケジューリング設定により完全に自動でチェック可能