[AWS] IAM 자격증명 이란?

Dev StoryTeller·2024년 12월 18일

AWS 알아보기

목록 보기
2/4

🤔 IAM 자격증명 이란?

IAM 자격 증명은 사용자(사람) 또는 프로그래밍 워크로드를 대표하며, 이를 통해 인증 후 AWS 계정에서 작업을 수행할 수 있는 권한을 받습니다
자격 증명은 하나 이상의 정책과 연결될 수 있으며, 이는 자격 증명이 수행할 권한을 받은 작업, 대상 AWS 리소스 및 관련 조건을 결정합니다
IAM ID에는 IAM 사용자, IAM 그룹 및 IAM 역할이 포함됩니다


자격증명이란 사용자, 프로그래밍 워크로드를 의미하며, 해당 사람인 것이 확인되면 AWS 작업을 수행할 수 있는 권한을 받는다
??? 자격을 가진 사람은 ~~~란 일을 할 수 있어에서 ??? 자격을 가진 사람 단계에 해당한다고 보면 된다

이러한 자격증명(ID)은 어떤 것을 활용(With)하여 뭘로(What) 어떻게 증명(How)하는지로 나뉜다


💡 How? 자격 증명 방법

  • 루트 사용자
    AWS 계정을 만들 때 자동으로 생기는 것으로, 해당 AWS 내의 모든 리소스에 대해 권한이 존재한다

  • IAM Identity Center 사용
    리소스에 대한 액세스를 제공하는 데 필요한 IAM 역할을 자동으로 생성한다
    자세한 내용은 아래 링크에 있다(https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)

  • 페더레이션
    외부 ID Provider(Google 등)이 AWS 리소스를 사용할 수 있도록 자격을 증명하는 방법이다
    IAM 역할 수임(AssumeRole), STS를 사용한다

💡 What? 자격 증명에 필요한 요소

  • 루트 사용자
    모든 권한을 가지고 있는 사용자. 권한이 분배되지 않아 사용시 보안 위험이 있기에 주의가 필요하다
    액세스 키로 자격 증명을 한다

  • IAM 사용자
    말 그대로 권한을 가진 특정 사용자이다
    액세스 키도 가능하지만, 역할 수임을 통해 임시 자격 증명을 하는 것이 좋다

  • IAM 사용자 그룹
    사용자들의 집합을 의미한다
    루트/사용자와 달리 직접 자격증명이 되진 않지만, 사용자들이 공통된 작업이나 권한을 가질경우, 하나로 묶어 제공하는 방식으로 사용된다

  • IAM 역할
    이름 그대로 어떤 권한들이 있는지를 엮어놓은 것이다
    IAM 사용자에게 필요한 정책을 연결하는 것과 뭐가 다르냐 할 수도 있지만, 역할은 유연성이 좋다
    사용자특정 누군가에게 권한을 영구 부여한다는 느낌이라면, 역할사용자들에게 권한을 잠시 빌려준다라는 느낌이다
    역할은 얼마든지 주고 싶은 사람에게 필요할 때 잠시 빌려줄 수 있다. 이용 기간이 끝나면 사용할 수 없으며 다시 인증해야 한다

💡 With? 자격 증명 수단

이러니 저러니 해도 결국 다음 2가지이다

  • 장기 자격증명
    루트 / 사용자의 액세스 키를 이용하는 방식이다
    ID / PW 인증을 떠올리면 쉽다. 재발급 전까지 유효하며 간편하긴 하지만, 그만큼 보안에 좋지 않다
    또한 특정 사용자에 한정되기 때문에, 해당 사용자가 변경될 경우 액세스 키가 적용된 곳에도 모두 바꿔줘야 하는 매우 불편한 단점이 있다

  • 임시 자격증명
    임시로 자격을 부여하는 방식이다. 대표적으로 역할 수임이 있다
    이 것은 JWT 인증을 떠올리면 쉽다. 유효시간이 존재하기에 보안에도 좋다
    또한 특정 사용자에 매달리지 않기에 누구에게나 줄 수 있고, 사용자 변경에도 문제없이 대처할 수 있다
    다만 역시 JWT 처럼 리프레시 프로세스가 구축이 되어야 한다는 점에서 조금 까다롭다고 할 수 있다

🤔 자격 증명 방법?

우선 루트 자격 증명은 되도록 피해야 한다
난 한명만 있으면 돼!라면 괜찮겠지만, 여러 사람이 AWS를 이용하는 경우엔 서로가 서로의 리소스 영역을 침범하는 경우가 발생할 수 있다

가징 좋은 방법은 AWS에도 소개되어 있듯, 역할 수임을 통해 임시 자격 증명을 하는 것이다

profile
개발을 이야기하는 개발자입니다

0개의 댓글