본문 바로가기

Amazon Web Services

[AWS] IAM이란 무엇인가?

IAM이란?

Identity and Access Management의 약자로 AWS의 권한 관리 서비스이다.

또한 특정 리전에 종속되지 않는 글로벌 서비스이다.

IAM의 주요 구성 요소

사용자

AWS 자원에 접근하는 개별 사람이나 애플리케이션을 의미한다.

애플리케이션이라 함은 권한 부여를 실제 사람이 아닌 EC2와 같은 AWS 서비스도 대상이 될 수 있다.

그룹

사용자들을 묶어놓은 집합이다. 그룹에 정책을 적용하면 그룹 내에 사용자들에게 동일한 권한이 적용된다.

그리고 하나의 사용자는 여러 그룹에 속할 수도 있다.

정책

누가 어떤 자원에 어떤 작업을 할 수 있는지 명시한다. 다음과 같이 Json 형태의 문서 구조로 되어있다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::my-example-bucket/*"
        }
    ]
}
  • Version: 정책 언어의 버전이다.
  • Statement: 정책의 규칙을 담고 있는 배열이다.
  • Principal: 대상
  • Effect: 아래 행위를 허용할지 거부할지 정한다.
  • Action: 행위를 의미한다.
  • Resouce: 이 정책이 적용될 자원을 의미한다. 위 예를 기준으로는 s3 서비스의 my-example-bucket 내의 모든 자원이 대상이다.

역할

AWS 서비스들에게 AWS 할 수 있는 작업 권한을 부여한다.

IAM 관리 원칙

IAM의 권한은 최소한의 권한만 부여하는 것이 원칙이다.

즉, 꼭 필요로 하는 기능에 대해서만 접근이 허용하도록 설정한다.

AWS 리소스는 비용과 직결된 문제다. Root 및 IAM 계정들에 MFA를 적용해 두자.

Root 계정은 IAM 계정을 생성할 때 말고는 되도록 사용하지 말자.

1인 1 IAM 계정을 사용하자. 계정 공유 X

보안은 그룹 단위로 관리하자.

IAM 자격 증명 보고서나 각 사용자의 마지막 액세스 기록을 통해 권한을 모니터링하자.