IAM

What is IAM

IAM(Identity and Address Management)은 AWS Resource에 대한 접근을 제한하기 위한 글로벌 서비스이다. 유저, 그룹, 혹은 각종 서비스에 대한 권한을 설정하여 AWS Cloud 서비스의 접근을 제한한다.

User & Groups

기본적으로 AWS 계정을 생성하면 Root 계정이 발급된다. 하지만 해당 Root 계정은 모든 서비스에 제한 없이 접근할 수 있다는 점에서 보안에 취약한 부분이 있다. 그렇기 때문에 User, Group 형태로 세분화된 주체를 활용하면 제한적으로 서비스를 이용할 수 있도록 할 수 있다.

아래와 같이,여러 user을 만들 수 있고, 각 user들은 group에 속한다.(group이 할당 되지 않은 user도 존재한다.)

groups

이렇게 group을 할당하게 되면, group 단위로 permission을 지정하여, 유저를 좀 더 효율적으로 관리하는 것이 가능하다.

Policy

IAM을 통해 User, Group에 대한 Policy 형태로 권한을 지정할 수 있는데, Policy는 아래의 json 형태로 표현된다.

Policy

Parameters Description
Version policy에 대한 버전
Id Policy의 id
Statement 권한에 대한 설명 부분

Statement

Parameters Description
Sid Statement의 id값
Effect 해당 statement의deny/allow 여부
Principal 해당 policy가 적용되는 account/user/role
Action policy의 영향을 받는 action
Resource action이 수행되는 resource 종류
Condition policy 적용 조건

아래는 IAMReadOnlyAccess라는 policy를 JSON 형태로 표현한 것이다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:GenerateCredentialReport",
                "iam:GenerateServiceLastAccessedDetails",
                "iam:Get*",
                "iam:List*",
                "iam:SimulateCustomPolicy",
                "iam:SimulatePrincipalPolicy"
            ],
            "Resource": "*"
        }
    ]
}

Password Policy & MFA

계정에 대한 보안을 강화하기 위해 패스워드 정책과 MFA를 할당할 수 있다.

Password Policy

Password Policy의 경우 아래와 같이 여러 항목으로 정의되어 있으며, user에 대한 password를 설정할 때 해당 policy에 의거해서 password을 설정하도록 한다.

password_policy

MFA

Multi Factor Authentication의 약자로, 비밀번호 인증외에 추가적인 인증수단을 통해 로그인이 가능하도록 하는 것이다. 흔히, OTP와 같이 2중 보안을 적용하는 것을 의미한다. 비밀번호를 분실하더라도 계정이 안전하게 유지된다.

MFA Device의 종류는 아래와 같다.

  1. Virtual MFA Device: 스마트폰, pc, 등을 통해 인증키를 관리하는 것으로, 하나의 장치로 여러 개의 token을 관리할 수 있다.
  2. Universal 2nd Factor Security Key: root, user 등 여러 계정에 대해 동일한 security key로 관리할 수 있다.
  3. 하드웨어 TOTP 토큰: 하드웨어 시간 기반 일회용 암호(TOTP) 토큰에 표시된 코드를 사용하여 인증합니다.

Root 계정은 MFA를 설정하여 보안을 강화하는 것이 중요하다.

AWS Access

AWS를 접근하는 방식에는 크게 4가지가 있다.

  1. AWS Management Console: 웹 브라우저를 통해 제공되는 관리 콘솔로 GUI 형태로 AWS를 제어할 수 있다.
  2. AWS CLI: terminal를 통해 AWS 제어
  3. AWS SDK: AWS API를 통해 AWS를 제어할 수 있도록 Library로 구성한 것으로, Application 내부에서 처리하는 것이 가능하다.
  4. AWS Cloud Console: 웹 브라우저에 제공하는 웹 터미널로, AWS CLI와 유사하지만 업로드, 다운로드 등과 같이 추가 기능이 포함되어 있다.

AWS CLI와 AWS SDK를 통해 AWS를 접근하기 위해서는 Access Key를 발급 받아야한다. 각 User 별로 발급되는 것으로 Access Key, Secret Access Key로 구성되는데 이를 통해 AWS에 접근할 수 있다. Access Key는 절대로 공유해서는 안된다.

IAM Role

AWS Service에도 권한을 매핑할 수 있다. AWS Service 내부에서도 AWS을 제어해야되는 경우가 발생할 수 있기 때문에, 이에 대한 제한을 설정해야하는데, IAM Role이 역할을 수행한다.

IAM Security Tools

IAM Credential Report

해당 계정 내의 모든 유저에 대한 상태 정보를 제공하는 것으로, 마지막 패스워드 변경 일자, access key 마지막 사용 일자, 등 각종 보안 관련 상세사항을 확인할 수 있다.

credential_report

IAM Access Advisor

각각의 계정에 대한 policy 할당 정보를 확인할 수 있으며, 언제 마지막으로 policy가 활용됬는지 확인 가능하다.

access_advisor

위의 보고서들을 통해 각 유저의 보안 정책을 점검할 수 있고, 사용되지 않은 policy를 제거하여 최소한의 권한만 부여될 수 있도록 할 수 있다.

Shared Responsibilty

AWS에 대해서는 각종 인프라의 지원이 정상적으로 이루어지는지, 혹은 각종 취약점 분석을 담당하게 된다.

각 User는 IAM 관리, MFA, Access Key, Permission 관리 등에 대해 책임이 있다.

References

영상

udemy

문서

공식문서

태그: ,

카테고리:

업데이트:

댓글남기기