IAM Identity Center ユーザーのユーザー ID を使用して特定アクションを制限する SCP を作ってみた
こんにちは、クラウド事業本部 コンサルティング部のいたくらです。
はじめに
IAM Identity Center(以降 IIC と記載)ユーザーには、ユーザー ID が一意に割り当てられます。
このユーザー ID を使用して、IIC ユーザー作成を制限する SCP を作成してみました。
前提
検証環境について補足します。
- IAM Identity Center が有効になっている
- 私の環境は IIC 内でユーザーとグループを作成・管理しています(プロビジョニング方法:Direct)
- グループ:
test-admin-group
に IIC ユーザー:test-admin
,test-admin-02
が所属
- このグループに対しては、Organizations 内のすべてのアカウントに対して
AdministratorAccess
権限を適用
- Organizations の構成は以下の通り
- IIC の管理者は
アカウント:itkr_mem01
に委任している
やってみた
IIC ユーザー作成を制限する SCP を作成する
AWS Organizations > ポリシー > サービスコントロールポリシー に移動します。
「ポリシーを作成」をクリックします。
ポリシー名とポリシーの説明を入力したら、以下の JSON をコピペします。
test-scp
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyIdentityStoreUserCreationExceptSpecificUsers",
"Effect": "Deny",
"Action": "identitystore:CreateUser",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"identitystore:UserId": [
"{IICユーザー作成を許可するIICユーザーのユーザーIDを入力}"
]
}
}
}
]
}
ユーザー ID は各 IIC ユーザーの以下キャプチャの箇所から確認可能です。
今回は IIC ユーザー:test-admin
だけに IIC ユーザー作成を許可します。
入力が完了したら「ポリシーを作成」をクリックします。
IIC 管理者を委任しているアカウントに SCP をアタッチする
作成した SCP を選択し、アクションから「ポリシーのアタッチ」をクリックします。
前提に記載したように、IIC 管理者は itkr_mem01
に委任しているので、このアカウントにチェックを入れて、「ポリシーのアタッチ」をクリックします。
アタッチが成功すると、「ターゲット」タブから確認できます。
test-admin-02 で IIC ユーザーを作成してみる
test-admin-02
で アカウント:itkr_mem01
にログインして、IIC ユーザーを作成してみます。
「ユーザーを追加」をクリックすると、以下のエラーが表示されました。
「test-admin-02 には SCP で identitystore:CreateUser が明示的に拒否されているため権限がない」といった内容のエラーが表示されたので、意図した挙動になっています。
test-admin で IIC ユーザーを作成してみる
test-admin
で アカウント:itkr_mem01
にログインして、IIC ユーザーを作成してみます。
「ユーザーを追加」をクリックすると、正常に追加できました。
test-admin
だけに IIC ユーザー作成を許可するという挙動になっていることが確認できました。
さいごに
IAM Identity Center ユーザーのユーザー ID を使用して特定アクションを制限する SCP を作ってみました。
IIC ユーザー管理者が複数存在する場合は、IIC を通じて引き受けるロールを指定して特定アクションを制限する方が運用は楽だと思いますが、どうしてもユーザーで制限をかけたい!といった場合はこういった方法もありますので参考にしていただければと思います。
おまけに IIC を通じて引き受けるロールを指定して特定アクションを制限する JSON を記載したので、気になる方はご確認ください。
この記事がどなたかのお役に立てれば幸いです。
おまけ
IIC を通じて引き受けるロールを指定して特定アクションを制限する SCP の例は以下になります。
test-scp(許可セット指定 ver.)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyIdentityStoreUserCreationExceptSpecificUsers",
"Effect": "Deny",
"Action": "identitystore:CreateUser",
"Resource": "*",
"Condition": {
"StringNotLike": {
"aws:PrincipalArn": [
"arn:aws:sts::*:assumed-role/AWSReservedSSO_{IICユーザー作成を許可する許可セット名を入力}_*/*"
]
}
}
}
]
}