AWS を始める：ネットワークとユーザー・セキュリティ

EC2 とか S3 とかはなんとなく何するやつかしってる・・くらいの人がある日最低限の AWS の環境一式を作らなくてはならなくなったので調べたことの備忘録です。
右も左も分からないで右往左往していた私に道筋を与えてくれた先輩方に感謝しています。


# 参考になる資料
として紹介されたサイトたち。

- [本家資料](https://aws.amazon.com/jp/documentation/)
- [Black Belt Online Seminar](https://aws.amazon.com/jp/aws-jp-introduction/)
- [Class method Developers IO](http://dev.classmethod.jp/category/cloud/aws/)

# 最初に知っておく概念や単語
## ネットワーク周り
![image](https://qiita-image-store.s3.amazonaws.com/0/61079/f583cc58-3480-2e81-ed53-82db16351ba7.png)
[BlackBelt](http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-vpc-47025202) の資料を読むと概要がざっくりわかります。

- VPC
    - `Virtual Private Cloud`
    - AWS アカウント専用の仮想ネットワーク。この中にサブネットであったり、セキュリティグループであったりを作っていきます。
    - [公式ドキュメント](http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Introduction.html)
- SG
    - `Security Group`
    - インスタンスの仮想ファイアウォールとして機能し、インバウンドトラフィックとアウトバウンドトラフィックをコントロール。
    - [公式ドキュメント](http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
    - SG は後から名前を変えられないらしいので、命名規則周りを整理しておかないとカオスになるらしい。
    - SG: インスタンスごと。 Network ACL: サブネットごと。ノンインフラエンジニアが触るならセキュリティ周りは SG のみで済ましたほうがわかりやすい。インフラ系エンジニアなら Network ACL のほうが馴染みがあるかも、とか。
- EIP
    - `Elastic IP`
    - 動的なクラウドコンピューティングのために設計された静的 IPv4 アドレス。 IP を EC2 や後述する ENI に紐付けられます。
    - [公式ドキュメント](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
- ENI
    - `Elastic Network Interface`
    - VPC のインスタンスに接続できる仮想ネットワークインターフェイス。 LAN のボードをマシンに刺すようなイメージ？
    - [公式ドキュメント](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-eni.html)
- IGW
    - `Internet GateWay`
    - VPC のインスタンスとインターネットとの間の通信を可能にする VPC コンポーネント。 VPC 内の EC2 等をインターネットに接続できるようにするための、 VPC <-> インターネット の窓口です。
    - [公式ドキュメント](http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html)
- AZ
    - `Availability Zone`
    - データセンタのロケーション。万一ある AZ がまるごと障害を起こしてもサービスを続けられるよう、複数の AZ にまたがってリソースを配置することで、可用性を高めることができる。
    - [公式ドキュメント](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)
- Network ACL
    - `Network Access Control List`
    - 1 つ以上のサブネットのインバウンドトラフィックとアウトバウンドトラフィックを制御するファイアウォールとして動作する、VPC 用のセキュリティのオプションレイヤー。
    - [公式ドキュメント](http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_ACLs.html)


## ユーザー管理周り
IAM を使って行います。

こちらも [BlackBelt](http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-aws-identity-and-access-management-aws-iam) を読むと良いと思います。
気をつけるべきは上記スライドのこのページに圧縮されていると思います。
![image](https://qiita-image-store.s3.amazonaws.com/0/61079/4d96c5f3-742e-9735-a9b7-dc3f14f18f48.png)

- IAM
    - `Identity and Access Management`
    - ユーザー等の権限の管理の仕組み。 EC2 の Unix 的な意味のユーザーとは別なので注意。
    - [公式ドキュメント](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/introduction.html)

IAM のベストプラクティスは毎年変わるとかいう噂もあります。 
2016 年版： [AWS re:Invent 2016: IAM Best Practices to Live By (SAC317)](http://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-iam-best-practices-to-live-by-sac317)

# その他
[アラートと通知で請求額をモニタリング](https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/monitor-charges.html) を使って異常に請求額が積まれた場合に知れるようにしておくことをおすすめされました。
万一 [初心者がAWSでミスって不正利用されて$6,000請求、泣きそうになったお話。](http://qiita.com/mochizukikotaro/items/a0e98ff0063a77e7b694) みたいなことになっても気づけますね。