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 가 될 수 있음

 

 

 

 

 

 

+ Recent posts