ASC

1. 클라우드 컴퓨팅 개요 & IAM

호프 2023. 9. 29. 14:15

클라우드 컴퓨팅

클라우드 컴퓨팅이란?

클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것을 말합니다. (AWS)

1. 민첩성

  • 필요에 따라 리소스를 빠르게 구동하고 어플리케이션을 배포할 수 있다.

2. 탄력성

  • 비즈니스 요구가 변화함에 따라 이러한 리소스를 확장하거나 축소하여 용량을 즉시 늘리거나 줄일 수 있다.

3. 비용 절감

  • 클라우드를 통해 고정 비용(데이터 센터, 물리적 서버 등)을 가변 비용으로 전환하고, 사용한 만큼만 IT 비용을 지불할 수 있다.
  • 직접 운영할 때보다 가변 비용이 훨씬 저렴하다.

4. 몇 분 만에 전 세계에 배포

  • 클라우드를 사용하면 몇 분 만에 새로운 지리적 리전으로 확장하고 전 세계에 배포할 수 있다.

IAM (Identity & Access Manager)

  • AWS 리소스를 안전하게 제어할 수 있도록 AWS 계정과 리소스의 권한을 관리하는 AWS 서비스

AWS 사용자 구분

1. 루트 계정 (Root Account)

  • AWS에 가입할 때 자동으로 생성
  • 계정의 모든 AWS 서비스 및 리소스에 대한 전체 액세스 권한 -> 보안 중요, MFA(Multi㎼Factor Authentication) 사용 추천
  • AWS에서는 일상적인 작업 혹은 관리자 권한이 필요한 작업에도 루트 계정을 사용하지 않을 것을 권장하고 있다.

2. 사용자 (Users)

  • The IAM user represents the human user or workload who uses the IAM user to interact with AWS.
  • 유저는 그룹에 속할 수 있음.
  • 관리자 권한을 가진 유저 !== 루트 계정

3. 그룹 (Groups)

  • AWS 유저의 집합으로, 사용자 그룹을 활용하면 다수의 사용자들에 대한 권한을 지정함으로써 해당 사용자들에 대한 권한을 더 쉽게 관리할 수 있다.
  • 하나의 유저는 여러 그룹에 속할 수 있고, 그룹에 속한 유저는 해당 그룹의 권한을 가진다.
  • 그룹은 IAM 유저만 포함할 수 있고 그룹이 다른 그룹을 포함할 수 없다.

IAM Role (역할)

  • AWS 내의 리소스에 액세스할 수 있는 권한을 할당할 수 있는 임시 자격 증명.
  • 역할(Role)과 사용자(Users) 모두 AWS에서 자격 증명으로 할 수 있는 것과 할 수 없는 것을 결정하는 권한 정책을 포함하는 AWS 자격 증명이지만, 역할은 하나의 특정 개인/응용 프로그램에 연결되어 있지 않고 임시 작업을 위해 모든 사용자에게 역할을 할당할 수 있으며 해당 작업이 완료되면 해당 역할에 대한 액세스 권한을 취소할 수 있다.

IAM Policy (정책)

  • 정책은 자격 증명이나 리소스와 연결될 때 해당 권한을 정의하는 AWS의 객체이다. == 유저, 그룹, 역할에 권한을 줄 때 사용한다.
  • JSON 문서로 정의

{
    "Version": "2012-10-17", # 정책 언어의 버전 LTS: 2012-10-17 버전 사용 권장 
    "Id": "AWS-Practice-Permission", # 정책의 ID (선택) 
    "Statement": [ 
        {
            "Sid": "FirstStatement", # Statement의 ID (선택) 
            "Effect": "Allow", # 정책에서 액세스를 허용하는지 또는 거부하는지 여부 
            "Action": ["iam:ChangePassword"], # 정책이 허용하거나 거부하는 작업 목록 
            "Resource": "*" # 작업이 적용되는 리소스 목록, 리소스 기반 정책을 생성하는 경우 선택 사항 -> 이 요소를 포함하지 않으면 작업이 적용되는 리소스는 정책이 연결된 리소스가 된다. (일부 상황에서만 필요) 
        }, 
        { 
            "Sid": "SecondStatement", 
            "Effect": "Allow", 
            "Principle": { # 리소스 기반 정책을 생성하는 경우 액세스를 허용하거나 거부할 계정, 사용자, 역할 또는 페더레이션 사용자를 표시해야 한다. (일부 상황에서만 필요) 
                "AWS": ["arn:aws:iam:12345678912:root"] 
            }, 
            "Action": "s3:GetObject", 
            "Resource": "arn:aws:s3:::mybucket/*" 
        }, 
        { 
            "Sid": "ThirdStatement", 
            "Effect": "Allow", 
            "Action": [ "s3:List*", "s3:Get*" ], 
            "Resource": [ "arn:aws:s3:::confidential-data", "arn:aws:s3:::confidential-data/*" ], 
            "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} # 정책에서 권한을 부여하는 상황을 지정 (선택) 
        } 
    ] 
}

Reference

https://aws.amazon.com/ko/what-is-cloud-computing/
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_root-user.html
https://www.appsecengineer.com/blog/aws-security-basics-iam-users-vs-roles-vs-groups
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/access_policies.html