DEV Community

Sangwoo Lee
Sangwoo Lee

Posted on

[AWS] 1. IAM (Identity and Access Management) & AWS CLI (Command Line Interface)

AWS Global Infrastructure

1. AWS Regions (지역)

2. AWS Availability Zones (가용 영역)

3. AWS Data Centers (데이터 센터)

4. AWS Edge Locations / Points of Presence (엣지 로케이션, 접속 지점)


1. AWS Regions (지역, 리전)

  • AWS has Regions all around the world (AWS는 전 세계에 리전 보유)
  • Names can be us-east-1, eu-west-3.. (리전명 예시)
  • A region is a cluster of data centers (리전은 데이터 센터의 집합)
  • Most AWS services are region-scoped (대부분 AWS 서비스는 리전 범위로 제공)

Q. How to choose an AWS Region?

(1). Compliance with data governance and legal requirements

  • data never leaves a region without your explicit permission (규정 준수): 명시적 허가 없이 데이터 리전 외부 이동 불가

(2). Proximity to customer

  • reduce latency (근접성): 대기 시간 (지연 시간) 최소화

(3). Available Services within a Region

  • new services and new features aren't available in every Region (서비스 가용성): 신규 서비스/기능은 일부 리전만 제공

(4). Pricing

  • pricing varies region to region and is transparent in the service pricing page (가격): 리전별 가격 상이 (투명하게 공개)

2. AWS Availability Zones (가용 영역)

  • Each region has many availability zones (usually 3, min 3, max 6) (각 리전은 여러개의 가용 영역 보유, 일반적으로 3개, 최소 3개, 최대6개) Ex) ap-southeast-2a, ap-southeast-2b, ap-southeast-2c

3. AWS Data Centers (데이터 센터)

  • Each availability zone (AZ) is one or more discrete data centers with redundant power, networking, and connectivity (각 가용 영역은 하나 이상의 독립적인 데이터 센터로 구성 - 중복 전원, 네트워크 및 연결 제공)

  • They're separate from each other, so that they're isolated from disasters (서로 분리되어 재해로부터 격리)

  • They're connected with high bandwidth, ultra-low latency networking (고대역폭, 초저지연 네트워크로 상호 연결)

4. AWS Edge Locations / Points of Presence (엣지 로케이션, 접속 지점)

  • Amazon has 400+ Points of Presence (400+ Edge Locations & 10+ Regional Caches) in 90+ cities across 40+ countries (AWS : 400개 이상의 접속 지점, 10개 이상의 리전 캐시 보유, 40개국 90개 이상 도시에 위치)
  • Content is delivered to end users with lower latency (콘텐츠를 최종 사용자에게 낮은 지연 시간으로 전송)

AWS Global Services vs Region-scoped

(글로벌 서비스 vs 리전 범위 서비스)

1. AWS has Global Services:

  • Identity and Access Management (IAM) : 자격증명 및 액세스 관리
  • Route 53 (DNS service) : DNS 서비스
  • CloudFront (Content Delivery Network, CDN) : 콘텐츠전송 네트워크
  • WAF (Web Application Firewall) : 웹방화벽

2. Most AWS services are Region-scoped:

  • Amazon EC2 (Infrastructure as a Service, IaaS) : 서비스형 인프라
  • Elastic Beanstalk (Platform as a Service, PaaS) : 서비스형 플랫폼
  • Lambda (Function as a Service, FaaS) : 서비스형 함수
  • Rekognition (Software as a Service, SaaS) : 서비스형 소프트웨어

Identity and Access Management (IAM, 자격증명 및 액세스 관리)

1. IAM: Users & Groups

  • IAM : Identity and Access Management, Global service (글로벌 서비스)

  • Root account created by default, shouldn't be used or shared (루트 계정은 기본 생성되며, 사용 및 공유 금지)

  • Users are people within your organization, and can be grouped (사용자는 조직 내 구성원이며 그룹으로 묶을 수 있음)

  • Groups only contain users, not other groups (그룹은 사용자만 포함 가능, 다른 그룹 포함 불가)

  • Users don't have to belong to a group, and user can belong to multiple groups (사용자는 그룹에 속하지 않아도 되며, 여러 그룹에 동시 소속 가능)

