1. IAM

사용자

  • 사용자 생성 및 그룹 배치 -> 글로벌 서비스
  • 루트 계정은 계정을 만들 때에만 사용되어야 함
    • 그 후에는 루트 계정을 더 이상 사용하거나 공유하지 않아야 함
    • 사용자를 만들기!
  • 그룹을 만들어 사용자들을 묶을 수 있음
    • 그룹 안에 그룹을 배치할 수는 없음
    • 한 사용자가 다수의 그룹에 속할 수 있음


  • 사용자와 그룹을 만드는 이유: AWS 서비스를 사용하기 위해 권한 부여
  • 정책 이라고 부르는 JSON 문서를 지정할 수 있음
  • 모든 사용자에게 모든 권한을 부여하지 않음!!
    • 최소 권한의 원칙 적용

사용자 생성

  • IAM 콘솔에서 생성
  • 루트 계정을 사용하지 않기 위해 관리자 권한과 유사한 사용자를 만들 것
    • AWS Management Console 접근 허용
    • IAM USER를 만드는 것이 더 편리!
    • Admin 그룹에 추가
    • AdministratorAccess 정책 연결 (Admin 그룹에 의해 자동 생성)
    • 이렇게 그룹을 통해 정책을 연결하는 것이 더 간편한 방법!
  • account alias를 통해 로그인 URL을 간소화할 수 있음
  • 웹 브라우저를 비공개 모드로 들어가면 창을 두 개 띄워 사용할 수 있음


  • 참고
    • 태그: 모든 서비스에 존재, 없어도 되지만 서비스에 메타데이터를 부여해줌!

IAM 정첵

  • 그룹 레벨에서 정책을 적용하면
    • 그룹의 모든 구성원에게 적용
    • 정책의 상속이 가능
  • 인라인 정책: 사용자에게만 연결 가능


  • 정책 구조
    • version number
    • 정책 ID (Optional)
    • Statement (Required)
      • Sid: Statement 식별자 (숫자, Optional)
      • Effect: Allow / Deny
      • Principal: 특정 정책이 허용될 사용자/계정/역할
      • Action: Effect에 기반해 허용 또는 거부될 API 호출 목록
      • Resource: 적용될 Action의 리소스 목록
      • Condition: Statement가 언제 적용될지 결정 (Optional)


{
    "Version": "2012-10-17",
    "Id": "S3-Account-Permissions",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": ["arn:aws:iam::123456789012:root"]
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": ["arn:aws:s3:::mybucket/*"]
        }
    ]
}

IAM MFA

  • 사용자에게 Password Policy를 적용시킬 수 있음 (첫번째 방법)
    • IAM > Account Settings > Edit password policy > IAM default / Custom
  • MFA (Multi Factor Authentication) (두번째 방법, 필수 권장!!)
    • 비밀번호 + 보안장치 함께 사용하는 것
    • 계정명 > Security credentials (root user) > Assign MFA


  • Virtual MFA device
    • 종류
      • Google Authenticator (Phone only)
      • Authy (multi-device)
    • 하나의 device에서 여러개의 토큰을 지원
    • 루트, 사용자 등 원하는 수만큼 계정 및 사용자 등록이 가능 -> 편리!
  • U2F (Universal 2nd Factor) Security Key
    • 종류
      • YubiKey
    • 물리적 장치
    • 하나의 보안 키에서 여러 루트 계정과 사용자 지원 -> 하나의 키로도 충분
  • Hardware Key Fob MFA Device
    • 종류
      • Gemalto
  • Hardware Key Fob MFA Device for AWS GovCloud (US)
    • 종류
      • SurePassID

IAM Roles for Services

  • AWS 서비스에 권한을 부여
  • 사용자와 같지만, 실제 사람이 사용하도록 만들어진 것이 아니라 AWS 서비스에 의해 사용되도록 만들어진 것
  • ex) EC2 인스턴스를 만든다면 인스턴스는 AWS에서 어떤 작업을 수행하려 할 수 있음 -> 그러기 위해서는 EC2 인스턴스에 권한을 부여해야 함 -> IAM Role을 만들어 하나의 개체로 만듦 -> 인스턴스가 AWS의 어떤 정보에 접근하려고 할 때 IAM Role을 사용하게 됨


  • 생성
    • 권한을 받을 AWS 서비스 선택 (common: EC2, Lambda)
    • 부여할 정책과 권한 선택

IAM Security Tolls

  • IAM Credential Report
    • 계정 레벨에서 생성 가능
    • 계정에 있는 사용자와 다양한 자격증명의 상태 포함
    • 생성
      • IAM > Credential report > Download Report (csv)
  • IAM Access Advisor
    • 사용자 레벨에서 사용 가능
    • 사용자에게 부여된 서비스의 권한과 해당서비스에 마지막으로 액세스한 시간 보여줌
    • 최소권한 원칙에 도움
      • 어떤 권한이 사용되지 않는지 확인 -> 권한 축소
    • 생성
      • IAM > Users > 유저 선택 > Acces Advisor

IAM Guidelines

  • Root 계정은 AWS 계정을 설정할 때를 제외하고 사용하지 않기
    • 새로운 사용자를 만들어 사용
  • 사용자를 그룹에 넣어 해당 그룹에 권한을 부여하고, 그룹 단위로 권한을 관리할 수 있음
  • 강력한 비밀번호 정책을 사용하기
  • MFA 사용하기
  • AWS 서비스를 사용할 때 Role을 만들어 사용하기
  • CLI / SDK를 사용할 때 반드시 Access key를 만들어야 함
  • 계정 권한을 감사할 때 IAM Credential Report와 IAM Access Advisor를 사용할 수 있음

2. AWS CLI

AWS access 방법

  • AWS Management Console
    • password + MFA
  • AWS Command Line Interface (CLI)
    • access keys
  • AWS Software Developer Kit (SDK)
    • AWS로부터 애플리케이션 코드 내에서 API를 호출하고자 할 때 사용되는 방식
    • access keys

access keys

  • AWS Console에서 생성
  • 사용자가 직접 관리
  • 절대 외부에 공유 X

  • Access Key ID ~= username
  • Secret Access Key ~= password

AWS CLI 설치

  • Windows
    • AWS CLI install on Windows 검색
    • MSI Installer 이용
  • Mac OS
    • AWS CLI install on mac 검색
    • pkg 파일 다운로드
  • Linux
    • AWS CLI install on Linux 검색
    • curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    • unzip awscliv2.zip
    • sudo ./aws/install

Access Key 발급

  • IAM > username 선택 > security credentials > create access key
  • 우선은 CLI 선택 (이후 cloudshell 이용)
  • Access key, Secret access key 확인

  • CLI에서 aws configure 입력 후 access key, secret access key 입력
    • region, output format 입력 (선택)
  • aws iam list-users
    • 내 계정의 모든 사용자 출력
      • user id, arn, create date, password last used
    • IAM 콘솔의 Users 탭에서 보는 것과 같음
  • CLI 권한은 IAM 콘솔에서 얻는 권한과 완전히 같음!
    • 현재 사용중인 사용자를 admin 그룹에서 제외하면 aws iam list-users를 입력해도 리스트를 볼 수 없음

CloudShell

  • AWS 클라우드에서 사용 가능한 터미널 개념
  • CLI를 사용할 때 자격증명을 따로 작성할 필요 없음 -> 바로 API 호출 가능
  • --region : 로그인된 리전 출력
  • 전체 저장소가 있음
    • 파일을 만들고 CloudShell을 재실행하면 파일이 남아있음
  • Configuration 가능
  • 파일 업로드, 다운로드 가능