AWS

[AWS] aws 강의 섹션 4-2 (AWS 접근 방식, AWS CLI 실습, Cloud Shell, IAM 자격증명 보고서, IAM 접근 관리자, 공동 책임 모델)

대기업 가고 싶은 공돌이 2024. 9. 15. 23:52

AWS에 접근하는 방법

aws에 접근하는 방법은 총 세 가지가 있다.

 

  1. AWS Management console:
    지금까지 우리가 사용해왔던 AWS 콘솔을 이용해 로그인 하는 방법(Password + MFA)
  2. AWS Command Line Interface(CLI)
    셸을 통해 접근하는 방법 (access keys)
    발급 받은 access keys를 통해 액세스 할 수 있다.
  3. AWS Software Developer Kit(SDK)
    애플리케이션 내부에서 api 호출을 통해 aws에 접근하는 방식이다.
    예시로 S3에 접근해 이미지를 올리거나 삭제하는 코드를 생각해보면 된다.
    마찬가지로 access keys를 통해 보호받는다.

액세스 키는 관리 콘솔에서 생성할 수 있므며, 사용자들이 자신들의 액세스 키를 관리한다.

 

액세스 키는 비밀번호와 동일하므로 노출되지 않도록 보안에 유의하자.

 

액세스 키는 Access Key Id와 Secret Access Key로  구성되는데

Access Key Id = 아이디

Secret Access Key = 비밀번호 라고 생각하면 편하다.

 

위의 Id 와 시크릿 키를 터미널이나, 애플리케이션에 변수로 설정해두면 aws에 접근할 수 있는 것이다.

 

AWS Cli 란?

AWS Cli는 명령줄 셸에서 명령어를 사용하여 aws 서비스와 상호작용할 수 있도록 도와주는 도구다.

 

  • CLI를 사용하면 AWS 서비스의 공용 API로 직접 액세스가 가능하다.
  • CLI를 통해 리소스를 관리하는 스크립트를 개발해 일부 작업을 자동화 할 수 있다.
  • aws cli는 오픈 소스로 github에서 소스 코드를 받아 사용해야 한다.

AWS SDK 란?

소프트웨어 개발 키드다. 특정 언어로 된 라이브러리의 집합으로,

각 언어에 따른 SDK가 각각 존재한다. 

  • SDK를 사용해서 AWS 서비스나 API에 접근이 가능하다.
  • SDK는 터미널 내에서 사용하는 것이 아니라 프로그래밍 내부에 코드를 통해 구현해야 한다.
  • 애플리케이션 내에 자체적으로 SDK가 존재하는 것이다.
  • 다양한 언어를 지원한다.

AWS CLI 실습

https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

 

Install or update to the latest version of the AWS CLI - AWS Command Line Interface

When updating from a previous version, the unzip command prompts to overwrite existing files. To skip these prompts, such as with script automation, use the -u update flag for unzip. This flag automatically updates existing files and creates new ones as ne

docs.aws.amazon.com

우선 다음 페이지로 들어가 AWS CLI를 다운받아 준다.

 

필자는 windows를 사용하기 때문에 윈도우로 다운 받아주었다.

 

이후 cmd 창을 열어 설치가 잘 됐는지 확인해준다.

 

버전이 잘 표시된다.

 

액세스 키 만들기

이제 cli를 통해 aws에 접근하기 위해 액세스 키를 발급받아야 한다.

 

IAM -> User -> 유저 클릭 -> 보안 자격 증명

으로 이동 후 액세스 키를 만들어 주자

우리는 AWS CLI를 사용할 것이니 CLI를 선택해준다.

이제 발급받은 액세스 키를 활용해 보자

 

우선 cmd 창에 aws configure을 입력해 기본 설정을 입력해주자

발급받은 ID와 시크릿 키

그리고 가장 가까운 주 region을 입력해준다. 기본 포맷은 입력하지 않았다.

 

이제 기본 설정을 마쳤으니 aws에 접근할 수 있다.

 

iam 사용자 목록을 전부 가져와 보자

aws 관리 콘솔에서 보는 것과 거의 비슷한 정보를 얻을 수 있다.

 

현재 발급받은 액세스 키는 IAM 사용자 yoajung에서 발급받은 액세스 키다.

 

이 말은 yoajung에게 허용된 권한만 해당 CLI에서 사용할 수 있다는 것이다.

 

CLI의 대안 CloudShell

aws 관리 콘솔에서 우측 상단의 해당 아이콘을 클릭하면 CloudShell로 이동할 수 있다.

 

  • CloudShell은 AWS 클라우드에서 무료로 사용 가능한 터미널 같은 개념이다.

Cloud Shell의 장점

  1. CloudShell의 장점은 시크릿 키 없이도 API나 서비스에 접근이 가능하다는 것이다.
    관리 콘솔에 로그인 한 이후 사용하는 것이니, 당연한 얘기이긴 하다.
  2. 또한 CloudShell엔 저장소도 존재한다.
    내부에 파일을 만들고 저장해 둘 수도 있다.
    당연히 업로드와 다운로드도 가능하다.
  3. 환경설정이 가능하다. (글씨 크기나, 테마, 안전하게 붙여넣기 기능 등등을 설정할 수 있다.)

주의할 점

Cloud Shell은 특정 리전에서만 가능하니, 사용이 가능한 리전을 선택해야 사용할 수 있다.

 

IAM Roles for Services

몇몇 AWS 서비스는 우리를 대신해서, 자동으로 서비스가 돌아간다.

 

그리고 해당 작업을 하려면 사용자와 마찬가지로 해당 서비스에도 권한을 부여해줘야 한다.

 

즉 AWS 서비스에 권한을 부여해야 하고, 이를 위해 IAM Role 이라는 것을 생성해야 한다.

 

