【初心者必見】はじめてのSCP
投稿日: 2023/3/27
はじめに
こんにちは。CTCの朴木です。
みなさんAWS Organizationsは活用されていますでしょうか。
今回はAWSが提供するAWS OrganizationsサービスのSCP(Service control policy:サービスコントロールポリシー)について焦点を当てた記事を書いてみました。複数アカウントを管理されている場合、SCPを用いることで組織内のアカウントのアクセス権限を一括で制限することが可能となります。今後SCPを取り入れた運用をされたいという方はご参考ください。SCP(Service control policy:サービスコントロールポリシー)とは
SCPは組織に所属しているアカウントのアクセス権限を管理するのに用いられる組織ポリシーの一種です。アクセス権限を制限するのに用いられ、IAMポリシーに似ています。IAMポリシーはそのアカウント内の権限を制限するために利用しますが、SCPは組織に所属している複数のアカウントに対して一括で制限することが可能です。
例えば、特定のIAMユーザ以外には、IAMサービスのアクセスをさせたくない場合、どうしますか?
まず思い浮かぶのがIAMポリシーに上記のポリシーを作成して特定ユーザ以外にアタッチする方法だと思います。でもその要件が自社でお持ちのすべてのAWSアカウントに適用する必要がある場合、アカウントを作成するたびに同じようにIAMポリシーを作成・アタッチする作業が必要となります。すべてのアカウントに対して、または複数のアカウントに対して一度に制限をかけられると嬉しいですよね。こういったときに利用するサービスがSCPになります!
OU(Organization Unit)にてAWSアカウントをグルーピングし、そのOUに対してSCPを付与するとグループ内のアカウントすべてにサービスのアクセス制限をかけることが可能になります。OUが階層化している場合、上層のOUに紐づいているSCPは下層のOUへポリシーが継承されますので、もしSCPを継承させたくない場合はOUを分岐させ、SCPの影響がおよばないグループにアカウントを移動させると良いでしょう。
SCPのポリシー作成
ではSCPポリシーを作成してみましょう。
今回は例として、特定のIAMユーザ、IAMロール以外ではIAMユーザ、ロールの作成・削除ができないよう制限するSCPを作成します。
下記のポリシーをOUに付与するとそのOUに所属しているAWSアカウントは、IAMロールの作成・削除が制限され、「user-001」という名前のIAMユーザと「role-001」というIAMロールのみ、制限された操作が可能となります。
●制御する内容
- IAMユーザ・IAMロールの作成を禁止する
- IAMユーザ・IAMロールの削除を禁止する
- 特定のIAMユーザ・IAMロールのみ作成および削除が可能とする
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"iam:CreateUser",
"iam:CreateRole",
"iam:DeleteUser",
"iam:DeleteRole"
],
"Resource": "*",
"Condition": {
"StringNotLike": {
"aws:PrincipalARN": [
"arn:aws:iam::*:user/user-001",
"arn:aws:iam::*:role/role-001"
]
}
}
}
]
}
SCPの設定方法
それでは早速設定してみましょう!
まずは管理アカウントのAWSコンソールへログインし、検索画面からAWS Organizationsサービスを検索してサービス画面へ遷移します。
※メンバーアカウントから設定できません。

左ペインの「ポリシー」をクリックします。

「サービスコントロールポリシー」をクリックします。ステータスが無効の場合は設定ができないため有効にしましょう。

「ポリシーを作成」ボタンをクリックします。

任意のポリシー名を入力します。

先ほどのポリシーを入力し、「ポリシーの作成」ボタンをクリックします。

「AWSアカウント」をクリックし、SCPを付与したいOUを選択します。

ポリシーのタブを選択し、サービスコントロールポリシー項目の「アタッチ」ボタンをクリックします。

作成したSCPを選択し、「ポリシーのアタッチ」ボタンをクリックします。

これで設定は完了です!
それでは実際にポリシーを付与したOUに所属しているAWSアカウントにログインしてみましょう!
Administrator権限を付与しているユーザでログインし、IAMユーザを作成しましたがエラーが表示され作成できませんでした。

同じくAdministrator権限を付与している「user-001」という名前のIAMユーザにて作成を実施してみます。こちらのIAMユーザはSCP上でIAMの作成制限を除外(「StringNotLike」で記述)しているため、下記の表示がされ、想定通りユーザの作成が完了しました。

おわりに
いかがでしたでしょうか。
IAMポリシーを用いてそれぞれのアカウントで操作を制限する方法もありますが、制限する要件が複数アカウントで同一の場合、SCPを用いると一括で設定できるため管理が簡単になります。OUも本番環境、開発環境等の用途に応じて設定すると操作制限の管理がさらにしやすくなりますのでこれからAWS Organizationsを用いた管理を考えている方はぜひ取り入れてみてください。
CTCは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。