https://serverless-stack.com/chapters/create-an-aws-account.html

What is IAM

IAM의 공식적인 정의부터 시작합시다.
AWS ID 및 액세스 관리 (IAM)는 사용자를 위해 AWS 리소스에 대한 액세스를 안전하게 제어 할 수있게 해주는 웹 서비스입니다. IAM을 사용하여 AWS 리소스를 사용할 수있는 사용자 (인증)와 사용자가 사용할 수있는 리소스 (어떤 방법으로) (인증)를 제어합니다.

What is an IAM User

AWS 계정을 처음 생성하면 루트 사용자가됩니다. 계정을 만들 때 사용한 전자 메일 주소와 암호를 루트 계정 자격 증명이라고합니다. 이를 사용하여 AWS Management Console에 로그인 할 수 있습니다. 그렇게하면 결제 정보에 대한 액세스 및 비밀번호 변경 기능을 포함하여 AWS 계정의 모든 리소스에 대한 무제한 액세스 권한을 갖게됩니다.

IAM 사용자는 AWS Management Console에 로그인하기위한 이름, 비밀번호 및 API 또는 CLI와 함께 사용할 수있는 최대 2 개의 액세스 키로 구성됩니다.
기본적으로 사용자는 계정의 모든 항목에 액세스 할 수 없습니다. 정책을 작성하고 사용자에게 정책을 첨부하여 사용자에게 권한을 부여합니다. 이러한 정책 중 하나 이상을 부여하여 사용자가 액세스 할 수있는 것과 액세스 할 수없는 것을 제한 할 수 있습니다.

What is an IAM Policy?

IAM 정책은 AWS 리소스에서 수행 할 수있는 작업을 정의하는 규칙 또는 규칙 집합입니다.

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": ["s3:GetObject"],
    "Resource": "arn:aws:s3:::Hello-bucket/*",
    "Condition": {"StringEquals": {"s3:prefix": "Bobs-"}}
}

여기에는보다 세분화 된 액세스 권한을 부여하는 정책이 있는데, Bobs-호출 된 버킷 의 문자열 앞에 접두사가 붙은 파일 만 검색 할 수 있습니다 Hello-bucket.
우리는 위의 예에서 S3 리소스를 사용하고 있습니다. 그러나 정책은 AWS 서비스 중 어떤 것과도 유사합니다. 단지 Resource속성 에 대한 리소스 ARN에 달려 있습니다. ARN은 AWS의 리소스 식별자이며 다음 장에서 더 자세히 살펴볼 것입니다. 또한 해당 서비스 작업 및 조건 컨텍스트 키를 Action및 Condition속성에 추가합니다.

What is an IAM Role

IAM 역할은 AWS에서 ID가 수행 할 수있는 작업과 수행 할 수없는 작업을 결정하는 권한 정책 이있는 ID 인 점에서 사용자와 매우 유사합니다 . 그러나 역할에는 이와 관련된 자격 증명 (암호 또는 액세스 키)이 없습니다. 한 사람과 고유하게 연결되는 대신, 필요한 사람이 역할을 수행 할 수 있습니다. 이 경우 람다 함수는 일시적으로 권한을 부여하는 역할을 할당받습니다.

What is an IAM Group

IAM 그룹은 단순히 IAM 사용자의 모음입니다. 그룹을 사용하여 사용자 모음에 대한 사용 권한을 지정할 수 있습니다. 이렇게하면 이러한 사용 권한을 해당 사용자에게보다 쉽게 관리 할 수 있습니다.

What is an ARN

다음은 공식 정의입니다.
Amazon Resource Name (ARN)은 AWS 리소스를 고유하게 식별합니다. IAM 정책, Amazon RDS (Relational Database Service) 태그 및 API 호출과 같이 모든 AWS에서 자원을 명확하게 지정해야하는 경우 ARN이 필요합니다.
ARN은 실제로 개별 AWS 리소스에 대한 세계적으로 유일한 식별자입니다. 다음 형식 중 하나를 취합니다.

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

ARN의 몇 가지 예를 살펴 보겠습니다. 다른 형식이 사용되었습니다.

<!-- Elastic Beanstalk application version -->
arn:aws:elasticbeanstalk:us-east-1:123456789012:environment/My App/MyEnvironment

<!-- IAM user name -->
arn:aws:iam::123456789012:user/David

<!-- Amazon RDS instance used for tagging -->
arn:aws:rds:eu-west-1:123456789012:db:mysql-db

<!-- Object in an Amazon S3 bucket -->
arn:aws:s3:::my_corporate_bucket/exampleobject.png

마지막으로 ARN의 일반적인 사용 사례를 살펴 보겠습니다.

통신

GET /hello_world => arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world

ARN은 여러 AWS 리소스가 포함 된 시스템을 조율 할 때 특정 리소스를 참조하는 데 사용됩니다. 예를 들어 RESTful API를 수신하고 API 경로 및 요청 메소드를 기반으로 해당하는 람다 함수를 호출하는 API 게이트웨이가 있습니다. 라우팅은 다음과 같습니다.

IAM 정책

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": ["s3:GetObject"],
    "Resource": "arn:aws:s3:::Hello-bucket/*"
}

ARN은 액세스 권한이 부여되는 리소스 (이 경우 S3 버킷)를 정의하는 데 사용됩니다. 여기서 와일드 카드 *문자는 Hello 버킷 내부의 모든 리소스와 일치시키는 데 사용됩니다 .

AWS CLI 설치

brew install awscli
aws configure