AWS 認定 SysOps アドミニストレーター – アソシエイト 合格への道#4

#はじめに
今日も昨日の続きです。
https://qiita.com/fjisdahgaiuerua/items/ecb11896d6c0c15ed5b6

# 模擬試験直し
##アプリとデータをオンプレから500TB S3に移したい

AWS クラウドデータ移行サービスはたくさんあった

* オンラインデータ転送とハイブリッドクラウドストレージ
    * AWS Direct Connect
    * AWS DataSync
        * オンプレミスストレージと Amazon S3 または Amazon Elastic File System (Amazon EFS) との間のデータの移動を自動化するデータ転送サービス
        *  AWS Direct Connect またはインターネットリンク経由で AWS にデータをコピーすると、ワンタイムデータ移行、定期的なデータ処理ワークフロー、およびデータ保護と復旧向けの自動レプリケーションを実行できます。
    * AWS Storage Gateway
    * Amazon S3 Transfer Acceleration
        * Amazon S3 へのパブリックインターネット経由の転送がより迅速になります。距離やインターネットの状況に関係なく、使用可能な帯域幅を最大化できます。また、特殊なクライアントや独自のネットワークプロトコルはありません。S3 バケットで使用するエンドポイントを変更するのみで、加速が自動的に適用されます。
    * Amazon Kinesis Data Firehose
        * ストリーミングデータをキャプチャして Amazon S3 および Amazon Redshift に自動的にロードし、現在お使いのビジネスインテリジェンスツールやダッシュボードでほぼリアルタイムに分析
* Amazon S3 へのオフラインデータ移行
    * AWS Snowball
        * ハイスぺPCが来る
    * AWS Snowball Edge
        * 超ハイスぺPCが来る
    * AWS Snowmobile
        * トラックが来る

**アンマネージド**

* rsync
* S3CLI
* GracierCLI

エッジ一択でよかったですね、

##　管理者に通知するサービスについて
### Amazon MQ

https://aws.amazon.com/jp/amazon-mq/?amazon-mq.sort-by=item.additionalFields.postDateTime&amazon-mq.sort-order=desc

> Amazon MQ は、クラウド内のメッセージブローカーを容易に設定し運用できる、Apache ActiveMQ 向けのマネージド型メッセージブローカーサービス


https://dev.classmethod.jp/articles/new-amazon-mq-activemq/

> 新しいサービスがリリースされました。Amazon MQです。中身は、そのまんまActiveMQのようです。AWSは、運用が面倒なMQ（メッセージキュー）をマネージドで提供することで、エンタープライズな環境に導入済みのMQのクラウドマイグレーションを促進します。ActiveMQは、OSSとして多くの実績があり、クライアントライブラリが豊富で、様々なプロトコルに対応しているため、既存のエコシステムに乗りやすいのが特徴です。新規でシステムを開発する際にはAmazon SQSやAmazon SNSを用い、既存システムのマイグレーションにはAmazon MQを使ってみてはいかがでしょうか。

新規はSQS,SNS。以降はMQ

### メッセージングについて

https://tech-blog.optim.co.jp/entry/2018/12/17/114500

> メッセージングとは、複数のサービス(アプリケーション)間で情報の交換を行うためのスキームです。交換される情報をメッセージと呼びます。メッセージングのアーキテクチャは複数ありますが、一般的にはPub/Sub型のメッセージングモデルが利用されます。

**メッセージングとは、複数のサービス(アプリケーション)間で情報の交換を行うためのスキーム**

##サイト間VPN手順について
こちらもふわっとだったので調査

https://hacknote.jp/archives/49908/

* AWSでVPCの作成
* AWSで仮想プライベートゲートウェイの作成
    * ASNは特になにかなければAWS側のデフォルトでよい
* AWSでカスタマーゲートウェイの作成
    * カスタマーゲートウェイ(ローカルネットワークのゲートウェイ)を作成します。作成というか、AWS側にこちらの情報を教えてあげる感じ
* AWS側ルーティングの設定
    * Destinationにローカルで使っているIP空間を指定、Targetに仮想プライベートゲートウェイを指定
* AWSでSite-to-Site VPN接続の作成
* ローカルネットワークでゲートウェイにVPC設定の入れ込み
* 導通確認
    * もしAWS側にpingが届かない場合にはセキュリティグループでICMPのインバウンドが許可されているか確認

