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 에는 임시 자격증명이 부여
- access key
- secret access key
- 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 문서로 작성