본문 바로가기
Tech Story/AWS

[AWS] AWS IAM

by 다온(都来) 2022. 11. 8.

AWS IAM

Identity and Access, 즉 자격 증명과 접근에 대해 관리를 하는 서비스입니다. IAM을 사용하면 AWS 서비스에서 생성한 리소스에 대해 접근을 안전하게 통제할 수 있습니다. 또한, AWS 사용자 및 그룹, 역할을 만들고 관리할 수 있고 접근 권한을 허용하거나 거부하는 정책을 정의해서 AWS 리소스에 대한 접근 관리를 합니다.

 

AWS IAM 아이콘
이미지 출처 : AWS

AWS IAM이란?

즉, IAM에서 사용자를 생성하거나 사용자에게 개별 보안 자격 증명을 할당하거나 임시 보안 자격 증명을 요청해서 사용자에게 AWS 서비스 및 리소스에 대한 액세스 권한을 제공할 수 있습니다. 이렇게 전체 AWS 리소스에 대한 보안을 제공하는 IAM은 AWS를 사용하는 데 있어 필수적인 기능이기 때문에 추가 비용없이 제공하는 기능입니다.

IAM 구성 요소

AWS IAM 구성 요소에는 사용자, 그룹, 정책, 역할, 계정이 있습니다.

사용자

IAM 사용자를 통해서 인증을 할 수 있습니다.

인증은 이 사람이 실제 사용자가 맞는지 확인하는 과정을 의미합니다. AWS를 어떻게 사용하는지 그 방법에 따라 인증 방식은 크게 IAM user의 ID와 Password를 이용하거나 Access Key ID와 Secret Access Key를 기반으로 하는 두 가지 방식으로 구분할 수 있습니다. 이 인증 방식의 차이는 관리 콘솔을 사용하는 경우와 그 외의 경우로 나누어지며 콘솔로 로그인할 때만 IAM user Password 기반으로 이루어지고, 그 외의 SDK나 CLI와 같이 프로그래밍 방식을 사용하는 경우 Access Key ID와 Secret Access Key를 기반으로 이루어집니다.

 

IAM 사용자는 처음 이메일로 가입한 AWS의 계정과 동등한 수준이 아니라 계정 안에 속합니다. 그리고 각 사용자는 매니지먼트 콘솔에 접근하기 위해 ID, Password를 사용할 수 있습니다. 그 외에 프로그래밍 방식 액세스를 위해 Access Key ID, Secret Access Key를 부여할 수 있습니다.프로그래밍 방식 액세스는 Command Line Interface, SDK를 통해 AWS 서비스를 제어하는 것을 말합니다. 다만 이 상태에서는 자신이 누군지에 대한 인증만 되므로 다른 AWS 서비스 제어에 대한 권한을 가지고 있지 않습니다.

 

그룹

그룹을 동일한 권한을 가진 사용자 모음으로 권한을 제어할 수 있는 정책을 좀 더 효율적으로 관리할 수 있습니다. 사용자에게 정책을 연결해 권한을 할당하는 것이 아니라 그룹에 이를 할당하고 해당 그룹에 사용자를 포함시키면 해당 사용자는 아무런 권한이 없어도 그룹의 권한을 상속받게 됩니다.

 

정책

IAM 사용자로 로그인해도 AWS 서비스에 대한 사용 권한이 없다면 아무것도 할 수 없습니다. 이러한 권한을 주기 위해 JSON 형태로 기술된 정책을 사용자, 그룹, 다음에 얘기할 역할에 연결하게 됩니다. 해당 정책을 통해서 IAM 사용자는 적절한 권한을 가지고 AWS 서비스를 사용할 수 있습니다.

 

IAM의 정책 유형은 다음과 같이 분류할 수 있습니다.

IAM 사용자, 그룹, 역할과 같은 자격증명 기반 Amazon S3와 같이 리소스 자체에서 권한을 부여해 접근을 제어할 수 있는 리소스 기반 정책이 있습니다. 이를 S3 버킷 정책이라 하며 리소스 기반 정책을 통해 S3에 대한 접근을 소유자만 접근하거나 Public으로 변경해 모든 익명의 사용자가 접근하게 하거나 사용자를 지정하여 허용할 수 있습니다. 이렇듯, IAM 정책을 통해 세밀하고 강력한 보안을 구축할 수 있습니다.

 

역할

AWS 자격증명이라는 점에서 사용자와 비슷합니다. 그러나 역할은 IAM 사용자 뿐만 아니라 AWS 리소스에 액세스 할 수 없는 사용자 애플리케이션 또는 AWS 리소스에 액세스 권한을 위임할 수 있습니다. 또한, 역할에는 그와 연관된 암호 또는 액세스 키와 같은 장기 자격증명이 있습니다. 대신에 역할을 맡은 사용자에게는 해당 역할을 사용하는 동안 임시로 보안 자격증명이 제공되고 IAM 사용자의 경우 자신의 권한을 임시로 포기하고 해당 역할의 권한을 사용하게 됩니다. AWS 리소스에 대한 액세스 권한이 없는 사용자, 애플리케이션 또는 서비스에 액세스 권한을 위임하려면 IAM 역할을 사용하시면 됩니다.

 

계정

앞서 IAM 사용자는 매니지먼트 콘솔에 접근하기 위한 ID와 Password, 프로그래밍 방식 접근을 위해 Access Key ID, Secret Access Key를 사용한다고 언급했습니다. 계정 또한 마찬가지로 프로그래밍 방식 접근이 가능합니다. 하지만 그렇게 하지 않는 것이 좋습니다. 계정은 일종의 슈퍼 유저 또는 루트 사용자 권한을 가지므로 해당 계정을 탈취당하면 보안에 심각한 위협이 가해질 수 있습니다. 보안 모범 사례로 계정은 프로그래밍 방식 액섹스하지 않도록 해당 자격증명을 폐기하고 추가적으로 MFA, 멀티팩트인증을 통해 보안을 강화하세요.

댓글