AWS
AWS IAM
cocodingding
2024. 1. 29. 10:49
IAM 권한 설정 방법
- 사용자에게 권한 직접 연결
- 역할에 맞는 사용자 그룹을 생성 및 권한 부여 후 유저를 그룹에 연결
IAM Policies Structure
{
"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/*"
}
]
}
- Version : 정책 언어 버전
- Id : 정책을 식별하는 ID (Optional)
- Statement : 하나 혹은 여러가지 문장으로 이루어진 구성요소
- sid : 문장의 식별 ID(Optional)
- effect: 문장이 특정 API에 접근하는걸 허용할지(Allow), 거부할지(Deny)에 대한 내용
- Principal : 특정 정책이 적용될 사용자, 계정, 혹은 역할로 구성
- Action: effect에 기반해 허용 및 거부될 API 호출의 목록
- Resource: 적용될 action의 리소스의 목록
- Condition: 위의 Statement가 언제 적용될지 결정(Optional)
MFA - Multi Factor Authentication
IAM 계정의 보호를 위해 AWS에서는 이 메커니즘을 필수적으로 사용하도록 권장되는데 흔히 사용하는 OTP 같은 느낌이다.
MFA = Password + security device
MFA devices options in AWS
- Virtual MFA device (가상 MFA 장치)
- Google Authenticator(Phone only)
- Authy(multi-device)
- 가상 MFA 장치를 사용하면 루트 계정, IAM 사용자 또 다른 계정, 그리고 또 다른 IAM 사용자가 지원되는 식으로 가상 MFA 장치에 원하는 수만큼의 계정 및 사용자 등록이 가능하다.
- Universal 2nd factor (U2F) Security Key (물리적 키)
- YubiKey
- 하나의 보안 키에서 여러 루트계정 및 IAM 사용자를 지원한다.
- YubiKey
AWS에 접근하는 방법
- AWS Management Console : 흔히 웹사이트에서 접근하는 방법(protected by password + MFA)
- AWS Command Line Interface(CLI) : 터미널에서의 AWS 액세스(protected by access keys)
- AWS Software Developer Kit(SDK) : for code: protected by access keys
- Access Key = username
- Secret Access Key = password
IAM Roles
AWS 서비스 중 몇가지는 사용자와 마찬가지로 어떤 권한이 필요한데 따라서 AWS 서비스에 권한을 부여해야한다.
-> 그러기 위해 IAM Role이라는 것을 만들어야 한다.
IAM Role은 사용자와 같지만 실제 사람이 사용하도록 만들어진 것은 아니고 AWS 서비스에 의해 사용되도록 만들어졌다.
예를들어, EC2 인스턴스를 만든다면, EC2 인스턴스는 AWS에서 어떤 작업을 수행하려고 할 수 있는데, 만약 그 작업이 권한이 필요한 작업이라면 EC2 인스턴스에 권한을 부여해야 한다. 이를 위해 IAM Role을 만들어 이들을 하나의 객체로 만들고 EC2 인스턴스가 AWS에 있는 어떤 정보에 접근하려고 할 때, IAM Role을 이용하게 된다.
IAM Security Tools
- IAM Credentials Report(account-level)
- 보고서는 계정에 있는 사용자와 다양한 자격 증명의 상태를 포함한다.
- IAM Access Advisor(user-level)
- 사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간이 보인다.
- 최소권한의 원칙에 따랐을 때, 매우 도움이 되는 정보
- 해당 도구를 사용하여 어떤 권한이 사용되지 않는지 볼 수 있고, 따라서 사용자의 권한을 줄여 최소권한의 원칙을 지킬 수 있다.
IAM 모범사례
- 루트 계정은 AWS 계정을 설정할 때를 제외하고 사용하지 말것
- 하나의 AWS 사용자는 한 명의 실제 사용자를 의미한다.
- 그룹 수준에서 보안을 관리하자
- 비밀번호 정책을 강력하게 할 것, MFA는 사용할 수 있으면 사용하자
- AWS 서비스에 권한을 부여할 때 마다 역할을 만들고 사용해야한다