サービス毎に担当部署が異なったり担当者が異なったりすると、余計な事故を防ぐために互いのEC2インスタンスへはアクセスできないようにしたい。そこで「Service-A-Server」、「Service-B-Server」のEC2インスタンスを作成し互いに属するIAMユーザを作成してみます。
■Service-A-Server:Service-A-Managerだけフルアクセス可能
■Service-B-Server:Service-B-Managerだけフルアクセス可能
IAMで各ユーザを作成してパスワードを割り当てておきます。
IAMのサンプルコンフィグから「Amazon EC2 Full Access」を選択します。すると下記のようなポリシーが生成されます。
■「Amazon EC2 Full Access」ポリシー
{ "Version": "2012-10-17", "Statement": [ { "Action": "ec2:*", "Effect": "Allow", "Resource": "*" }, { "Effect": "Allow", "Action": "elasticloadbalancing:*", "Resource": "*" }, { "Effect": "Allow", "Action": "cloudwatch:*", "Resource": "*" }, { "Effect": "Allow", "Action": "autoscaling:*", "Resource": "*" } ] }
「Service-A-Manager」用にこれを下記のように変更します。
{ "Version": "2012-10-17", "Statement": [ { "Action": "ec2:describe*", "Resource": "*", "Effect": "Allow" }, { "Action": "ec2:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "ec2:ResourceTag/Name": "Service-A-*" } } }, { "Effect": "Allow", "Action": "cloudwatch:*", "Resource": "*" } ] }
※autoscalingとELBは使わないのでとりあえず削除。
「ec2:describe*」をALLで許可しておく記述が無いとEC2インスタンスのリスト自体が見れなくなってしまいます。逆を言うとリストは全員見えてしまうということ。本当はリストも見えないようにしたいのだができるんだろうか。。
cloudwatchはARNで指定できないらしいです。ウィザードから作成してもARNの箇所がグレーアウトしてしまうんです。
サービスの性格が異なるとVPCを分けて管理することがあると思うが、VPC単位で接続を制限できるとよさそうなんだけどできるのでしょうか。