AWS에서 인증과 권한 부여(인가)의 주체는?
인증의 주체: User
인가의 주체: IAM Policy
IAM Policy는 User에 붙일 수도 있고, Group, Role에도 붙을 수도 있음
IAM Policy가 Role에도 붙을 수 있다는 것은 Role도 인증의 주체라는 것
Role은 임시 자격 증명(Temporary Credential, User는 Long Term Credential)
즉 아이디, 비밀번호로 인증하는 유저와 달리 Role은 만료 시간이 정해져 있음
Role은 다른 AWS 서비스들이 권한을 부여받고 싶을 때 사용
ex) EC2가 S3에 접근하고 싶다, Lambda가 S3에 접근하고 싶다
IAM Group은 공통의 권한을 가지는 사용자의 집합
그룹 생성 후 IAM Policy 연결, 사용자 추가 → 사용자는 그릅의 Policy 권한을 부여받음
IAM User에게 Policy를 직접 추가해줄 수도 있음
IAM User 인증은 두 가지 방식이 있음
1. 아이디와 패스워드를 가지고 인증(+ MFA 디바이스)
2. 액세스 키, 시크릿 액세스 키를 이용한 키 방식 → 주로 개발이나 Shell, CLI 환경에서 활용
IAM Policy는 JSON 형식의 문서
AWS 서비스의 접근 권한을 세부적으로 관리
{
"Version": "2012-10-17", // 버전은 꼭 지정된 날짜를 써야 함
"Statement": [
{
"Effect": "Allow", // 허용 또는 거부
"Action": "*", // 허용하는 동작 API
"Resource": "*" // 허용하는 AWS 리소스 (EC2, S3, ,,,)
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*", // IAM 서비스 관련 API들은 해당되지 않음
"Resource": "*"
}
]
} // 현재는 이 버전에서 패스워드 변경 등 몇 정책은 허용됨
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*", // S3 서비스 관련 API들만 허용
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ // 보통 읽기 API들은 Get, List로 시작, 즉 read only 정책
"s3:Get*",
"s3:List*"
],
"Resource": [ // S3 저장소의 mydata라는 버켓 안에 모든 리소스 허용
"arn:ars:s3:::mydata",
"arn:ars:s3:::mydata/*"
]
}
]
}
위 두가지 외 1회성 정책인 Inline 정책도 존재