AWS Solution Architect Associate 試験対策 ch4
AWSにおけるセキュリティ設計
AWSにおけるセキュリティ設計の考え方
AWS責任共有モデルによるセキュリティ方針
- 責任分界点を明確にし、分担・協力しながらセキュリティを強化していく
責任者 | 責任範囲 |
---|---|
ユーザ | ユーザのデータ、暗号化 |
アプリケーション、ID・アクセス管理 | |
OS、ネットワークセキュリティ | |
AWS | ソフトウェア |
コンピューティング、ストレージ、DB、ネットワーク | |
仮想化インフラ | |
データセンター、物理H/W、グローバルネットワーク | |
リージョン、AZ、エッジロケーション |
AWSのセキュリティ責任・対策
- データセンター、物理H/W
- 物理的な場所の秘匿
- 監視カメラ
- 侵入検知
- H/W破棄プロセスを定め、徹底している
- ネットワーク
- DDoS
- IPなりすまし
- パケット盗聴
- 仮想化インフラ
- ハイパーバイザー(ホストOS)の...
- アップデート・パッチ管理
- アクセス管理
- ログ監査
- ハイパーバイザー(ホストOS)の...
ユーザーのセキュリティ責任・対策
- OS以上のレイヤ
- アイデンティティ管理とアクセス管理
- 最小権限の原則
- ネットワークセキュリティ
- データの保護
- 暗号化
- セキュリティ監視
- ログ収集・監視
- CloudWatch
- CloudTrail
- リソース構成の追跡
- AWS Config
- セキュリティチェック
- Trusted Advisor
- ログ収集・監視
アイデンティティ管理とアクセス管理
AWSにおけるアカウント
- ルートユーザー
IAMユーザーとIAMグループの概要
@startuml class AWSAccount class IAMUser class IAMGroup class IAMPolicy AWSAccount o-- IAMUser AWSAccount o-- "0..300"IAMGroup AWSAccount o-- IAMPolicy IAMUser -- "0..10" IAMGroup IAMUser -- IAMPolicy IAMGroup -- IAMPolicy @enduml
- 上限
- 1つのAWSアカウントで最大300グループ
- 1つのIAMユーザーは10グループにまで所属可能
IAMポリシーによるアクセス権限管理
- 最小権限の原則
- IAMユーザー、IAMグループにはデフォルトで何も権限が付与されていない
- IAMポリシー
- JSON形式
- 何を許可するか
- 何を拒否するか
{ "Version": "...", "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Principal": "*", "Resource": "arn:aws:s3:::hoge-bucket", "Condition": { "IpAddress": { "aws:SourceIp": [ "11.22.33.44/32" ] } } } ] }
- IAMポリシーの種類
IAMによる認証方式
- IAMユーザー名とパスワード
- WebブラウザでAWSマネジメントコンソールにログインしてなんやかんやする
- 他要素認証(MFA: Multi-Factor Authentication)
- 強化
- ワンタイムパスワード等
- アクセスキーID + シークレットアクセスキー
- IAMロール
IAMによるIDフェデレーション
- IDフェデレーション
- Web IDフェデレーション
- Directory ServiceによるMicrosoft ADとの認証連携
- Microsoft AD: Acitve Directory
- 企業内のさまざまな情報を管理するディレクトリサービス
- ユーザー情報とか
- 企業内のさまざまな情報を管理するディレクトリサービス
- AWS Directory Service
- マネージドのMicrosoft ADサービス
- AD Connector
- オンプレのActive Directory環境との認証連携できるプロキシサービス
- Microsoft AD: Acitve Directory
ネットワークセキュリティ
VPCによるネットワーク構成
セキュリティグループとネットワークACLによるアクセス制御
セキュリティグループ | ネットワークACL | |
---|---|---|
アタッチ対象 | EC2インスタンス | VPCサブネット |
アタッチ可能個数 | 複数 | 1つ |
デフォルトin | 拒否 | 許可 |
デフォルトout | 許可 | 許可 |
ステート | ステートフル inで許可したら戻りも許可 |
ステートレス |
ルールのマッチ | 該当するもの全部 | 番号順、最初にマッチしたもの |
- 両方使うとどうなるの
- 許可(T)、拒否(F)としたとき、ANDの真理値表な感じになる
- セキュリティグループの設定は即時反映らしい(書籍より)
- ネットワークACLはAWS公式ドキュメントに「短時間」と書いてある
VPC内でのネットワークセキュリティの設定例
- 構成
- ELB
- NATゲートウェイ in パブリックサブネット
- EC2 in プライベートサブネットA
- RDS in プライベートサブネットB
- EC2にセキュリティグループ設定
- ELBからのinbound HTTP 80許可
- アプリケーションの動作のため
- 他はデフォルト拒否
- ELBからのinbound HTTP 80許可
- RDSにセキュリティグループ設定
- EC2からのアクセス許可
- アプリケーションの動作のため
- 他はデフォルト拒否
- EC2からのアクセス許可
- プライベートサブネットBにネットワークACL設定
- パブリックサブネットからのアクセスを明示的に拒否
- デフォルト許可
- パブリックサブネットに侵入された場合でもデータ流出せぬよう
- パブリックサブネットからのアクセスを明示的に拒否
踏み台サーバーによるセキュアなリモートアクセス制御
- 踏み台サーバー(bastion = 砦)
- こいつだけパブリックサブネットに置く
- 必要なときだけ起動
- SSH(TCP22)やRDP(T/U3389)を絞る
データの保護
暗号化によるデータの保護
- 通信の暗号化
データ自体の暗号化
データ暗号化の方式と場所
- CSE: Client Side Encryption
- ユーザが暗号化してからデータ保存する
- SSE: Server Side Encryption
暗号化に必要な鍵の管理
- 鍵の管理
- 鍵自体の作成
- 有効化/無効化
- 定期的なローテーション
管理者 | 保管 | 暗号化処理 | AWSサービス |
---|---|---|---|
ユーザー | ユーザー | CSE | なし |
ユーザー | AWS | CSE/SSE | AWS KMS, AWS CloudHSM |
AWS | AWS | SSE | S3やEBS等の暗号化機能 |
AWS KMSとCloudHSMによる鍵の管理・保管
- AWS KMS
- CloudHSM: Hardware Security Module
セキュリティ監視
セキュリティ監視の関連サービス
- CloudTrail
- VPCフローログ
- ネットワークインタフェースを行き来する通信の内容をキャプチャ
- 送信元/宛先のIP/ポート、プロトコル
- CloudWatch Logs
- AWS Config
- リソースの構成変更を追跡
- モノの構成変更履歴に特化
- Trusted Advisor