이안의 평일코딩

[AWS] IAM, IAM User(Group), IAM Role, IAM Policy 본문

Front-end/AWS

[AWS] IAM, IAM User(Group), IAM Role, IAM Policy

이안92 2021. 4. 29. 18:23
반응형

 IAM(Identity and Access Management)

 

AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스.

리소스(Resource): 자원. AWS에서는 컴퓨팅, 스토리지, 네트워크, ...

접근(Access): 리소스를 조작 및 제어하는 것. CRUD(쓰기, 읽기, 변경, 삭제)

사용자가 리소스를 사용하려고 할 때 권한을 세부적으로 조정하는 서비스

 

https://www.aws.training/Details/Video?id=54773 

 

AWS training and certification

 

www.aws.training

AWS의 인증(자신이 누구라고 주장할 때 이를 확인하는 절차)을 담당하는 것은? IAM User, IAM Role

AWS의 권한부여(사용자가 원하는 리소스에 접근하는 것을 허용하는 과정)를 담당하는 것은? IAM Policy

 

 IAM User

 

그룹의 IAM Policy에 따라 권한을 부여받는다.

사용자에게 직접 Policy를 추가할 수 있다.

인증방식: ID/패스워드 방식은 관리 콘솔에서 사용하고 AccessKey ID/Secret access key는 CLI, SDK, Web API에서 사용.

 

 IAM Role

 

특정 개체에게 리소스의 접근 권한을 부여하기 위해 사용.

주로 AWS 서비스들이 직접 다른 AWS 서비스를 제어하기 위해 사용. (EC2가 S3 업로드, Lambda가 S3에 접근 등..)

사용자나 응용 프로그램에서 일시적으로 AWS 리소스에 접근 권한을 얻을 때도 사용.

IAM Role은 Short term credential(임시, 만료시간이 있음)이며 IAM User는 Long term credential(영구)이다.

 

IAM Role의 주요 구성요소

Role ARN: 역할을 호출하기 위해 필요 (URL과 비슷)

IAM Policy: 이 역할이 어떤 권한을 부여할 수 있는가

신뢰 관계: 어떤 개체가 IAM Role을 호출할 수 있는가

 

IAM Role 사용예

EC2 role: EC2 인스턴스에게 AWS 서비스 접근권한을 부여

Lambda Execution Role: 람다에서 S3로부터 파일을 읽고 싶을 때 role에 권한 지정

다른 계정의 사용자에게 내 계정의 DynamoDB에 임시 접근 권한 부여

안드로이드 앱이 S3로 직접 동영상을 업로드할 때 사용

 

ARN

Amazon Resource Name: 아마존에서 리소스를 유일하게 식별할 수 있는 구분자

arn:partition:service:region:account-id:resource-id

arn:partition:service:region:account-id:resource-type/resource-id

arn:partition:service:region:account-id:resource-type:resource-id

 

arn:aws:iam::123456789012:user/honux

arn:aws:s3:::my-bucket/folder1/file1

 

 IAM Group

 

공통의 권한을 가지는 사용자의 집합으로 그룹을 생성 후 IAM Policy를 연결한다.

그룹에 사용자 추가하고 그룹내 사용자는 그룹과 연결된 Policy의 권한을 부여받는다.

 

 IAM Policy

 

AWS 서비스의 접근 권한을 세부적으로 관리하기 위해 사용하는 JSON 포맷의 문서이다.

AWS 관리 정책: AWS가 미리 만들어 놓은 정책으로 사용자는 편집이 불가능하다.

사용자 관리 정책: 사용자가 직접 생성한 정책으로 기존 정책으로부터 생성 및 수정 또는 직접 생성 가능하고 GUI 편집기와 JSON 편집기 모두 사용 가능하다.

 

AdministratorAccess Policy

Statement에 실질적인 내용이 들어가있다.

Effect는 Allow(허용) 또는 Deny(거부)

Action은 API, 행동

Resource에 EC2, S3와 같은 리소스가 들어간다.

아래는 모든걸 허용하는 정책.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}
Power User Policy

NotAction은 모든 리소스에 대해 해당하는 것만 빼고 허용.

아래는 iam만 못하기 때문에 자기 자신 정보를 보거나 변경이 안됨.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "NotAction": "iam:*",
      "Resource": "*"
    }
  ]
}
S3 Full Permission

Action은 해당하는 것만 가능하다.

아래는 s3만 가능하게 한다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}
S3 특정 버킷 읽기 전용 정책

Action: s3의 Get, List로 시작하는 API만 허용.

Resource: ARN은 URL처럼 아마존에서 리소스를 식별할 수 있는 식별자.

s3저장소의 mydata이라는 버킷 안에 모든 컨텐츠.

아래는 s3저장소의 mydata 버킷 안의 파일들을 읽을 수 있는 읽기 전용 정책.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
            "s3:Get*",
            "s3:List*"
      ],
      "Resource": [ "arn:aws:s3:::mydata", "arn:aws:s3:::mydata/*" ]
    }
  ]
}

 

반응형
Comments