AWS 접근제어#1

2 aws iam의 인증과 인가

identity: iam user의인증

credential 장기 iam user, root, 일반적으로 장기는 취약 임시 iam 사용자에게는 상시 자격증명(acceess key/secret access key페어)이 부여 rest api, cli, sdk등을 통해 활용

identity: iam role의 인증(인스터스, 기타aws서비스)

iam role 에는 임시 자격증명이 부여

  1. access key
  2. secret access key
  3. security token(with time limit)

identity: iam role의 인증(외부사용자) cross account

aws role(역할) 장기크레덴셜을 로테이션하지않는이상 서버의 하드코딩하면 위험 롤은 임시자격증명 access key 없이 arn으로 사용해서 위험이 없음 trusted entities

권한의 위임 체계를 지원 권한정책(해당 역할에 부여될 권한을 규정) + 신뢰정책(해당 역할을 할 수 있는 보안주체 규정) 동일 또는 타 어카운트, aws 서비스(ec2,람다 등), 외부인증연계(Federated) 사용자에 부여 수임(assumerole) 조건으로 MFA를 지원함 IAM 역할을 수임한 IAM 사용자에게는 본래 권한 대신 IAM역할에서 규정된 권한으로 대체

AWS IAM Role vs User IAM Role을 이용하는 경우는 자동홛된 프로세스에서 aws 서비스들 사이에서 인증연계된 외부 사용자들이 임시 자격증명으로 인증

IAM User을 이용하는 경우는 실사용자 기준으로 통제할때 상시 자격증명으로 인증 IAM Group으로 관리 가능

AWS IAM Group IAM 권한을 한꺼번에 주기 위한 용도임 그룹간 포함(Nested)관계는 불가 자동 소속되는 기본 그룹은 없음 IAM 사용자는 복수개의 그룹에 소속 가능(최대 10개) IAM Group은 보안 주체가 아님

Access Management: IAM의 인가 모든 AWS 서비스는 접근제어 정책을 기반으로 인가 매 API호출시, 적용된 정책을 통해 인가 수행 정책은 IAM 역할/사용자/그룹, AWS 리소스, 임시 자격증명 세션, OU 등에 적용할 수 있음 AWS Root 어카운트는 기본적으로 AWS 리소스에 대한 모든 권한을 가짐 AWS 정책은 기본 디폴트 Deny 명시적 Allow < 명시적 Deny의 우선순위

AWS API 요청의 인증 단계 보안주체가 콘솔, API, CLI를 통해 전송한 요청들은 다음 단계에 따라 평가되고 허용 여부가 판단: 요청자 인증 - 익명 요청을 허용하는 S3, Cognito 등 일부 서비스가 있음 요청 컨텍스트 수집 요청 주체, 요청된 리소스 및 관련 데이터, 요청된 작업, 환경 데이터(IP,시간대)등을 수집하고 적합한 접근제어 정책(들)을 찾음 접근제어 정책 평가() 요청의 허용/거부 결정()

AWS API 요청의 성공 조건 IAM 보안 주체의 적법한 서명값이 포함되어 있고(인증) AND 정책(policy)에 의해 해당 요청이 정확하게 인가되어야함

IAM 기본 요약

Root(Super User)

  • 모든 서비스에 대한 접근(권한 조정 불가)

  • 콘솔과 API에 대한 접근

  • 빌링 및 고객 지원(Customer Support)에 대한 접근

IAM Users

  • 특정 서비스에 대한 접근

  • 콘솔과 API에 대한 선택적 접근

  • 고객 지원(Customer Support)에 대한 접근

  • Password / Long term credential 사용

IAM Group

  • IAM 사용자 관리 편리성을 제공

  • 권한을 한꺼번에 주기 위한 용도

  • IAM사용자는 복수개의 그룹에 속할 수 있음

IAM Role

  • 특정 서비스에 대한 접근

  • 콘솔과 API에 대한 선택적 접근

  • 고객 지원(Customer Support)에 대한 접근

  • temp credential 사용

Policy

  • 권한은 요청이 허용되거나 거붇되는지 여부를 결정

  • JSON 문서로 작성