Posted at

AWS移行 - ネットワーク関連でやったこと

ネットワーク関連の設定メモ。

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では以下のように設定


ApacheでIPを許可する場合,,X-Forwarded-Forを取得

    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の設定では以下の設定を追記する。


/nginx/nginx.conf,X-Forwarded-Forを取得

    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ロールして使用。