AWS/Solutions Architect

AWS IAM

vampirehollie 2024. 11. 7. 19:23

IAM (Identity and Access Management) : AWS 리소스를 사용하기 위한 모든 요청은 IAM을 통해 이루어진다

 

What is IAM?

Identity and Access Management, AWS 전체의 권한 통제 시스템 (Global service)

 

"Root account created by default, shouldn't be used or shared"

 

Root account는 거의 모든 권한을 가지고 있기 때문에 AWS 작업을 할 때에 사용하는 것은 권장되지 않는다.

AWS account setup을 할 때를 제외하고는 root account를 사용하지 않고, IAM user를 만들고 이를 통해 로그인하고 작업하는 것이 권장된다.

 

Root account를 사용하는 경우

  • 처음 계정을 생성할 때
  • IAM 유저를 생성할 때 

 

IAM 사용 방법

사용자가 IAM을 사용하는 4가지 방법

 

Low에서 High level로 갈수록 인프라 관리가 코드화되고 대규모 서비스에 적용하기 쉬워짐

 

1. 수작업 - Console창을 이용해 수작업으로 관리

AWS Management Console (protected by password + MFA)

AWS Console을 이용하는 방법, 기본 사용자들이 가장 많이 사용하는 쉬운 방식

편리하지만 반복 작업을 하기에 불편함

 

2. Script 기반 작업

AWS Command Line Interface (CLI) (protected by access keys)

Script를 통해 리소스를 관리, 반복작업은 조금 더 수월하지만 큰 규모로 리소스를 다룰 때 적합하지 않을 수 있음

 

3. 프로비저닝 엔진 사용

Infra as a Code (IaC)라고도 함, 코드를 통해서 인프라를 관리

오픈소스를 이용해서 환경을 자동으로 배포하거나 복제가 가능

 

4. SDK, CDK 사용

AWS Software Development Kit (SDK) (for code: protected by access keys)

Language-specific APIs (set of libraries), enables you to access and manage AWS services programmatically

Embedded within your application

AWS Cloud Development Kit (CDK)

원하는 언어를 통해서 코드로 인프라를 관리 (JS, C#, Python, Java ...)

 

About IAM

  • IAM User: 콘솔 로그인용
    로그인 시 root user는 너무 많은 권한을 가지고 있어 보안에 취약. IAM User를 생성해서 콘솔에 로그인할 때 사용
    IAM: Users & Groups
    - Root account created by default, shouldn't be used or shared
    - Users are people within your organization, and can be grouped
    - Groups only contains users, not other groups
    - Users don't have to belong to a group, and user can belong to multiple groups

    Users or Groups can be assigned JSON documents called policies
    - IAM Policies는 user의 permission들을 정의한다 (cf. In AWS, you apply the least privilege principle: don't give more permissions than a user needs)

IAM Policy 구조

- Policy: JSON 포맷으로 Allow/Deny를 명시해주는 정책

- Effect(효과): 명시된 정책에 대한 허용/차단(Allow/Deny)

- Principal(원칙): 접근을 허용/차단하고자 하는 대상

- Action(조치): 허용/차단하고자 하는 접근 타입

- Resource(리소스): 요청의 목적지가 되는 서비스 (조치가 적용되는 서비스(리소스))

- Condition(조건): 명시된 조건, 유효하다고 판단될 수 있는 조건

IAM Policies inheritance 예시

 

  • IAM Role: API 호출 시 사용하는 권한(역할)
    IAM User가 AWS 서비스를 제어할 때 사용자 권한을 임시로 부여 받음. 사용자 권한을 Role로 부여해둠으로써 매번 권한 부여를 할 필요가 없음.
    외부 사용자와 AWS 서비스를 연결해주는 등, 매핑이 가능하고, 다른 AWS account에 접근하는 것도 가능해 유용함
    IAM Roles for Services
    - Some AWS service will need to perform actions on your behalf
    - To do so, we will assign permissions to AWS services with IAM Roles
    - Common roles: EC2 Instance Roles, Lambda Function Roles, Roles for CloudFormation

 

 

IAM Best Practices

✅ Root account를 제대로 보호하자. 모든 작업은 IAM으로 진행

"Don't use the root account except for AWS account setup"Root account나 권한이 있는 사용자에 대해 MFA를 활성화하는 것을 권장MFA (Multi Factor Authentication) = password you know + security device you own"Main benefit of MFA: if a password is stolen or hacked, the account is not compromised"

 

✅ 반드시 실제 사용자와 IAM User를 1:1 매핑해주어야 함 (개별 IAM User 만들기)

"One Physical user = One AWS user"

다수의 사용자가 하나의 IAM을 만들어 사용하지 말 것

그룹을 사용해 IAM User에게 권한을 할당할 수 있음

"Assign users to groups and assign permissions to groups"

 

✅ 정책은 꼭 필요한 권한만 허용해주는 최소 권한 부여의 원칙(the least privilege principle)을 지켜야함

이때 IAM Access Advisor를 활용 가능

"IAM Access Advisor (user-level) - IAM Security Tool"

  • Access advisor show the service permissions granted to a user and when those services were last accessed
  • You can use this information to revise your policies

주기적으로 감시하거나 자동화하는 노력이 필요

 

✅ 서비스 간 권한 제어에 Role을 적극 활용하자

"Create and use Roles for giving permissions to AWS services"

Role을 사용하여 권한을 위임할 수도 있어서 편리함ex) B account에 A account가 정책을 assume할 수 있게 신뢰 정책을 설정해두면 서비스 간에 훨씬 안전하게 접근을 구성할 수 있게 됨

 

✅ IAM 자격증명을 정기적으로 교체하자

IAM Credentials Report를 활용해서 교체 주기가 지난 IAM을 확인하거나 다양한 통계를 확인 가능

"Audit permissions of your account using IAM Credentials Report & IAM Access Advisor (IAM Security Tools)"

 

✅ Use Access Keys for Programmatic Access (CLI / SDK)

"Never share IAM users & Access Keys"

 

✅ 보안 강화를 위해 정책 조건(Policy)를 잘 정해주자

필요한 상황에 맞추어 정책을 설정해주면 큰 도움이 됨

 

✅ IAM 활동을 모니터링하고 감시하자

이때 AWS CloudTrail, AWS IAM Access Analyzer, Amazon GuardDuty, AWS Security Hub 등의 서비스를 사용 가능

 

 

 

 

 

AWS에서 IAM이 하는 역할, 사용방법, Policy의 구조와 종류, 모범사례 등을 정리해보았다.
IAM은 AWS를 제대로 사용하기 위해서 꼭 알아야하는 서비스 중 하나라고 생각한다. 잘 공부해서 알아두면 안전하게 클라우드 서비스를 이용할 수 있을 것이다.

'AWS > Solutions Architect' 카테고리의 다른 글

AWS ELB  (0) 2024.12.21