IAM(Identity and Access Management)은 AWS 리소스에 대한 ‘누가’, ‘무엇을’, ‘어떻게’ 접근할 수 있는지를 안전하게 제어하는 서비스입니다.
인증(Authentication)과 권한 부여(Authorization)를 모두 다루며, AWS에서 사용자, 그룹, 역할, 정책 등을 통해 세밀한 보안 통제를 제공합니다.
AWS 계정을 생성하면 기본적으로 모든 권한을 가진 루트 사용자가 생성되며, 이후 일반 사용자는 IAM 사용자로 만들어서 관리하는 것이 보안상 안전합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example-bucket/*"
}
]
}
IAM 사용자: 권한의 소유자
액세스 키: 권한에 접근하기 위한 인증 수단
aws s3 ls
명령어로 S3 버킷 목록 조회 시, 액세스 키를 사용해 IAM 사용자의 권한을 인증IAM 정책은 다음과 같은 JSON 구조로 작성됩니다.
{
"Version": "2012-10-17",
"Statement": [ ... ]
}
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example-bucket/*"
}
{
"Effect": "Deny",
"Action": "s3:DeleteObject",
"Resource": "arn:aws:s3:::example-bucket/*"
}
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::example-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "203.0.113.0/24"
}
}
}
{
"Sid": "RequireMFAForS3Access",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "*",
"Condition": {
"DateGreaterThan": {
"aws:CurrentTime": "2025-06-01T00:00:00Z"
},
"DateLessThan": {
"aws:CurrentTime": "2025-06-30T23:59:59Z"
}
}
}
개별 사용자 관리
AWS 리소스 간 권한 관리
최소 권한 원칙 적용
프로그래밍적 접근
boto3
를 사용해 S3 파일 업로드 스크립트 작성최소 권한 원칙 적용
액세스 키 관리
IAM 역할 선호
MFA(다단계 인증) 활성화
CloudTrail 사용
AWS에서 관리자 권한을 가진 IAM 사용자를 생성하고, 해당 계정을 통해 콘솔에 로그인하는 과정입니다.
IAM - 사용자 - 사용자 생성 선택
다음과 같이 설정합니다.
AdministratorAccess 정책을 설정합니다.
AdministratorAccess
를 부여하는 것은 보안상 권장되지 않습니다. 사용자 생성을 완료합니다.
사용자 생성 완료 후, 표시되는 계정 ID(Account ID) 를 복사해 둡니다.
이후 아래 로그인 화면에서 계정 ID, IAM 사용자 이름, 비밀번호를 입력해 로그인합니다.
Sign in을 선택하면 IAM 로그인을 성공하게 됩니다.
Q: IAM 정책과 액세스 키는 같은 건가요?
A: 아니요. IAM 정책은 권한(무엇을 할 수 있는지)을 정의하고, 액세스 키는 사용자가 그 권한에 접근할 수 있도록 인증합니다.
Q: IAM 역할을 사용하는 것이 액세스 키보다 안전한 이유는?
A: IAM 역할은 액세스 키 없이 AWS 리소스 간 임시 자격 증명을 사용하므로, 키가 유출될 위험이 없습니다.
Q: 액세스 키는 어디에서 사용되나요?
A: 주로 AWS CLI, SDK, 또는 API를 통해 프로그래밍적 접근 시 사용됩니다.
IAM은 AWS 리소스 접근을 안전하게 관리하는 핵심 서비스로, IAM 사용자, 정책, 역할, 액세스 키 등을 통해 누가 무엇을 할 수 있는지 명확히 제어할 수 있습니다. 이를 올바르게 설정하고 관리하면 AWS 리소스의 보안을 강화하고 효율적으로 운영할 수 있습니다.