2. IAM: Permissions

  • Users or Groups can be assigned JSON documents called policies (사용자 또는 그룹에 정책이라는 JSON 문서 할당 가능)
  • These policies define the permissions of the users (정책은 사용자의 권한을 정의)
  • In AWS you apply the least privilege principle: don't give more permissions than a user needs (AWS는 최소 권한 원칙 적용: 사용자에게 필요한 것 이상의 권한 부여 금지)

3. IAM: Policies Structure (IAM 정책 구조)

1. Consists of (구성 요소)

  • Version: Policy language version, always include "2012-10-17" (정책 언어 버전, 항상 "2012-10-17" 사용)
  • Id: an identifier for the policy (optional) (정책 식별자, 선택 사항)
  • Statement: one or more individual statements (required) (하나 이상의 개별 문장, 필수)

2. Statements consists of (Statement 구성 요소)

  • Sid: an identifier for the statement (optional) (문장 식별자, 선택 사항)
  • Effect: whether the statement allows or denies access (Allow, Deny) (액세스 허용 또는 거부 여부)
  • Principal: account/user/role to which this policy applied to (정책이 적용되는 계정/사용자/역할)
  • Action: list of actions this policy allows or denies (정책이 허용 또는 거부하는 작업 목록)
  • Resource: list of resources to which the actions applied to (작업이 적용되는 리소스 목록)
  • Condition: conditions for when this policy is in effect (optional) (정책이 적용되는 조건, 선택 사항)


IAM Defense Mechanism (방어기제)

1. IAM - Password Policy (암호정책)

Strong passwords = higher security for your account (강력한 암호 = 계정 보안 강화)

  • In AWS, you can setup a password policy (AWS에서 암호 정책 설정 가능):
  • Set a minimum password length (최소 암호 길이 설정)
  • Require specific character types (특정 문자 유형 필수):

    • including uppercase letters (대문자 포함)
    • lowercase letters (소문자 포함)
    • numbers (숫자 포함)
    • non-alphanumeric characters (특수문자 포함)
  • Allows all IAM users to change their own passwords (암호변경허용)

  • Require users to change their password after some time (password expiration) (일정 시간 후 암호 변경 요구, 암호 만료)

  • Prevent password re-use (암호 재사용 방지)

2. IAM - Multi Factor Authentication (MFA, 다중 인증)

  • User have access to your account and can possibly change configurations or delete resources in your AWS account (계정 액세스, 구성 변경, 리소스 삭제 가능)
  • You want to protect your Root Accounts and IAM users
  • MFA = password you know + security device you own (MFA = 알고 있는 암호 + 소유한 보안 장치)

Password + MFA = Successful Login

  • Main benefit of MFA : if a password is stolen or hacked, the account is not compromised (암호가 도난 또는 해킹되어도 계정 손상X)

MFA devices options in AWS

  • Virtual MFA device (Support for multiple tokens on a single device - ex) Google Authenticator, Authy)
  • Universal 2nd factor (U2F) Security Key - YubiKey by Yubico (Support for multiple root and IAM users using a single security key, 3rd party)
  • Hardware Key Fob MFA Device - Provided by Gemalto (3rd party)
  • Hardware Key Fob MFA Device for AWS GovCloud(US) - Provided by SurePassID (3rd party)

How can users access AWS?

  • To access AWS, you have three options:

    • AWS Management Console (protected by password + MFA) (암호 + MFA로 보호)
    • AWS Command Line Interface (CLI) : protected by access keys (AWS 명령줄 인터페이스 - 액세스 키 보호)
    • AWS Software Developer Kit (SDK) - for code: protected by access keys (AWS 소프트웨어 개발 키트 - 엑세스 키 보)
  • Access keys are generated through the AWS Console

  • Users manage their own access keys

  • Access Keys are secret, just like a password. Do Not share them

  • Access Key Id = username

  • Secret Access Key = password