### ルーティングプロトコルおさらい
ルーティングプロトコルは、内部で使用するIGPと、外部で使用するEGPの大きく2つに分類

* IGP
    * IGPとは、インターネットのように複数の独立したネットワークを接続したTCP/IPネットワークにおいて、ネットワーク間の経路情報を通信機器間で交換する手順を定めたプロトコル（通信規約）の総称
    * インターネットは単一の管理主体が保有・運用する「AS」（Autonomous System：自律システム）と呼ばれる単位ネットワークを相互に連結した構造となっており、AS内でのルータ間の経路制御に用いられるプロトコル群をIGP
* EGP
    * 異なるAS間で経路情報を交換するプロトコルはEGP
    * 実際にインターネットで使われているのはBGP

RIPv2、EIGRP、OSPF、IS-ISは、AS（ Autonomous System ）内部で経路情報を交換するIGP

## RDS レポート作るには
https://dev.classmethod.jp/articles/sugano-029-inspector-report/

### そもそもAmazon Inspectorとは
https://www.wafcharm.com/blog/amazon-inspector-for-beginners/
AWSのEC2 インスタンスにおいて脆弱性診断を自動で行ってくれるサービス


#### Amazon Inspectorのルールパッケージ
Amazon Inspectorで脆弱性の評価をするにあたり、どのようなテスト項目を行うかをまとめてセットにしたものをルールパッケージと言います。

* ネットワークの到達可能性
    * ネットワークを介してアクセス可能かどうかを評価されるセキュリティ評価項目のパッケージです。インターネット経由でポートベースやVPC ピアリング接続、VPNを通じて該当EC2にアクセスされる可能性があるかどうかを評価
* ホスト評価
    * Amazon EC2インスタンスそのもの（ホスト）に関するセキュリティ評価項目のパッケージです。EC2そのものの脆弱性や問題のある設定をチェック

#### Amazon Inspectorで脆弱性が判明したらどうする？
Amazon Inspectorを実行すると、セキュリティ上の目標やアプローチに基づいて重大度、緊急度、ユーザーの関心度が様々に異なる結果のリストが生成
Amazon Inspectorで対象EC2の脆弱性が判明したら、すぐにユーザー自身で設定変更やパッチ適用などの対処法を検討する必要があります。

#### mazon Inspector vs Amazon GuardDuty
Amazon Inspector と Amazon GuardDuty の違いは、前者は「実際に攻撃を受けるとどうなるかをチェックする」もの、後者は「実際のログを分析して脅威が存在するかをチェックする」もの

**Amazon Inspectorの目的は、対象AWSにおいてよくあるセキュリティリスクに対処できているかをテスト**
**Amazon GuardDutyは、運用しているAWSで実際に起こったイベントが分析対象**

#### Amazon Inspectorの使い方
* EC2にエージェントをインストール(ホスト評価のルールパッケージには、エージェントが必要)
    * 対象にSSMエージェントが配置されており、Run Commandを許可するIAMロールが導入されていることが前提
* インストールなし(ネットワークの到達可能性のルールパッケージを使用した Amazon Inspector の評価は、Amazon EC2 インスタンスのエージェントなしで実行できます)
    * AWSのコンソールにサインイン
    * 対象を判別するためにタグ付けまたは稼働中のものすべてを選択
    * ルール選択
    * 通知用SNS設定

#### Amazon Inspectorが他のAWS関連のサービスと組み合わせてできること
* Amazon CloudTrail
    * Amazon Inspector API呼び出しのログ作成
* Amazon CloudWatch
    * Amazon Inspectorのモニタリングraw データを収集し、ほぼリアルタイムの読み取り可能な状態に加工

### 脆弱性レポートの種類は二種類
* FullReport
    * Section 5: Passed Rules
        * 該当しなかった（Passed）脆弱性が全て記載
* Findings report
    * Section 1: Executive Summary
        * セキュリティ評価の要約
    * Section 2: What is Tested
        * チェックに使用したルールの説明
    * Section 3: Findings Summary
        * セキュリティ評価に使ったルールと、その結果見つかった問題および該当インスタンス数が記載
    * Section 4: Findings Details
        * 見つかった問題の詳細

