클라우드

AWS IAM이란?

공대생철이 2024. 5. 5. 15:32
728x90

AWS는 저번에 살펴봤다시피 인터넷을 통해서 리소스를 제공하고 있습니다. 그만큼 편리하게 접근할 수 있기에 아무나 접근 권한을 줘버리면 안되겠죠. 그래서 AWS에서는 IAM이라는 것이 있습니다. IAM은 Identity and Access Management의 약자로 별도의 접근 권한을 계정을 운영 및 관리하는 것입니다. 실제로 AWS에 처음 로그인을 할 때 아래와 같은 화면을 맞닥뜨리게 됩니다.

루트는 말 그대로 모든 권한을 가지고 있는 계정이고 회원가입을 하면 자동으로 생성됩니다. 그리고 IAM 사용자로 별도의 권한을 가진 계정으로도 로그인이 가능합니다.

IAM은 위와 같이 관리가 가능합니다. Alice, Bob, Charles가 개발자로서의 역할을 가지고 있는 팀원들일 때 이들은 Developers라는 별도의 그룹으로 관리하여 접근 권한을 부여할 수 있습니다. Charles가 또 Audit Team에도 속해있을 경우 Audit Team에 해당하는 권한도 가질 수 있습니다. 이처럼 조직 내의 별도의 유저들을 그룹으로 관리할 수 있 수 있습니다. 물론 Fred처럼 유저가 반드시 그룹에 속해 있을 필요는 없습니다.

 

각각의 유저 또는 그룹은 정책 JSON 문서로 정의될 수 있습니다. 이 정책 문서는 유저별로 접근 권한을 나타내게 됩니다. 아래의 예시를 한 번 살펴보죠.

Statement 항목을 보면 ec2의 describe가 허용되어있고, elasticcloudbalancing의 describe가 허용되는 등 접근 가능한 기능들이 JSON 문서에 나와있습니다. 이렇게 유저별로 접근 권한을 부여할 수 있는데 이에 대해서는 한 가지 원칙이 있습니다. 사실 되게 당연한 거긴 한데 유저가 딱 필요한 서비스들에만 접근 권한을 부여하는 것입니다. 그 이상 그 이하도 아닌 딱 필요한 서비스들에만 접근 권한을 부여해주는 게 가장 좋습니다.

 

이 정책 JSON 문서에 대해서 좀 더 자세하게 살펴보죠.

 

문서는 일단 3개의 항목으로 구성되어있습니다.

Version : IAM 정책 문서의 문법 체계가 정해진 날짜로 현재는 2012-10-17이고 항상 포함되어있습니다.

Id (선택) : 정책의 구분자

Statement (필수) : 최소 한 개 이상 필수 - 아래 구성요소 참고

 

Statement 구성요소

- Sid (선택) : statement의 구분자

- Effect (Allow 또는 Deny) : statement의 접근을 허용하는지 거부하는지

- Principal : 해당 정책이 적용받는 대상 (계정, 유저, 역할 등등)

- Action : 해당 정책이 접근 허용 또는 거부하는 action들의 리스트

- Resource : action들이 적용되는 리소드들의 리스트

- Condition (선택) : 해당 정책이 발효하는 조건

 

(예시)

 

해당 클라우드의 접근 권한을 어떻게 설정할 수 있는지 정책에는 어떤 것들이 있는지 살펴보았습니다. IAM을 통해서 클라우드 접근에 대한 정책 이외에도 비밀번호에 대한 정책도 설정이 가능합니다. 그럼 어떤 비밀번호 정책들이 있는지 한 번 살펴보죠.

 

비밀번호는 사실 강력하면 강력할수록 무조건 보안상 좋습니다. 그래서 AWS는 비밀번호에 대한 다양한 규칙들을 사전에 만들어놓고 이에 대해 root가 선택적으로 적용이 가능합니다. 비밀번호 최소 길이, 대소문자나 특수문자 등에 대한 최소 포함 조건, 비밀번호 만료 기간, 매번 새롭게 만들어야하는지 등등 다양한 규칙들이 있습니다. 

 

이러한 비밀번호 규칙 외에도 이중으로 보안을 강화하는 방법도 있습니다. MFA (Multi Factor Authentication)이라는 방법도 있습니다. 사실 아무리 비밀번호 규칙이 강하다고 한들 비밀번호는 한 번 유출되면 끝이죠. 이거를 이중으로 하면 당연히 보안이 훨씬 더 강합니다. 

 

