IAM: 여러 서비스에 대한 액세스 허용·거부하기
IAM: 여러 서비스에 대한 액세스 허용·거부하기 (프로그래매틱 및 콘솔)
이 예시는 여러 서비스에 대한 전체 액세스를 허용하고 IAM에서는 제한된 자가 관리 액세스를 허용하는 자격 증명 기반 정책을 만드는 방법을 보여드려요. 또한 Amazon S3 로그 버킷 또는 Amazon EC2 i-1234567890abcdef0 인스턴스에 대한 액세스는 거부해요. 이 정책은 프로그래매틱 액세스와 콘솔 액세스 모두에 대한 권한을 정의해요.
출처: 문서
본문
예시 정책에서 이탤릭체로 표시된 자리표시자 텍스트를 본인 정보로 바꾼 뒤, create a policy 또는 edit a policy의 지침을 따라 적용하면 돼요.
경고
이 정책은 여러 서비스의 모든 액션과 리소스에 대한 전체 액세스를 허용해요. 이 정책은 신뢰할 수 있는 관리자에게만 적용해야 해요.
이 정책을 권한 경계(permissions boundary)로 사용해서 자격 증명 기반 정책이 IAM 사용자에게 부여할 수 있는 최대 권한을 정의할 수도 있어요. 자세한 내용은 Delegating responsibility to others using permissions boundaries 문서를 참고하세요. 이 정책을 사용자의 권한 경계로 사용하면 스테이트먼트들이 다음 경계를 정의해요.
AllowServices 스테이트먼트는 지정된 AWS 서비스에 대한 전체 액세스를 허용해요. 즉 사용자의 이 서비스들에서의 액션은 사용자에게 연결된 권한 정책에 의해서만 제한돼요.
AllowIAMConsoleForCredentials 스테이트먼트는 모든 IAM 사용자를 나열하는 액세스를 허용해요. 이 액세스는 AWS Management Console의 Users 페이지를 탐색하는 데 필요해요. 또한 계정의 비밀번호 요건을 볼 수 있게 해주는데, 사용자가 본인 비밀번호를 변경하는 데 필요해요.
AllowManageOwnPasswordAndAccessKeys 스테이트먼트는 사용자가 본인의 콘솔 비밀번호와 프로그래매틱 액세스 키만 관리할 수 있게 해줘요. 이는 중요한데, 다른 정책이 사용자에게 전체 IAM 액세스를 주면 그 사용자가 본인이나 다른 사용자의 권한을 바꿀 수 있기 때문이에요. 이 스테이트먼트는 그런 일을 막아줘요.
DenyS3Logs 스테이트먼트는 logs 버킷에 대한 액세스를 명시적으로 거부해요. 이 정책은 회사의 사용자 제한을 강제해요.
DenyEC2Production 스테이트먼트는 i-1234567890abcdef0 인스턴스에 대한 액세스를 명시적으로 거부해요.
이 정책은 다른 서비스나 액션에 대한 액세스를 허용하지 않아요. 이 정책을 사용자의 권한 경계로 사용하면, 사용자에게 연결된 다른 정책이 그 액션들을 허용하더라도 AWS는 그 요청을 거부해요.
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowServices",
"Effect": "Allow",
"Action": [
"s3:*",
"cloudwatch:*",
"ec2:*"
],
"Resource": "*"
},
{
"Sid": "AllowIAMConsoleForCredentials",
"Effect": "Allow",
"Action": [
"iam:ListUsers",
"iam:GetAccountPasswordPolicy"
],
"Resource": "*"
},
{
"Sid": "AllowManageOwnPasswordAndAccessKeys",
"Effect": "Allow",
"Action": [
"iam:*AccessKey*",
"iam:ChangePassword",
"iam:GetUser",
"iam:*LoginProfile*"
],
"Resource": ["arn:aws:iam::*:user/${aws:username}"]
},
{
"Sid": "DenyS3Logs",
"Effect": "Deny",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::logs",
"arn:aws:s3:::logs/*"
]
},
{
"Sid": "DenyEC2Production",
"Effect": "Deny",
"Action": "ec2:*",
"Resource": "arn:aws:ec2:*:*:instance/i-1234567890abcdef0"
}
]
}