### AWS Artifact
https://dev.classmethod.jp/articles/aws-artifact-new/
> AWS Artifactは、無料でセルフサービス型の、AWSコンプライアンスレポートのダウンロードサービスです。ISO、PCI、SOCなどの第三者による監査レポートをダウンロードできます。これにより、AWSがいかに安全で安心して使って頂けるか、NDA情報として利用者に共有します。何日も掛かりません。IAM権限さえ与えれば数分でダウンロードできます。

## CFNのベストプラクティスおさらい
* ライフサイクルと所有権によるスタックの整理
    * スタックはチーム別で分ける
* クロススタック参照を使用して共有リソースをエクスポート
    * fn:ImportValueでリソースをインポートして利用
* すべてのリソースタイプのクォータを確認
    * リソースの制限数確認
* テンプレートを再利用して複数の環境にスタックを複製
    * パラメータ・マッピング・条件を変更
* ネストされたスタックを使用して共通テンプレートパターンを再利用
    * スタックは詳しい人に任せる
* テンプレートに認証情報を埋め込まない
    * NoEchoでアスタリスク表示する
    * パラメータストアやセキュリティマネージャから外部値を参照する
* AWS 固有のパラメータータイプの使用
    * ハードコードしない
* パラメーターの制約の使用
    * 文字数制限などをかける
* AWS::CloudFormation::Init を使用して Amazon EC2 インスタンスにソフトウェアアプリケーションをデプロイ
    * インスタンスを再構築せずに設定が変更できるので便利
* 最新のヘルパースクリプトを使用
    * yum install -y aws-cfn-bootstrap
* テンプレートを使用する前に検証
    * Validatorで確認しよう
* AWS CloudFormation ですべてのスタックリソースを管理
    * Iacの実現
* スタックを更新する前に変更セットを作成
    * スタックを変更すると最悪リソースが消失する可能性があるので
* スタックポリシーを使用
    * スタックリソースを保護
* AWS CloudTrail を使用して AWS CloudFormation 呼び出しを記録
    * 硝石管理
* コードの確認とリビジョン管理を使用してテンプレートを管理
    * スタック保護

### リソース属性おさらい
* CreationPolicy 属性
    * CreationPolicy 属性をリソースに関連付けて、AWS CloudFormation が指定数の成功シグナルを受信するかまたはタイムアウト期間が超過するまでは、ステータスが作成完了にならないようにします。
* DeletionPolicy 属性
    * DeletionPolicy 属性を使用すると、スタックが削除された際にリソースを保持または (場合によっては) バックアップ
* DependsOn 属性
    * DependsOn 属性を使用すると、特定のリソースが他のリソースに続けて作成されるように指定
* Metadata 属性
    * リソースには、Metadata 属性を使用して構造化データを関連付けることができます。リソースに Metadata 属性を追加することで、JSON または YAML 形式のデータをリソースの宣言に追加することができます。また、Metadata 属性内で組み込み関数 (GetAtt、Ref など) やパラメータ、擬似パラメータを使用し、その解釈に基づく値を追加することもできます。
* UpdatePolicy 属性
    * UpdatePolicy 属性を使用して、AWS CloudFormation が、AWS::AutoScaling::AutoScalingGroup、AWS::ElastiCache::ReplicationGroup、AWS::Elasticsearch::Domain、または AWS::Lambda::Alias のリソースに対する更新を処理する方法を指定できます。
        * AutoScalingReplacingUpdate ポリシー
            * AWS CloudFormation が Auto Scaling グループの置き換え更新を処理する方法を指定するには、AutoScalingReplacingUpdate ポリシーを使用します。このポリシーでは、AWS CloudFormation が Auto Scaling グループを新しいグループで置き換えるのか、Auto Scaling グループ内のインスタンスのみ置き換えるのかを指定できます
        * AutoScalingRollingUpdate ポリシー
            * AWS CloudFormation が Auto Scaling グループのローリング更新を処理する方法を指定するには、AutoScalingRollingUpdate ポリシーを使用します。ローリング更新では、AWS CloudFormation が Auto Scaling グループ内のインスタンスをバッチで更新するか、一度にすべて更新するかを指定できます。
* UpdateReplacePolicy 属性
    * UpdateReplacePolicy 属性では、スタック更新オペレーションでリソースを置き換えるときに、リソースの既存の物理インスタンスを保持したり、必要に応じてバックアップしたりします。

#まとめ
明日は試験なので早めに切り上げます。
特にCFNはいじりながら覚えたいたので、ドキュメントを読んでみると夢中になりますね。
やること
* DynamoDB 入門