프로그래밍/AWS Solutions Architect
AWS SAA - IAM
병인
2022. 5. 9. 19:15
IAM
- IAM = Identity and Access Management
- Global Service
- IAM은 사용자를 생성하고 그룹에 배치하기 때문
- Root account 는 계정을 생성할 때 기본으로 생성된다.
- Root account는 오직 계정을 생성할 때만 사용되어야 한다.
- 그 후에는 루트 계정을 사용해서도, 공유해서도 안된다.
- 그 대신에 Users를 생성해야 한다.
- Users(사용자)
- IAM에서 사용자를 생성할 때 하나의 사용자는 조직(organization) 내의 한 사람에 해당된다.
- 필요하다면 사용자들을 그룹으로 묶을 수 있다.
- Groups
- 그룹에는 오직 사용자만 포함이 가능하다. 다른 그룹이 포함될 수 없다.
- 사용자는 그룹에 소속되지 않을 수 있고, 여러 개의 그룹에 동시에 소속할 수도 있다.
IAM: Permissions
- 사용자 또는 그룹에게 정책, 또는 IAM 정책이라고 불리는 JSON 문서를 지정할 수 있다.
- 정책들을 자용해 사용자들의 권한을 정의할 수 있다.
- AWS에서는 최소 권한의 원칙을 적용해야 한다.
- 사용자가 꼭 필요로 하는 것 이상의 권한을 주지 않는 것
- 비용, 보안 문제 때문
IAM 정책
- 그룹에게 정책을 줄 수 있다.
- 개인에게 정책을 줄 때는 inline으로 정책을 준다.
- inline은 사용자가 그룹에 속해 있든 아니든 적용 가능하다.
IAM Policies Structure
{
"Version" : "2012-10-17",
"Id" : "S3-Account-Permissions",
"Statement" : [
{
"Sid" : "1",
"Effect" : "Allow",
"Principal" : {
"AWS" : ["arn:aws:iam::12345678910:root"]
},
"Action" : [
"s3:GetObject",
"s3:PutObject"
],
"Resource" : ["arn:aws:s3:::mybucket/*"]
}
]
}
- Version : 정책 언어 버전으로 보통은 "2012-10-17" 이다.
- Id : 정책을 식별함 (Optional)
- Statement : 1개 혹은 여러 개 일 수 있다.
- Sid : 문장 ID로 문장의 식별자 (Optional)
- Effect : 문장이 특정 API에 접근하는 걸 허용할지 거부할지에 대한 내용이다.
- Allow : 허용
- Deny : 거부
- Allow : 허용
- Principal : 특정 정책이 적용될 사용자(User), 계정(Account), 혹은 역할(Role)로 구성된다. (Optional)
- Action : Effect에 기반해 허용 및 거부되는 API 호출의 목록이다.
- Resource : 적용될 Action의 리소스의 목록으로 위의 예시에서는 버킷이지만 다른 것들이 될 수 있다.
- Condition : Statement가 언제 적용될지를 결정한다. (Optional)
IAM MFA
- 보안 이슈 방어 메커니즘
- Password Policy(비밀번호 정책)의 정의
- 비밀번호가 강력할수록 계정의 보안이 철저해진다.
- AWS 비밀번호 정책 옵션
- 비밀번호의 최소 길이
- 특정 유형의 글자 사용 요구(대문자, 소문자, 숫자, 특수 문자 등)
- IAM user들의 비밀번호 변경을 허용 또는 금지할 수 있다.
- 일정 기간이 지나면 비밀번호를 만료시켜 새 비밀번호 설정을 요구한다.
- 비밀번호의 재사용을 막아 비밀번호 변경 시에 동일한 비밀번호나 이전에 사용했던 비밀번호를 사용하지 못하게 할 수 있다.
- Multi Factor Authentication(MFA)
- 사용자가 계정에 접근 권한이 있고 많은 작업을 할 수 있다.
- Root Account는 반드시 보호해야 하며 전체 IAM 사용자들도 보호해야 한다.
- MFA 장치 사용
- Virtual MFA device
- Google Authenticator
- Authy
- Universal 2nd Factor (U2F) 보안 키
- Hardware Key Fob MFA Device
- Virtual MFA device
- Password Policy(비밀번호 정책)의 정의
IAM Role
- IAM Role은 User와 같지만 실제 사람이 사용하도록 만들어진 것이 아닌 AWS 서비스에 의해 사용되도록 만들어짐
- 예를들어 EC2 인스턴스를 만들고 해당 인스턴스에서 AWS에 있는 어떤 정보에 접근하려고 할 때 IAM Role을 사용하여 접근할 수 있다.
- 주요 Role
- EC2 Instance Roles
- Lambda Function Roles
IAM Security Tools
- IAM 자격 증명 보고서를 만들 수 이싿.
- 계정 수준에서 가능
- 계정에 있는 사용자와 다양한 자격 증명의 상태를 포함한다.
- IAM 액세스 관리자
- 사용자 수준에서 가능
- 사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간이 보인다.
IAM 가이드라인 & 모범 사례
- Root Account는 AWS 계정을 설정할 때를 제외하고 사용하지 말아라
- 하나의 AWS 사용자는 한 명의 실제 사용자를 의미하게 하라
- 사용자를 그룹에 넣어 해당 그룹에 권한을 부여하라
- 비밀번호 정책을 강력하게 만들어라
- IAM Role을 만들고 사용해야 한다.
- CLI나 SDK를 사용할 경우 반드시 액세스 키를 만들어야 한다.
- 계정의 권한을 감사할 때는 IAM 자격 증명 보고서와 IAM 액세스 분석기를 사용하라.
- 마지막으로 절대로 IAM 사용자와 액세스 키를 공유하지 말아라.