IAM: 특정 IAM 사용자가 그룹을 관리하게 허용하기

IAM: 특정 IAM 사용자가 그룹을 관리하게 허용하기 (프로그래매틱 및 콘솔)

이 예시는 특정 IAM 사용자가 AllUsers 그룹을 관리할 수 있게 허용하는 자격 증명 기반 정책을 만드는 방법을 보여드려요. 이 정책은 프로그래매틱 액세스와 콘솔 액세스 모두에 대한 권한을 정의해요.

출처: 문서

본문

예시 정책에서 이탤릭체로 표시된 자리표시자 텍스트를 본인 정보로 바꾼 뒤, create a policy 또는 edit a policy의 지침을 따라 적용하면 돼요.

이 정책이 하는 일

AllowAllUsersToListAllGroups 스테이트먼트는 모든 그룹을 나열할 수 있게 해줘요. 콘솔 액세스에 필요해요. 이 권한은 리소스 ARN을 지원하지 않아 별도의 스테이트먼트로 분리하며, "Resource" : "*"를 지정해요.

AllowAllUsersToViewAndManageThisGroup 스테이트먼트는 그룹 리소스 유형에서 수행할 수 있는 모든 그룹 액션을 허용해요. 사용자 리소스 유형(그룹 리소스 유형이 아님)에서 수행할 수 있는 ListGroupsForUser 액션은 허용하지 않아요. IAM 액션에 지정할 수 있는 리소스 유형에 대해 더 알아보려면 Actions, Resources, and Condition Keys for AWS Identity and Access Management 문서를 참고하세요.

LimitGroupManagementAccessToSpecificUsers 스테이트먼트는 지정된 이름을 가진 사용자에게 그룹 쓰기 및 권한 관리 액션에 대한 액세스를 거부하지 않아요. 정책에 지정된 사용자가 그룹을 변경하려 하면 이 스테이트먼트는 요청을 거부하지 않아요. 그 요청은 AllowAllUsersToViewAndManageThisGroup 스테이트먼트가 허용해요. 다른 사용자가 이 작업을 수행하려 하면 요청이 거부돼요. IAM 콘솔에서 이 정책을 만들 때 Write 또는 Permissions management 액세스 수준으로 정의된 IAM 액션을 볼 수 있어요. 이렇게 하려면 JSON 탭에서 Visual editor 탭으로 전환하면 돼요. 액세스 수준에 대해 더 알아보려면 Actions, Resources, and Condition Keys for AWS Identity and Access Management 문서를 참고하세요.

{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAllUsersToListAllGroups",
            "Effect": "Allow",
            "Action": "iam:ListGroups",
            "Resource": "*"
        },
        {
            "Sid": "AllowAllUsersToViewAndManageThisGroup",
            "Effect": "Allow",
            "Action": "iam:*Group*",
            "Resource": "arn:aws:iam::*:group/AllUsers"
        },
        {
            "Sid": "LimitGroupManagementAccessToSpecificUsers",
            "Effect": "Deny",
            "Action": [
                "iam:AddUserToGroup",
                "iam:CreateGroup",
                "iam:RemoveUserFromGroup",
                "iam:DeleteGroup",
                "iam:AttachGroupPolicy",
                "iam:UpdateGroup",
                "iam:DetachGroupPolicy",
                "iam:DeleteGroupPolicy",
                "iam:PutGroupPolicy"
            ],
            "Resource": "arn:aws:iam::*:group/AllUsers",
            "Condition": {
                "StringNotEquals": {
                    "aws:username": [
                        "srodriguez",
                        "mjackson",
                        "adesai"
                    ]
                }
            }
        }
    ]
}

더 알아보기 (Learn more)