AWS IAM

정민교·2024년 5월 4일
0

aws

목록 보기
4/12
post-thumbnail

📒IAM(Identity And Access Management)

사용자와 그룹을 생성, 그룹에 aws 서비스 엑세스 권한을 설정, 생성한 사용자들을 그룹에 배치한다.

  • 그룹에는 사용자만 배치 가능
  • 그룹에 다른 그룹 배치 불가능
  • 사용자가 그룹에 배치되지 않을 수도 있음
  • 한 사용자가 다수의 그룹에 배치될 수 있음

IAM은 aws에서 글로벌로 제공하는 서비스, region-scoped 서비스가 아니기 때문에 region을 선택할 필요가 없다.

aws 계정을 생성할 때 기본으로 root 사용자가 생성된다.

👉aws 계정 ID는 오른쪽 상단에서 확인 가능

✔️사용자와 그룹 생성

사용자가 필요로 하는 것 이상의 권한을 주지 않는 것이 목표

특정 권한을 가지고 AWS 계정을 사용할 수 있도록 하기 위해서 사용자 및 그룹을 생성한다.(root 사용자는 aws 계정의 모든 서비스에 대한 권한이 있음.)

사용자를 생성하고 특정 그룹에 배치한 후 특정 그룹에게 혹은 그룹에 속하지 않은 사람이라도 IAM 정책을 부여한다.

📌사용자 생성

  • 사용자 이름 작성
  • aws 관리 콘솔에 대한 엑세스 권한 제공 체크
  • 콘솔 엑세스 권한 유형 선택
    • Identity Center에서 사용자 지정이 권장 옵션, 나는 그냥 만듦
  • 콘솔 암호
    • 자동 생성 암호를 체크하고, 다음 로그인 할 때 새 암호 생성이 권장 옵션
    • 내 aws 계정이고, 지금 생성하는 사용자는 내가 사용할 거라 그냥 사용자 지정 암호 선택하고 암호 새로 생성 옵션 선택 안함.

📌그룹 생성

그룹이 없으니까 그룹을 만들어야 함

그룹 이름은 admin

권한 정책은 AdministratorAccess를 추가하고 그룹 생성

방금 생성한 그룹에 체크하고 다음

태그 추가(메타데이터)

사용자 생성, 그룹 생성 및 사용자 배치 완료

📌그룹 및 사용자 확인



생성된 admin 그룹 확인 및 admin 그룹에 속한 mingyo 사용자 확인

📌사용자로 로그인하기

계정 ID와 별칭 설정은 IAM 대시보드에서 가능

성공

✔️IAM 정책(Policy)

IAM 정책은 JSON 문서로 작성.

  • Version: 정책 문서(JSON 문서)의 형식을 정의하는 버전 번호, 보통 "2012-10-17" 고정.

  • Id: 정책을 식별하는 ID, 선택사항

  • Statement: 하나 혹은 그 이상의 정책 문장 작성, 필수값

    • Sid: statement를 식별하는 ID, 선택사항.
    • Principal: 정책이 적용될 계정, 사용자, 역할로 구성.
    • Resource: 적용될 Action의 리소스 목록(AWS 서비스에서 관리되는 개체. ex) ec2, s3 등)
      • 리소스는 Amazon 리소스 이름 (ARN) 형식으로 지정됨. ARN은 리소스를 고유하게 식별하는 Amazon 리소스 식별자.
      • ex) "arn:aws:s3:::example_bucket/*"
    • Action: Effect에 기반해서 허용 혹은 거부될 API 호출 목록.
    • Effect: 특정 API에 대한 접근을 Allow 혹은 Deny.
    • Condition: Statement가 언제 적용될지를 결정, 선택사항.

쉽게 말해서, '누가, 어디의, 어떤 작업을 호출할 때, 어떻게' 이다.

📌IAM 정책 작성하기

사용자 그룹(admin)에서 mingyo 사용자 제거 후, IAM의 액세스 관리에 다시 접근할 수 있도록 작성

사용자 권한 추가

직접 정책 연결 후 IAM Read Only Access 정책만 추가

mingyo 로 접속해서 보면 IAM 서비스에 접근 가능함, 대신 Read Only Accees라 수정 및 추가는 불가능.

mingyo를 다시 admin 그룹으로 추가해서 원상복구

👉참고로 IAMReadOnlyAccess는 다음과 같이 되어있음

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:GenerateCredentialReport",
                "iam:GenerateServiceLastAccessedDetails",
                "iam:Get*",
                "iam:List*",
                "iam:SimulateCustomPolicy",
                "iam:SimulatePrincipalPolicy"
            ],
            "Resource": "*"
        }
    ]
}

Get, List은 Get, List로 시작하는 모든 것을 의미함.(GetUsers, GetGroups...)

👉IAM Policy는 직접 생성도 가능

profile
백엔드 개발자

0개의 댓글