[aws](2)IAM

haden·2022년 4월 6일
0

IAM permission

Adminstrator access permisson

어떤 그룹에도 속하지 않은 user가 있다면
인라인 정책을 적용할 수 있음

여러개의 그룹에 속한 user은 두 그룹의 정책이 적용될 수 있음

Version: "2012-10-17"
버전은 폴리시 랭기지 버전
id:""
선택사항으로 정책을 식별하는 아이디
statement: [{}{}]
statement는 하나일수도 여러개일 수도 있음
sid: 문장 아이디, 옵셔널임
effect: 특정 api에 접근하는 걸 허용하는지 거부할지에 대한 내용 "Allow" "Deny"
principal: 특정 정책이 적용될 사용자, 계정 혹은 역할
action: effect에 의해 거부되거나 혹은 허용되는 API 목록
resource: 적용될 action의 리소스의 목록
이 예시에서는 버킷이나 다른 것도될수있음
condition: statement가 언제 적용될지를 결정함

개인 유저에게 권한을 부여하는 방법
1. 기존에 만들어둔 정책을 적용하거나 그룹 폴리시 적용하는 방법
2. 인라인 폴리시를 다이렉틀리하게 적용하는 방법

IAMreadonlyaccess 권한만 있어서 그룹 생성을 못함

developers 그룹을 만들어서 유저를 추가해줌

정책 생성하기

password policy

비밀번호가 강력할수록 계정 보안이 철저해진다
비밀번호 최소길이 설정
특정 유형의 글자 사용 대문자 숫자 특문
iam 유저의 비밀번호 변경을 금지 또는 허용
일정 기간이 지나면 비밀번호 만료시킴 > 90일마다 재설정
비밀번호 재사용 금지

Multi Factor Authentication MFA

다요소 인증
aws에서 이 매커니즘을 필수적으로 사용하도록 권장함
사용자들의 계정을 보호하는 방법
(루트 유저와 아이엠 유저 전부 보호해야함)
mfa는 비밀번호와 보안장치를 함께 사용하는 것을 의미함
ex) 앨리스는 자신의 비밀번호를 알고 있으며 MFA 생성 토큰을 함께 갖고 있음
로그인 과정에서 둘을 함께 사용해서 로그인함
앨리스이 비밀번호가 노출되어도 해커는 앨리스의 물리적 장치가 없어서 계정에 침투할 가능성이 적어짐

virtual MFA device
가상 mfa 장치에 루트계정 iam 사용자들을 원하는 수만큼 등록할 수 있음
Google Authenticator(phone only)
Authy(multi-device) : 컴퓨터와 휴대폰에서 둘 다 사용 가능함

universal 2nd factor (u2f) security key
YubiKey by Yubico

Hardware Key Fob MFA Device
Gemalto

Hardware Key Fob MFA Device for AWS GovCloud us
SurePassID
미국 정부의 클라우드인 AWS GovCloud를 사용하는 경우 필요함

계정 설정에서 암호 정책 설정

보안자격증명 My Security Credential에서 MFA-VirtualMFADevice

How can users access AWS?

  1. AWS Management Console
  2. AWS Command Line Interface : access key로 보호됨
  3. AWS Software Developer Kit : 애플리케이션 코드 내에서 API를 호출하고 싶을 때 access key로 보호됨
    사용자들이 직접 자신의 access key를 관리할 수 있음
    accessKey는 pwd와 같이 secret, 공유 금지

AccessKeyID=username
SecretAccessKey=password

what's the AWS CLI?

명령줄 인터페이스
aws 서비스들과 상호작용 할 수 있도록 해주는 도구
cli를 통해 aws 서비스의 공용 api로 직접 엑세스가 가능함
cli를 통해 리소스를 관리하는 스크립트를 도입해 일부 작업 자동화가 가능함
cli는 오픈소스 https://github.com/aws/aws-cli

what's the AWS SDK?

software development kit
특정 언어로 된 라이브러리의 집합
프로그래밍 언어에 따라 개별 sdk가 존재함
aws 서비스나 리소스에 프로그래밍을 위한 엑세스가 가능하도록 해줌
sdk는 코딩을 통해 애플리케이션 내에 심어둬야 함
다양한 프로그래밍 언어를 지원 GO, JAVA, PYTHON, JS 등
IOT 지원함
ex) AWS CLI is built on AWS SDK for Python

how to use CLI

엑세스 키를 생성할때 IAM account를 사용해야함
보안자격 증명의 생성에 루트 계정을 사용하지말자!
Users-haden-Security credentials 로 들어가서 엑세스 키 생성


cli permisson은 IAM 콘솔에서의 권한과 동일함

aws에서는 관리 콘솔을 통해 엑세스하거나 엑세스 키를 구성한 후 CLI를 통해 들어갈 수 있다~

AWS cloud shell 사용하기

AWS 클라우드 쉘은 AWS 클라우드에서 무료로 사용 가능한 터미널 같은 개념임
Cloud Shell을 지원하는 리전을 살피고
해당 리전에서 접속 (아시아 태평양 - 도쿄)

자격증명을 설정하는 절차가 없어도
자격증명이 클라우드를 사용하중인 계정에서 이뤄짐

다만 기존 cli에서 이뤄졌던 리전 설정 등은 불가함 > 기본 리전이 콘솔에서 선택한 리전

aws iam list-users --region

클라우드 쉘엔 full repository 가 있음 > 그래서 재시작시 이전 저장한 파일을 기억함

cloud shell의 기타 기능들

IAM role

IAM role은 aws 서비스가 사용하는 것
ex) ec2 인스턴스가 aws에서 어떤 작업을 시행하려고 할 때 IAM role을 만듦
ec2 인스턴스가 aws에 있는 어떤 정보에 접근하려고 할때 IAM role의 권한을 부여

대부분 ec2와 람다가 흔히 IAM 역할을 부여하는 대상

IAM 보안도구

IAM Credentials Report (account-level)
계정의 사용자와 보안 증명을 포함함
IAM Access Advisor (user-level)
사용자에게 부여된 서비스 권한과 해당 서비스에 마지막으로 엑세스한 시간 > 최소권한의 원칙

자격증명보고서

엑세스 관리자

IAM Guideline & Best Practice

루트 계정은 AWS 계정을 설정할 때 말고는 사용하지 말자
하나의 AWS 사용자 = 한명의 실제 사용자
Assign users to groups and assign permissions to groups > 그룹 레벨에서 권한을 관리할 수 있음
비밀번호 정책을 강력하게 만들자
MFA를 사용할 수 있다면 좋다
AWS 서비스에 권한을 부여할 때마다 IAM role과 같은 권한을 만들고 사용해야함
User Access Keys for Programmatic Access(CLI/SDK)
계정의 권한을 감사할때는 IAM 자격증명보고서와 IAM 엑세스 관리자를 활용할 수 있음
절대로 IAM 사용자와 엑세스 키를 공유하지 말자

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
Roles: for EC2 instances or AWS services
Security: MFA + Password Policy
Access Keys: access AWS using the CLI or SDK
Audit : IAM Credential Reports & IAM Access Advisor
IAM 정책의 statement는 Sid, Effect, Principal, Action, Resource 및 Condition으로 구성 > version은 정책의 일부

profile
hi i'm haden

0개의 댓글