AWS: 開発者グループのユーザ管理者を作る
特定のグループについて、ユーザの追加や削除を行えるAdminよりも下位のユーザー管理者を作りたい。ユーザー管理者グループとして次のような構成のInfraUserManagerGroupを作成する。
- [UserGroup] InfraUserManagerGroup
- [Policy(Customer)] InfraUserManagerGroup-SwitchRolePolicy
- [Role] InfraUserManagerRole
- [Policy(Customer)] InfraUserManagerRolePolicy
- [Role] InfraUserManagerRole
- [Policy(Customer)] InfraUserManagerGroup-SwitchRolePolicy
InfraUserManagerRolePolicyではGroup=Infraのタグを持つユーザーに関する操作とInfraグループ、リードオンリーグループへのユーザ追加、削除のみを行えるようにする。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:CreateUser",
"iam:CreateLoginProfile",
"iam:TagUser",
"iam:DeleteUser",
"iam:UpdateUser"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Group": "Infra"
}
}
},
{
"Effect": "Allow",
"Action": [
"iam:AddUserToGroup",
"iam:RemoveUserFromGroup"
],
"Resource": [
"arn:aws:iam::*:group/Infra*",
"arn:aws:iam::*:group/ReadOnlyUserGroup"
]
},
{
"Effect": "Allow",
"Action": [
"iam:Get*",
"iam:List*"
],
"Resource": "*"
}
]
}
InfraUserManagerGroup-SwitchRolePolicyも作成しておく
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::*:role/InfraUserManagerRole"
]
}
]
}
InfraUserGroupに所属するためにはGroup=Infraのタグが必要などの制限は行っていないため、別の管理者が作成したGroup=Appなどのタグを持つユーザーをInfraUserGroupに所属させることは可能となる。厳密な管理をする場合はもうちょっと考えないとダメかも。
ユーザー作成時に許可の無いグループへ所属させようとした場合は次のようなエラーになる。
ユーザーに直接ポリシーを紐づけようとすると次のようなエラーとなる。