lizminim

忘れていても思い出せるように。

【書評&memo】 AWSではじめるクラウドセキュリティ

自分用メモ。キーワードとその説明を羅列していく。個人的に重要な内容は7章と8章の内容だった。 他の細かい話はざっと読むだけで一旦はOKとした。

7章: AWSを用いたネットワークアクセス

サブネットを利用したゾーニング zoning(分割)なのでそのままの意味。VPC内をインターネット通信可能な領域、そうでない領域に分割する。

サブネット間の通信制御にはネットワークACL デフォルトですべての通信を許可しているような状況。ステートレスなので双方向の設定が必要。 インターネットからのアクセスのためにEC2をパブリックサブネットに配置する場合がある。 が、セキュリティ的にはあまり好ましくない。ファイヤウォールに依存するので危険ということらしい。

そこでELBをパブリック、EC2をプライベートに配置して、ELBにグローバルIPを当てるようにするほうが好ましい。 EC2が配置されたプライベートサブネットでは、HTTP/HTTPS通信のみ受け付けるようにしている(ここはセキュリティグループで設定) このときELBはリバースプロキシみたいな扱い。EC2のスケールによる拡張にも優れた構成となる。

Cloudfrareリバースプロキシの説明

セキュリティグループ インスタンスごとに設定するファイアウォール。 インバウンドトラフィック・アウトバウンドトラフィックに分けて制御可能。 デフォルトですべての通信がOFF。で、ステートフル。 ステートフルなので、インスタンスからのリターントラフィックは自動的に許可。アウトバウンドトラフィックはいじる必要がない。

また、EC2からRDSにアクセスするとき、セキュリティグループによる通信許可設定が必要なんだけど、ソースとして、EC2じゃなくてセキュリティグループを参照することができる。

VPC内部のアクセス制御 外部からアクセスされる場合の通信経路は、 ルートテーブル =>ネットワークACL => サブネット => セキュリティグループ という順番にルーティングされる。

リソースアクセス

アイデンティティベースのアクセス制御 アクセスする主体から目線。つまりIAMユーザやIAMグループに充てるような制御ルール。

IAMポリシー評価ロジック

Denyチェック yes →拒否
↓ No
Allowチェック yes →許可
↓ No
拒否

最初のDenyによるジャッジは「明示的な拒否」みたいな言葉で表現される。Allowを記述されていても拒否が優先される。

リソースベースのアクセス制御

リソース目線。

アクセスレベル

IAMで定義されている言葉。よくある操作に名前をつけて権限付与時にどの程度の権限かを明示するもの。名前だけ知ってればOK。

IAMロールと一時権限移譲

IAMロールをIAMユーザに与え、一時的にその権限で利用する。このときに STSを使う。

暗号化

適用箇所 - 保管中のデータの暗号化 - 転送中のデータの暗号化 というどちらかの観点で考えることが多い。AWSでは、 - SSE(server side encryption) - CSE(client side encryption) と表現される。以下でざっくり特徴

SSE CSE
暗号化箇所 AWS カスタマー側
転送時の暗号化状態 なし あり

KMS

AWSの各サービスの暗号化で使われる鍵はKMSで生成。 この暗号化時の鍵を「データキー」と呼ぶが、このデータキーも保護が当然必要。 で、データキーはさらに暗号化され、このとき暗号化したキーを「KMSキー」と読んでいる。 所謂「エンベロープ暗号化」というもの。 この辺は別で説明をする。

所感

セキュリティグループ間参照で設定できるのは楽でよいと思った。CIDRでいちいち書くのも面倒なので楽に設計構築できるようによく考えられているなと思った。 KMSが意外と細かく読まないと混乱をきたす感じ。次回は細かく見ていきたい。