ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] IAM 개념 및 용어 정리
    Cloud/AWS 2021. 4. 14. 10:42
    728x90
    반응형

    IAM 용어 정리

    스크린샷 2021-04-14 오전 9 59 56

     

    위와 같이 AWS IAM에 들어가면 사용자, 정책, 권한, 그룹, 역할. 인스턴스 프로파일 등등 많은 용어들이 존재합니다. 어떤 S3, EC2, CodeDeploy와 같은 서비스를 이용할 때는 사용할 때 역할을 만들고 권한을 주는 것을 경험해보셨을 것입니다.

    하지만 누군가 저에게 역할, 정책, 권한 차이가 뭔고 묻는다면 선뜻 대답할 수 없었습니다. 일단 각각이 어떤 뜻인지를 알기 전에 이것들이 왜 필요한지에 대해서 알아보겠습니다.

     

    AWS는 보통 회사당 하나의 계정을 갖고 사용하는데 회사 내 AWS를 사용하는 모든 사람에게 같은 권한을 줄 수는 없습니다. 따라서 대부분의 사용자 권한 관리 서비스와 마찬가지로 최고 관리자가 Root 계정을 관리하고 그밖의 사용자들은 각자 계정을 발급받아 제한된 권한을 갖고 AWS를 이용하게 됩니다. (Root 계정 MFA 활성화 하기)

     

    AWS에서는 사용자별로 AWS에서 제공하는 서비스들, 서비스에 생성된 자원 등에 대해 세분된 권한을 지정할 수 있게 해줍니다.

     

    1

    IAM 권한이란?

    AWS 서비스나 자원에 어떠 작업을 할 수 있는지 명시해두는 규칙입니다.

     

    스크린샷 2021-04-14 오전 10 06 30

     

    실제로 저의 IAM 사용자의 권한은 위와 같습니다. 가령 AWSCodeDeployRoleFullAccess는 CodeDeploy에 접근할 모든 권한을 가지고 있다라는 뜻입니다.

     

     

     

     

    IAM 정책이란?

    권한들의 모음입니다. 사용자나 그룹들에 권한을 직접 적용할 수는 없고 권한들로 만든 정책을 적용해야 합니다. 정책은 사용자, 그룹 역할에 적용할 수 있습니다. (위의 권한 사진을 보면 정책 이름이라고 써있는 것을 볼 수 있습니다.)

     

    스크린샷 2021-04-14 오전 10 17 18

     

    실제로 정책에 들어가보면 위와 같이 AWS에서 기본으로(일반적인 상황들) 제공해주는 정책들이 존재합니다. 그 중에 하나가 AmazonS3FullAccess 입니다. 위와 같이 기본적으로 존재하는 정책을 사용할 수도 있지만
    AWS에서 모든 사람의 상황에 맞는 정책들을 다 제공해주진 못하기 때문에 나중에 정책을 커스텀하게 만들어서 사용할 수도 있습니다.

     

     

     

    IAM 사용자란?

    사용자는 AWS의 기능과 자원을 이용하는 객체입니다. 사용자별로 어떤 권한을 가졌는지 세분화해서 지정할 수 있습니다. (현재 저도 사용자 계정을 통해서 AWS에 로그인하고 있습니다.)
    다시 권한으로 가서 사진을 보면 저의 사용자는 해당 정책들을 가진 사용자라는 것으로 해석할 수 있습니다.

     

     

     

    IAM 그룹이란?

    여러 사용자에게 공통으로 권한을 부여할 수 있게 만들어진 개념입니다. 하나의 그룹에 여러 명의 사용자를 지정해서 공통적으로 권한을 주어야 하는 상황있을 때 쓰면 유용합니다.

     

     

     

    IAM 역할이란?

    어떤 행위를 하는 객체에 여러 정책을 적용한다는 점에서 사용자와 비슷하지만 객체가 사용자가 아닌 서비스나 다른 AWS 계정의 사용자라는 점에서 차이가 있습니다.
    보통은 사용자가 아닌 특정 서비스에서 생성한 객체에 권한을 부여하는 데 사용합니다.(ex: EC2, S3, CodeDeploy에 역할을 부여하기)

    예를들어, 우리가 만들어서 사용하는 EC2 인스턴스가 S3에서 파일을 읽어오려면 S3 파일을 읽을 수 있는 권한으로 정책을 만든 뒤에 해당 정책으로 역할을 만들어 EC2 인스턴스에 지정을 해주어야 합니다.

    1

     

    즉, 위의 그림에서는 EC2 인스턴스가 RDS와 S3에 접근할 수 있는 역할을 주었다라고 할 수 있습니다.

     

     

     

    인스턴스 프로파일 이란?

    사용자가 사람을 구분하고 그 사람에 권한을 주기 위한 개념이었다면 인스턴스 프로파일은 EC2 인스턴스를 구분하고 그 인스턴스에 권한을 주기 위한 개념입니다. 인스턴스 프로파일은 역할을 위한 컨테이너로서 인스턴스 시작 시 EC2 인스턴스에 역할 정보를 전달하는 데 사용합니다.
    즉, 인스턴스 프로파일이 지정된 EC2는 시작 시 역할 정보를 받아오고 해당 역할로 필요한 권한들을 얻게 됩니다.

     

    스크린샷 2021-04-13 오후 3 39 31

     

    실제로 Auto-Scaling을 하다 보면 EC2의 AMI를 만들고 그것을 기반으로 Auto-Scaling이 어떤 이미지로 어떤 종류의 인스턴스를 만들지 등등을 설정하는 시작 템플릿을 만드는 곳이 있습니다.


    해당 역할은 Auto-Scaling에 대한 정책이 들어있는 역할입니다. 여기서 IAM 인스턴스 프로파일에 위와 같이 설정을 해주어야 Auto-Scaling을 통해서 인스턴스가 만들어져도 해당 역할을 갖고 만들어지기 때문에 CodeDeploy가 배포를 할 수 있습니다.
    (위의 역할을 설정하지 않고 만드니 배포하는데서 많은 삽질을 했습니다..)

    반응형

    댓글

Designed by Tistory.