IAM Role은 사용자가 아닌 AWS 서비스가 사용하는 것이라는 특징을 기억하자

 

예) EC2를 생각해보자, EC2가 만들어지면 AWS에서 자동으로 작업을 수행한다.

이를 위해 IAM Role이 부여되며, IAM Role과 EC2는 하나의 인스턴스를 구성한다.

 

EC2는 AWS의 정보에 접근할 때도 IAM Role을 사용해야 한다.

 

IAM Role의 예시

  1. EC2 Instance Roles
  2. Lambda Function Roles
  3. Roles for CloudFormation 등이 있다 ,,

IAM Role for Services 실습

IAM -> Roles에 들어가 역할 생성을 클릭하자.

 

여러 가지 엔티티 타입이 있지만 우리는 Service를 위한 역할을 생성할 것이다.

 

밑에선 해당 규칙을 적용할 서비스를 선택할 수 있다. 실습은 EC2로 진행하겠다.

EC2에 대해 IAMReadOnly 권한을 부여하고 역할을 생성해보자.

 

역할 목록에 지금 만든 역할이 잘 생성된 것을 확인할 수 있다.

이 역할은 나중에 EC2를 실습할 때 사용하도록 하겠다.

 

IAM 보안 도구

  1. IAM Credentials Report (IAM 자격증명 보고서)
    • Account-level (계정 전체에 적용된다는 의미)
    • IAM 사용자 및 루트 계정의 인증 정보 상태를 한 눈에 확인할 수 있는 보고서다.
    • 이 보고서를 통해 계정의 보안 상태를 점검하고 모범 사례를 따르고 있는지 확인할 수 있다.
  2. IAM Access Advisor 
    • User-level(특정 사용자나 특정 리소스에 대해 적용된다는 의미)
    • 특정 IAM User가 어떤 서비스에 접근했는지 그리고 그 서비스를 얼마나 자주 이용했는지
      확인 할 수 있는 도구다.
    • 이를 통해 사용자에게 불필요한 권한을 제거하여
    • 최소 권한 원칙을 준수하는데 도움을 줄 수 있다.

IAM Credentials Report 생성 방법

IAM -> 자격 증명 보고서로 이동해서 

인증서 다운로드만 클릭하면 된다.

 

비밀번호가  생성된 시기, 마지막으로 사용된 시기, MFA 활성화 등등을 확인할 수 있다.

 

이를 통해 보안 측면에서 주의를 기울여야 할 사용자를 찾는데 큰 도움이 될 수 있다.

 

IAM Access Advisor 실습

IAM -> 사용자 -> 원하는 사용자 클릭 -> Access Advisor 클릭

하면 다음과 같은 정보를 확인할 수 있다.

 

유저에 대한 세부적인 액세스 권한을 수정할 때 유용하다.

 

IAM 가이드라인과 모범 사례

  1. AWS 계정을 설정할 때를 제외하고는 루트 계정을 사용하지 마라.
    루트 계정과 개인 계정이라는 두 개의 계정을 만들어야 한다.
  2. 사람 한 명당 AWS 계정 한 개를 만들어라
    예) 친구가 AWS를 사용하고 싶어하는 경우 Credential을 알려주지 말고 유저를 하나 만들어줘라
  3. 그룹을 만들고 사용자를 그룹에 할당하여, 보안이 그룹 단위에서 관리되도록 해라
  4. 다중 인증 또는 MFA를 사용하여 보안을 강력히 유지해라
  5. IAM 자격증명 보고서, IAM 액세스 관리자 기능을 통해 보안을 유지해라
  6. IAM 사용자와 액세스 키를 절대로 공유하지 마라. 

Shared Responsibility Model for IAM (공동 책임 모델)

공동 책임 모델, 해석이 좀 이상하다.

의역하자면 책임을 나누자는 것이다.

 

 AWS에서 제공하는 모든 서비스에 적용되는 기본적인 보안 모델로 AWS와 고객 간의 보안 책임을 분담하는 방식을 의미한다.

 

AWS의 책임

AWS는 다음과 같은 책임을 갖는다.

  1. 인프라의 안정성
  2. API의 안정성
  3. AWS내에서의 보안 등등..

고객의 책임

고객은 다음과 같은 책임을 갖는다.

  1. 직접 생성하는 사용자, 그룹, 역할 등에 대한 모니터링과 관리
  2. 모든 계정에 대한 MFA 활성화 
  3. 주기적인 키 교체
  4. 적절한 권한 부여
  5. 유저의 접근 패턴 분석 등등,,,

AWS 인프라를 책임지는 건 AWS의 책임이며,

이 인프라를 사용하고 이용하는 것은 고객의 책임이란 것을 명시한 것이다.

 

IAM 정리

  1. IAM 사용자는 실제로 해당 서비스를 사용할 유저 한 명과 매핑이 되어야 한다.
  2. 이 사용자들은 그룹으로 묶을 수 있고, 그룹은 사용자로만 구성할 수 있다.
  3. 정책은 JSON 문서로 정의할 수 있는데 이를 통해 사용자나 그룹의 권한을 정의한다.
  4. 역할을 생성할 수 있는데 역할은 EC2 인스턴스 즉, AWS 서비스를 위해 사용된다. 
  5. 보안을 위해 MFA를 사용하여 password와 함께 이중으로 인증을 하자 
    사용자를 위한 비밀번호 정책도 설정이 가능하다.
  6. CLI를 이용하면 명령어로 서비스를 관리할 수 있고, 
    SDK로도 서비스를 관리할 수 있다.
  7. 위의 두 가지를 이용하기 위해 액세스 키를 발급해야한다.
  8. 사용 감사를 위해 IAM 자격증명서나, IAM 접근 관리자를 사용한다.

참고: AWS Certified Developer Associate 강의