MFA는 기존 비밀번호 + 나만의 장치의 구조로 되어있는 인증 방식입니다.

그래서 MFA의 장점은 매우 단순합니다. 비밀번호가 유출되어도 나의 AWS 계정이 도용될 일이 없는 거죠.

 

MFA도 다양한 선택지가 있습니다. 

1. Virtual MFA device

Google Authenticator, Authy 등 스마트폰에서 앱을 활용한 인증이 가능합니다. 아래와 같은 앱들을 지원하고 있으니 편한 걸로 사용하면 됩니다.

2. Universal 2nd Factor (U2F) Factor Key

Yubico사에서 만들 별도의 장치가 있습니다. 이를 사용해서 usb처럼 휴대하면서 보안 장치로 활용이 가능합니다. 본인의 스마트폰이 분실되어도 보안에서는 지장이 없을 정도로 강력한 보안장치이지만 분실의 우려 + 장치 추가 구입 비용이라는 단점이 있습니다.

3. 그 외의 장치들

서드파티 제조사가 만든 장치를 따로 사용해서 MFA를 사용할 수도 있습니다.

 

이렇게 AWS의 인증 수단들에 대해서 살펴봤습니다. 인증을 하고 나면 이제 직접 AWS를 조작할 수 있어야겠죠. 유저는 AWS 조작에 어떻게 접근할 수 있을까요? 총 3가지 방법이 있습니다.

 

(1) AWS Management Console - 비밀번호 + MFA 로 인증

(2) AWS Command Line Tools (CLI) - Access Key로 인증

(3) AWS Software Developer Kit (SDK) - 코드로 Access Key 인증

 

AWS Managament Console은 AWS 웹사이트에서 관리하는 것을 의미합니다. Access Key는 Management Console에서 발급받을 수 있으면 이에 대한 관리는 사용자가 직접 수행해야합니다. 위에서 직접적인 인증수단으로 활용되기 때문에 비밀번호처럼 절대 유출되면 안됩니다.

 

AWS CLI는 Command Line 명령어로 AWS를 조작할 수 있도록 하는 것입니다. 퍼블릭 API로 AWS에 바로 접근해서 조작이 가능하고 Management Console에 들어가서 웹사이트를 조작하지 않고 명령어로 AWS를 조작할 수 있습니다.

AWS SDK는 AWS를 사용하는 애플리케이션 안에 사용하는 언어에 맞게 SDK를 설치한 후 프로그래밍 언어를 통해 AWS를 조작하는 것입니다. Javascript, Python, Java, Go 등등 웬만한 모든 언어에 적용이 가능하고 안드로이드, IOS와 같은 모바일 SDK 뿐만 아니라 임베디드, IoT에 대해서도 지원하고 있습니다.

 

IAM 보안을 관리하기 위한 도구로는 2가지가 있습니다.

- IAM Credentials Report : 계정의 모든 유저들에 대한 자격 증명 리스트

- IAM Access Advisor : 유저에게 어떤 서비스에 대한 접근 권한을 가지고 있고 언제 서비스에 마지막으로 접근했는지 표시해주는 리스트

 

IAM 역시 AWS의 공동 책임 모델이 적용됩니다. AWS의 네트워크 보안 등 인프라에 관련된 부분은 AWS가 책임을 지지만, MFA 설정, 계정/유저 관리, 적절한 권한 부여 등에 대한 부분은 유저가 책임을 져야 합니다.


IAM에 대한 내용이 많았는데 관련해서 간단하게 정리한 후 글을 마무리해보겠습니다.

 

Users : 실질적인 유저로서 AWS Console에 비밀번호를 가진 사람

Group : 유저들의 집합

Policies : 유저나 그룹의 접근 권한을 나타낸 JSON 문서

Security : 비밀번호 정책 + MFA

AWS CLI : Command Line을 통해서 AWS를 조작

AWS SDK : 프로그래밍 언어를 통해서 AWS를 조작

Access Keys : AWS를 CLI나 SDK로 조작하기 위한 키이고 console에서 발급 가능

Audit : IAM Credentials Report + IAM Access Advisor 

 

여기까지 AWS IAM에 대한 내용이었습니다. 감사합니다.

 

728x90

'클라우드' 카테고리의 다른 글

AWS 클라우드란?  (1) 2024.05.02