What is the AWS CLI?

  • A tool that enables you to interact with AWS services using commands in your command-line shell (명령줄 셸에서 명령어를 사용하여 AWS 서비스와 상호작용할 수 있는 도구)
  • Direct access to the public APIs of AWS services (AWS 서비스의 퍼블릭 API에 직접 액세스)
  • You can develop scripts to manage your resources(리소스 관리를 위한 스크립트 개발 가능)
  • Alternative to using AWS Management Console (AWS 관리 콘솔 사용의 대안)

What is the AWS SDK?

  • AWS Software Development Kit (AWS SDK) (AWS 소프트웨어 개발 키트)
  • Language-specific APIs (set of libraries) (언어별 API, 라이브러리 집합)
  • Enables you to access and manage AWS services programmatically (프로그래밍 방식으로 AWS 서비스 액세스 및 관리 가능)
  • Embedded within your application (애플리케이션 내에 임베디드)
  • Supports (지원 언어)
    • SDK (JavaScript, Python, PHP, .NET, Ruby, Java, Go, Node.js, C++)
    • Mobile SDKs (Android, iOS, ...)
    • IoT Device SDKs (Embedded C, Arduino, ...)
  • Example: AWS CLI is built on AWS SDK for Python

IAM Roles for Services

  • Some AWS service will need to perform actions on your behalf (일부 AWS 서비스는 사용자를 대신하여 작업을 수행해야 함)
  • To do so, we will assign permissions to AWS services with IAM Roles (이를 위해 IAM 역할을 통해 AWS 서비스에 권한 할당)

  • Common roles:

    • EC2 Instance Roles (EC2 인스턴스 역할)
    • Lambda Function Roles (Lambda 함수 역할)
    • Roles for CloudFormation (CloudFormation 역할)

IAM Security Tools (IAM 개발도구)

  • IAM Credentials Report (Account-level) (IAM 자격 증명 보고서, 계정 수준)

    • a report that lists all your account's users and the status of their various credentials (모든 사용자 및 다양한 자격 증명 상태 목록)
  • IAM Access Advisor (User-level) (액세스 어드바이저, 사용자 수준)

    • Access advisor shows the service permissions granted to a user and when those services were last accessed. (부여된 서비스 권한 및 마지막 액세스 시간 표시)

IAM Guidelines & Best Practices

  • Don't use the root account except for AWS account setup (계정설정시 제외하고, 루트 계정 사용 금지)
  • One physical user = One AWS user (1 명의 실제 사용자 = 1명 AWS 사용자)
  • Assign users to groups and assign permissions to groups (사용자를 그룹에 할당하고 그룹에 권한 부여)
  • Create a strong password policy (강력한 암호 정책 생성)
  • Use and enforce the use of Multi Factor Authentication (MFA) (다중 인증(MFA) 사용 및 강제)
  • Create and use Roles for giving permissions to AWS services (AWS 서비스 권한 부여 시 역할 활용)
  • Use Access Keys for Programmatic Access (CLI/SDK) (CLI/SDK용 프로그래밍 액세스)
  • Audit permissions of your account using IAM Credentials Report & IAM Access Advisor (IAM 자격 증명 보고서 및 IAM 액세스 어드바이저를 사용하여 계정 권한 감사)
  • Never share IAM users & Access Keys (IAM유저 & 액세스키 절대공유금지)

IAM Section - Summary

  • Users: mapped to a physical user, has a password for AWS Console (사용자: 실제 사용자 매핑, 콘솔 암호)
  • Groups: contains users only (그룹: 사용자만 포함)
  • Policies: JSON document that outlines permissions for users or groups (정책: 권한 정의 JSON 문서)
  • Roles: for EC2 instances or AWS services (역할: EC2/AWS 서비스용)
  • Security: MFA + Password Policy (보안: MFA + 암호 정책)
  • AWS CLI: manage your AWS services using the command-line (명령줄 관리 도구)
  • AWS SDK: manage your AWS services using a programming language (프로그래밍 언어 기반 관리)
  • Access Keys: access AWS using the CLI or SDK (액세스 키: CLI/SDK 액세스)
  • Audit: IAM Credential Reports & IAM Access Advisor (감사 : IAM 자격 증명 보고서 및 IAM 액세스 어드바이저)

Top comments (0)