今回は、サービスコントロールポリシー(SCP)についてです。
- ■サービスコントロールポリシー(SCP)とは
- ■SCP利用の前提
- ■SCPの適用箇所について
- ■SCPの考え方
- ■組織ルートに割り当てられたSCPとOUに割り当てられたOUについて
- ■SCPを設定する
- ■SCPの挙動を確認する
- ■SCPを削除
■サービスコントロールポリシー(SCP)とは
IAMユーザにIAMポリシーを適用するように、
メンバーアカウントに対してポリシーを適用することができます。
メンバーアカウントに対するポリシーをSCPと呼びます。
※マスターアカウントにSCPは適用できません。
■SCP利用の前提
SCPを利用する際、AWS Organizationsの機能セットは「All Features」が選択されている必要があります。
機能セットが「一括請求」の場合にはSCPは利用できません。
組織の設定にて、現在の機能セットがどうなっているかを確認することができます。
下記の場合には「All Features」が有効化されています。
■SCPの適用箇所について
SCPは以下の3つの箇所に適用することができます。
① 組織ルート
② OU
③ メンバーアカウント(念のためですがマスターアカウントは適用不可です。)
①の組織ルートですが、
これはOrganizationsの以下の「Root」というところを指します。
②のOUは特に説明はありません。
③のメンバーアカウントですが、メンバーアカウント内のIAMユーザに対するSCPだけではなく、ルートアカウントに対してもSCPの対象とすることができます。
そのため、ルートアカウントを今まで制御できず管理に困っていた場合には、SCPを利用することが制御できるようになります。
■SCPの考え方
SCPは、AWSサービスやAWSAPIのアクションについて制御(Allow/Deny)することができます。
SCPによるポリシーの書き方はIAMポリシーと同じです。
ただし、EffectとActionのみ設定可能です。
Resourceは*固定であり、Principalは利用不可です。
よくあるのは、ホワイトリスト形式とブラックリスト形式のどちらかでSCPを利用するパターンです。
尚、SCPでは「暗黙的な拒否」がデフォルト設定です。
公式ページ: SCP を使用した戦略 - AWS Organizations
そのため、利用可能なアクションを明示的に許可する必要があります。
【ホワイトリスト形式】
指定したサービスやアクションを許可するポリシーのことです。
※指定外のものは拒否扱いになります。
【ブラックリスト形式】
指定したサービスやアクションのみを拒否するポリシーです。
※指定外のものは許可扱いになります。
■組織ルートに割り当てられたSCPとOUに割り当てられたOUについて
SCPは、組織ルート(Root)と各OUの両方に違ったSCPを適用することができます。
また、そこに対してIAMユーザのIAMポリシーも関わってきます。
SCPがホワイトリスト形式の場合には、以下のようなAND条件にて実行可能なアクションが決定されます。
引用元:https://d1.awsstatic.com/webinars/jp/pdf/services/20180214_AWS-Blackbelt-Organizations.pdf
SCPがブラックリスト形式(デフォルト)では、SCPによる拒否が最強です。
仮にIAMポリシーで許可していた場合でも、SCPにより対象のアクションは拒否となります。
■SCPを設定する
それでは、実際にやってみます。
今回はアクションがEC2のものを全て拒否するSCPを作成します。
1.マスターアカウントにて「サービスコントロールポリシー」をクリックします。
2.「サービスコントロールポリシーを有効にする」をクリックします。
3.自動的に「FullAWSAccess」というSCPが作成されます。
※当該SCPは修正することができません(AWSマネージドなSCPです。)
尚、当該SCPは「サービスコントロールポリシー」を有効化した時点で作成されている組織ルート(Root)、OU、メンバーアカウントに自動的にアタッチされます。
4.「ポリシーを作成」をクリックします。
5.ポリシー作成画面が表示されるため、必要事項を入力し、画面右下の「ポリシー作成」をクリックします。
※JSON形式のウィザードおよび入力補助機能があります。
最終的なJSON形式のポリシーは以下のようになりました。
6.作成されるとサービスコントロールポリシーの一覧に表示されます。
7.作成したポリシーをクリックします。
8.「ターゲット」タブをクリックし、「アタッチ」をクリックします。
9.アタッチ対象のラジオボタンを選択し、「ポリシーのアタッチ」をクリックします。
10.アタッチに成功すると、以下のように「ターゲット」欄に表示されます。
■SCPの挙動を確認する
それでは、dev1-memberにスイッチロールをし、
EC2へのアクションが拒否されるかどうかを確認してみます。
以下のようにEC2ダッシュボードではAPIエラーとなり、かつ「インスタンス」をクリックしても、「You are not authorized to perform this operation.」と表示されます。
期待通りの挙動になりました。
■SCPを削除
後始末をしておきます。
作成したSCPを削除します。
アタッチされているSCPは削除不可です。
そのためデタッチしてから削除する必要があります。
1.SCPをクリックし「ターゲット」欄から対象エントリを選択後、「デタッチ」をクリックします。
2.「デタッチ」をクリックします。
3.「削除」をクリックします。
4.ポリシー名を入力し、「削除」をクリックします。
以上です。