【AWSソリューションアーキテクト試験用まとめ】セキュリティ
はじめに
AWS 認定ソリューションアーキテクトプロフェッショナル(SAP)試験の勉強に向けた頭の整理として、以下の内容について用語レベルでまとめていきます。
勉強の進捗に合わせて記事の内容をアップデートする場合があります。
- IAMと認証連携
- セキュリティ【本記事】
- コンピュートおよびロードバランシング
- ストレージ
- キャッシング
- データベース
- サービスコミュニケーション
- データエンジニアリング
- モニタリング
- デプロイおよびインスタンス管理
- コスト管理
- マイグレーション
- VPC
※この項目分類については、UdemyのUltimate AWS Certified Solutions Architect Professional 2020コースを参考にしています。
AWS Cloudtrail
KMS
- KMS(Key Management Service)はAWSが提供する暗号化サービスである。IAMポリシー及びキーポリシーによって許可されたユーザがAPIによりデータを暗号・復号化することが可能。
- KMSではCMK(Customer Master Key)をキーとして暗号化が行われる。このキーはユーザ側で取得することはできず、KMSにて管理される。CMKの種類としてはAWS Managed KeyとCustomer Managed Keyの2種類がある。前者は、S3・EBS・Redshiftなどで使われるAWS管轄のキーであるのに対して、後者はユーザ側で作成・管理・適用が可能なキーである。
- KMSは呼び出しごとに4KBまでのデータしか暗号化することができない。それより大きい容量のデータを暗号化したい場合は、Envelope Encryptionを活用する。
AWS Parameter Store
- 設定と機密を管理するための安全な階層型ストレージ。
- パスワード、データベース文字列、Amazon マシンイメージ (AMI) ID、ライセンスコードなどのデータをパラメータ値として保存可能。KMSによって暗号化した形で保持可能。
Secrets Manager
- 各リソースやアプリケーションにアクセスするための機密情報を管理するためのマネージドサービス。
- Lambdaで定義することにより、任意の日数ごとに機密情報のローテーションを実現可能。RDS(MySQL, PostgreSQL, Aurora)に統合可能。
RDSのセキュリティ
RDS周りのセキュリティ知識
- EBSボリュームやスナップショットにはKMS暗号化が適用される。
- OracleやSQL Serverは透明化データ暗号化(TDE)が適用可能。
- SSL暗号化は全てのDBに適用可能。
- IAM認証はMySQLとPostgreSQLにのみ適用。ただし、IAM以外の認証はその他RDSにて行われる。
- 暗号化されていないRDSスナップショットのコピーを暗号化可能。
- CloudTrailはRDS内で実行されるクエリを追跡することはできない。
SSL/TLS暗号化通信
- SSL(Secure Socket Layer)やTLS(Transport Layer Security)は通信を暗号化する技術。
- SSL証明書は認証局(CA: Certified Authorities)によって発行される。e.g. Symantec, GlobalSignなど。証明書には期限があるため、更新が必要。
- 通信を確立するステップをハンドシェイクと呼ぶ。
SSL通信の仕組み(公開鍵・共通鍵暗号方式の組み合わせ)
https://jp.globalsign.com/ssl-pki-info/ssl_practices/ssl_encryption.html
SNI(Server Name Indication)
中間者攻撃(MITM: Man in the Middle Attack)
CloudHSM
- Cloud HSM(Hardware Security Module)はクラウドベースのハードウェアセキュリティモジュール。
- 商用で利用可能なほとんどの暗号化キーをHSMにエクスポート可能。S3でユーザ提供キーによるサーバサイド暗号化(SSE-C)を利用する際にはCloudHSMの活用を検討すると良い。
- KMSとは異なり、CloudHSMではクライアント側が基本的に鍵の管理を行う。AWSのIAMが制御できるのはCloudHSMクラスタのCRUD権限のみ。
- 共通鍵・公開鍵の両方に対応(KMSは共通鍵のみ)。また、VPC内で管理されるため、他VPCからのアクセスがある場合はVPCピアリングが必要。無料枠なし。
- ELBとEC2インスタンス間の通信をHTTPS化したい場合、各EC2の裏にCloudHSMを用意してSSLオフロードする方法がある。
S3オブジェクトの暗号化
- SSE-S3:AWS管理キーによるサーバサイド暗号化
- SSE-KMS:KMSで管理されるキーによるサーバサイド暗号化
- SSE-C:ユーザ提供キーによるサーバサイド暗号化
- CSE(Client Side Encryption)
- GlacierのオブジェクトはAWS管理のもとすべてAES-256によって暗号化される。
S3イベント
S3のセキュリティ
S3のバケットポリシー
S3署名付きURL
S3オブジェクトロック
- WORM(Write Once Read Many)モデルを採用。一定期間オブジェクトの削除を防ぐ仕組み。
Glacier Vault Lock
- WORM(Write Once Read Many)モデルを採用。永久的に編集・削除を防ぐ仕組み。
セキュリティグループ
- インスタンス単位でのセキュリティ設定。EC2, RDS, LambdaなどのENIに紐づく。
- ステートフル:行きの通信が許可されていれば戻りも許可。逆も然り。
- CIDRまたはセキュリティグループIDを指定可能。
- デフォルトではインバウンドはDeny、アウトバウンドはAllowされている。
NACL(Network Access Control List)
- サブネット単位でのセキュリティ設定。
- ステートレス:行きと戻りの通信は個別に設定。
- CIDRのみ指定可能。(ホスト名なども不可)
- デフォルトではインバウンドもアウトバウンドもDenyされている。
DDoS攻撃(Distributed Denial of Service)への対策
AWS Shield
AWS WAF(Web Application Firewall)
- 第7層(アプリケーション層)の攻撃を対策してくれるサービス。
- ALB, APIゲートウェイ, CloudFrontなどに適用可能。CLB, EC2, S3ウェブサイトなどに適用したい場合はCloudFrontに適用。
- 適用時にはWebACLの設定が必要。IPアドレス、HTTPヘッダ、URI文字列やサイズ制限・地域制限などの設定も可能。SQLインジェクションやクロスサイトスクリプティング(XSS)を防ぐことが可能。
- 同一IPによるアクセスの頻度などをもとにアクセス制御可能。
AWS Inspector
AWS Config
AWS Managed Logs
- ロードバランサアクセスログ:ロードバランサのアクセスログ。S3に保存。
- CloudTrailログ:アカウント内のAPIコールのログ。S3またはCloudWatchLogsに保存。
- VPCフローログ:VPCのネットワークを通るIPトラフィックのログ。S3またはCloudWatchLogsに保存。
- Route53アクセスログ:Route53が受けるクエリのログ。CloudWatchLogsに保存。
- S3アクセスログ:バケットに対するリクエストのログ。S3に保存。
- CloudFrontアクセスログ:CloudFrontが受けるリクエストのログ。S3に保存。
- AWS Config:AWSリソースの変更ログ。S3に保存。