IAM 이란, Identity and Access Management 의 약자
리전과 상관없는 Global 서비스
AWS 계정을 만들고 사용하면 곧바로 생기는 Root account 는 절대 사용하지 말라고 함
대신 'User' 하나를 만들어서 사용하라고 함
User 는 AWS 계정에 종속되어있는 하나의 사용자 단위인 듯 함
AWS 를 사용하는 사용자들 하나 하나를 User 라고 볼 수 있음
이 사용자 단위 'User' 를 여럿 묶어서 그룹으로 만들 수 있다고 함
즉, 'Group' 은 User 들을 모아둔 것
Group 안에 User 를 넣을 수 있지만,
Group 안에 또 다른 Group 을 넣을 순 없다고 함
반대로, User 는 여러 Group 에 속하는 게 가능하다고 함
이렇게 User 와 Group 의 단위로 사용자를 구분하는 이유는,
각 User 혹은 Group 단위로 권한을 부여하기 위함
어떤 User 사용자는 S3 에 접근하면 안 되지만 어떤 사용자는 가능하고
또 어떤 Group 그룹(내 사용자들)은 EMR 을 사용하면 안 되지만 어떤 그룹(내 사용자들)은 가능하고... 이런 식.
User 혹은 Group 에 특정 권한을 부여하는 것을 IAM policies 라고 함
json 형태로 구성되며, 이 json 에 어떤 User 혹은 Group 이 어떤 Resource(s3 혹은 emr 등)에 대해 어떤 액션(작업)을 허용할지 내용이 적혀있음
이를테면, A User 가 s3 의 MyBucket 버켓에 업로드 되어있는 sample.txt 라는 파일에 접근 및 업로드 가능하도록 하려면
{
"Version": "2024-06-25",
"Id" : "policy-for-a-user",
"Statement": [
"Sid": "1",
"Effect" : "Allow",
"Principal": {
"AWS": ["arn:aws:iam::12345"]
},
"Action: ["s3:getObject", "s3:PutObject"],
"Resource : ["arn:aws:s3:::MyBucket/sample.txt"]
}
}
위와 같은 내용의 json 을 User 혹은 Group 에 "Add permissions" 로 넣어주면 됨
(직접 json 을 만들지 않고, 콘솔에서 제공해주는 툴을 사용하거나, 이미 완성되어있는 policy 사용 가능함)
- Version : policy 의 버전
- Id : policy 의 id (optional)
- Statement : 실제 내용
- Sid : statement 의 id (optional)
- Effect : 권한을 부여할지, 막을지 넣음. Allow, Deny 둘 중 하나
- Principal : 권한을 부여받을 User, Group, Account 혹은 (아래서 설명할) Role
- Actions : 부여할 작업 권한
- Resource : 권한 부여의 대상이 되는 리소스. s3, emr 등
- Condition : (위 json 에는 없지만) 해당 policy 가 언제 적용될지 결정하는 내용 (optional)
User, Group 에 부여한 권한들은
IAM 각 user, group 상세 페이지의 Permissions 에서 확인 가능
IAM Role 이란, AWS Service (EC2, S3,,, ) 에 붙이는 권한 단위를 의미함
User 나 Group 에 행동 권한을 붙이는 것처럼,
EC2, S3 등에 사용 권한인 Role 을 붙임
예를 들어 S3 에서 데이터를 가져오는 코드를 EC2 에서 동작시키려고 할 때
이 EC2 에 S3 access 가능하고 read 가능한 Role 을 부여해주어야 함
그렇지 않으면 S3 에 접근이 불가하기 때문에 데이터를 가져올 수 없음
IAM MFA 는, Multi Factor Authentication 의 약자이고
User 가 로그인 할 때 단순히 id, pw 로 로그인 성공하는 게 아니라
User 의 비밀번호와 User 의 Device (보안장치) 의 조합으로 비밀번호를 만들어 로그인하는 것임
여기서 보안장치는 예를 들어 OTP 가 될 수 있음
'눈가락' 카테고리의 다른 글
[JAVA] Generic 간단한 샘플 코드 (0) | 2023.08.20 |
---|---|
[리뷰] 페어페딕7 카키 한 달 사용 후기 (1) | 2023.01.07 |
[GIT] The source branch is n commits behind the target branch 경고 해결 방법 (0) | 2022.11.17 |
[IT] 빅데이터 필드 기술질문 대비 적어두는 것들 (0) | 2022.08.26 |
[IT] Orc vs Parquet 비교 (0) | 2022.08.10 |