やりたいこと
・2つの既存AWSアカウントに対して、AWS OrganizationsのSCPを使って管理できるようにしたい。
・OUに属するアカウントは、EC2サービスアクションのみ許可。つまりEC2以外の他サービスは触れないようにしたい。
やってみる
1. AWS Organizationsを起動
ルートアカウント(管理アカウント)で、AWS Organizationsを作成する。
構成が表示される。
2. OUを作成
Rootにチェックを入れて、アクションから組織単位>新規作成を選択する。
OU名をつけて作成ボタンぽち。
いざOU設計することになった場合、どのように考えればいいかな~と思っていたところ、以下が参考になりそうでした。
AWS Organizationsの設計に必須なOU設計のベストプラクティスを学ぶ | DevelopersIO
作成すると構成が表示される。
3. 別のAWSアカウントをOUに追加
今回は既存アカウントを追加。
まずは、ルートアカウント側のメールアドレスに認証メールを送信。
認証後、やっとOUに追加したいアカウントに招待メールを送信。
プロセスを完了してねとあるので、OUに追加したいアカウントにログインします。
OUに追加したいアカウントにログイン後、Organizations>招待にいくと、
招待を承認するか拒否するか選択する画面が表示されたので、承認するをぽち。
管理アカウントにログインして確認すると、OUに追加したいアカウントが見えるようになりました。
OUに参加させるため、対象アカウントにチェックを入れ、アクション>移動をぽち。
移動先にチェックを入れて、「AWSアカウントを移動」をぽち
OUに参加させることができました。
4.SCPを有効化
左ペインからポリシーを選択すると、デフォルトでは全ポリシー設定が無効になっているので、有効化します。
有効化直後は「FullAWSAccess」が存在します。ポリシー名をクリックして、もう少し確認します。
アタッチ先を見ると、デフォルトは全OUにアタッチされていました。
SCPを作成してアタッチするだけでは、この「FullAWSAccess」が効果を発揮してしまうため、後ほど「FullAWSAccess」はデタッチします。
ちなみに、SCP継承の詳細については、以下がとてもわかりやすかったです。
[AWS Organizations] SCP(サービスコントロールポリシー)の継承の仕組みを学ぼう | DevelopersIO
5.SCPを作成
試しに、EC2アクションのみ許可するポリシーを作成しました。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": [ "*" ] } ] }
6.SCPをOUにアタッチ
作成したポリシーにチェックを入れて、アクション>ポリシーのアタッチをぽち。
アタッチ対象を選択するよう求められるので、
対象OUにチェックを入れて「ポリシーのアタッチ」をぽち。
ポリシー画面で、ターゲットタブを確認するとアタッチしたOUが確認できました。
7.SCP「FullAWSAccess」をデタッチ
ポリシー画面から「FullAWSAccess」を選択しデタッチさせたいOUにチェックを入れて「デタッチ」をぽち。
「デタッチ」をぽち。
「FullAWSAccess」のターゲットから、選択したOUが表示されなくなったので、動作を確認します。
8.動作確認
OUに参加させたアカウントにログインします。
EC2画面は表示できますが、一例でS3画面は表示許可がないことが確認できました。
<EC2画面>
<S3画面>
以上!
参考リンク
AWS OrganizationsのSCP(サービスコントロールポリシー)を理解する | DevelopersIO