반응형

AWS Root 계정

처음 AWS 계정을 생성하면 루트 사용자로 시작합니다. 이 사용자는 계정의 모든 서비스와 리소스에 대한 전체 액세스 권한을 가집니다. 계정을 생성할 때 제공한 이메일 주소와 암호로 로그인하여 루트 사용자 ID에 액세스합니다. 하지만 루트 사용자로 서비스와 리소스를 사용하는 것은 권장되지 않습니다. 따라서 사용자를 추가로 생성한 후 관리합니다.

 

사용자를 추가한 후 최소 권한의 원칙에 따라 해당 사용자에게 권한을 배정합니다. 최소 권한의 원칙이란 해당 사용자가 정말 필요한 권한까지만 부여하는 것을 뜻합니다. 이렇게 사용자를 생성한 후에는 루트 사용자가 아닌 관리자로 계정을 관리해야합니다.

 

조금 더 심층적인 보안을 위해서 MFA(Multi-Factor Authetication)을 진행할 수 있습니다. 이 후 AWS 계정에 이를 추가 보안 계층을 적용할 수 있습니다.

 

루트 계정 상세 보기 / 최소 권한 및 IAM 모범 사례

 

IAM(Identity and Access Management)

IAM은 AWS 리소스에 대한 액세스를 안전하게 제어하는 데 도움을 주는 웹 서비스입니다. IAM을 사용해 리소스를 사용할 수 있도록 인증(로그인) 및 권한 부여된 대상을 제어합니다.

 

IAM을 리소스 실행, 구성, 관리, 종료를 위한 액세스 권한을 중앙에서 관리하기 위한 도구로 생각하면 편할 것입니다. IAM을 통해 액세스 권한을 세부적으로 제어할 수 있습니다. 이 제어는 리소스를 기반으로 하며 누가 어떤 API 호출에 대한 권한이 있는지 정의하는 데 도움이 됩니다.

 

상세 내용

 

보안 주체

보안 주체는 AWS 리소스에 대한 작업 도는 운영을 요청할 수 있는 엔터티(Entity)입니다. AWS에서 가장 많이 사용되는 보안 주체는 IAM 사용자와 IAM 역할입니다.

 

이 외에는 EC2(Elastic Compute Cloud)와 같은 AWS 서비스, SAML 2.0(Security Assertio Markup Language 2.0) 제공 업체 혹은 ID 제공 업체(IdP)일 수 있습니다. IdP를 사용할 경우 IAM 외부에서 자격 증명을 관리하게 됩니다. 예를 들어 Amazo, Facebook, Google 등을 통해 로그인할 때는 이러한 외부 자격 증명에 계정의 AWS 리소스를 사용할 권한을 제공할 수 있습니다.

 

페더레이션 사용자는 IAM을 통해 직접 관리가 되지 않는 외부 자격 증명입니다.

 

페더레이션 사용자의 자세한 내용

 

IAM 사용자

IAM 사용자는 AWS 계정 내에 사용자를 뜻합니다. 기본적으로 새 IAM 사용자에게는 권한이 주어지지 않습니다. 개별 IAM 사용자를 생성하는 경우 각 사용자에게 권한을 개별적으로 배정할 수 있다는 이점이 있습니다. 예를 들면 관리자는 여러 서비스를 액세스할 수 있는 권한을 가지고 있고, 감시자는 읽기 전용으로 권한을 줘 관찰만 할 수 있도록 합니다. 개발자는 개발만 할 수 있도록 EC2 인스턴스에 대한 권한만 줍니다.

 

이러한 방식으로 해당 직무에서 필요한 만큼만 권한을 주는 최소 권한의 원칙을 준수해야합니다.

 

자세한 내용

 

AWS API 호출

AWS 서비스에 접속하는 방법은 크게 2가지가 있습니다.

  1. AWS 관리 콘솔 액세스 - AWS 웹 콘솔에서 사용자 계정과 암호를 입력해 접속합니다.
  2. 프로그래밍 방식 액세스 - IAM 사용자가 API 호출을 수행하거나 AWS CLI(Command Line Interface) 또는 SDK를 사용해야할 수도 있습니다. 이 때 해당 사용자용 액세스 키를 생성해야 합니다.

이 때에도 최소 권한 법칙이 적용됩니다. 만약 AWS 콘솔로만 접속하고 작업을 한다면 액세스 키를 생성하면 안 됩니다.

 

프로그래밍 방식 액세스

프로그래밍 방식 액세스 권한을 부여하는 경우 AWS CLI 또는 SDK에서 API 호출을 수행하는 데 필요한 자격 증명을 IAM 사용자에게 제공할 수 있습니다. AWS에서는 Java, Python, .NET 등의 프로그래밍 언어용 SDK를 제공합니다.

 

IAM 사용자에게 프로그래밍 방식 액세스 권한을 부여하면 액세스 키 ID 및 비밀 액세스 키로 구성된 고유한 키 페어가 생성됩니다. 키 페어를 사용하여 AWS CLI를 구성하거나 AWS SDK를 통해 API를 호출할 수 있습니다.

 

클라이언트에서 AWS CLI를 설정하기 위해 aws configure 명령을 사용합니다. 슬라이드의 예제 코드에는 IAM 사용자를 구성하는 데 필요한 네 가지 요소를 입력해야합니다.

  • AWS 액세스 키 ID
  • AWS 비밀 액세스 키
  • 기본 리전 이름
  • 기본 출력 형식(json,yaml, yaml-stream, text, table)

AWS CLI 자세한 내용

 

IAM 정책을 사용해 권한 설정하기

IAM 사용자가 리소스를 생성하거나 수정하고 태스크를 수행할 수 있또록 하려면 다음 태스크를 수행합니다.

  1. IAM 사용자가 필요한 특정 리소스와 API 작업에 액세스할 수 있는 권한을 부여하는 IAM 정책을 생성하거나 기존에 생성되어 있는 정책을 생성합니다.
  2. 해당 권한이 필요한 IAM 사용자나 그룹에 정책을 연결합니다.

예를 들어 S3 관리자에게는 S3에 대한 Full Access 권한을 주되 다른 서비스의 권한을 주지는 않습니다. 계정 내의 리소스를 확인해야 하는 감사자에게는 Read Only Access 정책을 연결합니다. 감사자가 다른 것을 수정하거나 삭제할 수 있어서는 안됩니다.

 

이렇게 최소 권한 원칙은 보안 부분에 있어 매우 강조되는 부분입니다. 권한을 주려는 대상의 직무를 확인하고 적절한 정책을 부여해야 합니다.

반응형