ネットワーク関連の設定メモ。
AWSになったことによる影響等を書いていきます。
#セキュリティグループ設計
セキュリティグループはサーバー、ELB、RDS..ごとに設定し、そのセキュリティグループを許可するような設計になっています。
直接IPアドレスを記述するのは最小限になります。
※下記はイメージ
列が各リソース
行がセキュリティグループ名です
○が付いているところには、そのセキュリティグループの許可(インバウンド許可設定)されていることになります。
そのセキュリティグループに所属しているものも許可します。
たとえば下記の「prd-web01」というEC2は、「prd-app-web-sg」というセキュリティグループを許可していますが、
「prd-app-web-sg」の中身は「prd-front-main-sg」の80番を許可しています。
これは「prd-front-main-sg」が設定されている「prd-main-alb」からの80番アクセスを許可するという意味になります。
ELB | prd-main-alb | prd-admin-alb | prd-jenkins-alb |
---|---|---|---|
prd-myoffice-maintenance-sg | ○ | ○ | ○ |
prd-monitoring-sg | ○ | ||
prd-front-main-sg | ○ | ||
prd-front-admin-sg | ○ | ||
prd-front-jenkins-sg | ○ |
EC2 | prd-web01 | prd-admin01 | prd-rent01 | jenkins |
---|---|---|---|---|
prd-myoffice-maintenance-sg | ○ | ○ | ○ | ○ |
prd-app-web-sg | ○ | |||
prd-app-admin-sg | ○ | |||
prd-app-rent-sg | ○ | |||
prd-app-batch-sg | ○ | |||
prd-app-jenkins-sg | ○ |
RDS | prd-rent-db | prd-web-db |
---|---|---|
prd-data-rent-sg | ○ | |
prd-data-web-sg | ○ |
次に各セキュリティグループで許可している内容です。
IPの記述は最小限になっています。
ELB | ||
---|---|---|
prd-myoffice-maintenance-sg | 自社のIP | |
prd-monitoring-sg | 監視サービスのIP | |
prd-front-main-sg | 0.0.0.0/0 | 80/443番 |
::/0 | 80/443番 | |
prd-front-admin-sg | 0.0.0.0/0 | 80/443番 |
::/0 | 80/443番 | |
prd-front-jenkins-sg | 自社のIP | 80/443番 |
EC2 | ||
---|---|---|
prd-myoffice-maintenance-sg | 同上 | |
prd-app-web-sg | prd-front-main-sg | 80番 |
prd-app-admin-sg | prd-front-admin-sg | 80番 |
prd-app-rent-sg | prd-front-main-sg | 80番 |
prd-app-batch-sg | prd-app-admin-sg | 22番 |
prd-app-jenkins-sg | prd-front-jenkins-sg | 80番 |
RDS | ||
---|---|---|
prd-data-rent-sg | (postgresql) | |
prd-app-rent-sg | 5432番 | |
prd-app-admin-sg | 5432番 | |
prd-data-web-sg | (mysql) | |
prd-app-web-sg | 3306番 | |
prd-app-rent-sg | 3306番 | |
prd-app-admin-sg | 3306番 | |
prd-app-jenkins-sg | 3306番 |
#ELBが挟まったことによる影響
今までのロードバランサーではアクセス元IPが取得できていたが、ELBでは直接判別はできず、
headerのX-Forwarded-Forに格納される。
これによりアプリの改修や、Apache, Nginxに影響が出る。
##Apache, Nginxでip制限をしている場合
####Apacheでは以下のように設定
Order deny,Allow
Deny from All
Allow from env=allow_ip
SetEnvIf X-Forwarded-For "xxx\.xxx\.xxx\.xxx" allow_ip
SetEnvIf X-Forwarded-For "xxx\.xxx\.xxx\.xxx" allow_ip
####Nginxの設定では以下の設定を追記する。
set_real_ip_from xxx.xxx.xxx.xxx/xx; #許可したいip
real_ip_header X-Forwarded-For;
real_ip_recursive on;
#IAMの設計。スイッチロール
開発、ステージ、本番の3つのアカウントがあるが、
3つのアカウントそれぞれでIAMユーザを作成するのではなく、
一つのアカウントでIAMユーザを作成し、それぞれのアカウントではSwitchロールして使用。