IAM (1)

Jihun Kim·2022년 2월 15일
0

aws solutions architect

목록 보기
2/57
post-thumbnail

IAM 계정에 대해 알아 보기 전에 다음 사항을 짚고 넘어가는 것이 좋을 것 같다.

Q: AdministratorAccess 정책은 루트 계정에서의 권한과 같아 보이는데 굳이 IAM 계정을 만들 필요가 있을까?
A: 루트 계정과 IAM admin 권한에는 가장 큰 차이점이 존재하는데 이는 전계정에 대한 예산 관리 권한과 특정 S3 버킷에 대한 MFA Delete 권한을 지닌다. 따라서, 루트 계정은 보호할 필요가 있다.



IAM 계정 생성하기

  • IAM 계정을 생성하면 이는 지역이 Global이 된다.
  • IAM 계정에서는 group을 생성할 수 있는데, 이 그룹에는 사용자만 들어갈 수 있다.
    - 즉, 다른 그룹이 속할 수는 없다.
  • 유저는 어느 그룹에 속하지 않을 수도 있고 여러 그룹에 속할 수도 있다.
  • 만약 그룹에 정책을 연결하게 되면 해당 그룹에 속한 유저에게 같은 정책이 부여 된다.
    - 그룹에 속하지 않은 유저에게는 inline policy를 부여할 수 있는데 이는 오직 사용자에게만 연결 되는 정책을 의미한다.
    - 만약 한 유저가 두 그룹에 속한다면 두 그룹의 정책 모두를 갖게 된다.

Account Alias

IAM account ID는 기억하기 어렵기 때문에 Account Alias를 생성할 수 있다.
아래와 같이 IAM 대시보드에서 생성한다.

그러면 고유한 별칭이 생성 되며 해당 별칭을 이용한 URL로 이동해 IAM 계정에 로그인할 수 있게 된다.



IAM Policies

IAM 정책은 하나 이상의 AWS 리소스와 관련된 일련의 허용 동작 및 불허 동작을 정리한 문서이다.

Structure

  • 버전: 숫자로 이루어져 있다.
    - 가령, "2012-10-17"과 같은 버전 번호가 있는데 이는 Policy language version을 의미한다.
  • Id: 정책을 식별하기 위한 식별자
    - 선택적으로 사용 가능하다.
  • Statement: 1개 이상이 존재할 수 있다.
    - Sid: statement의 식별자로 선택적으로 사용 가능하다.
    - Effect: 이는 statement가 특정 API에 접근하는 것을 허용하거나 거부한다는 것을 의미한다(Allow/Deny).
    - Principal: 이 정책이 적용될 계정 또는 사용자, 역할로 구성된다(예시에서는 root account를 볼 수 있다).
    - Action: 이는 Effect가 Allow인 지 혹은 Deny인 지에 따라서 적용되는 효과가 다른데 이 때 어떤 API가 호출될 지를 결정한다.
    - Resource: 작업이 적용될 리소스 목록이다.
    - Condition: 예시에는 나와 있지 않지만 언제 해당 정책이 effect할 지를 결정하는 조건으로 선택적으로 사용이 가능하다.

만약에 값이 "(별표시인데 화면상에 표시가 안된다)" 로 들어가 있다면 이는 어떤 값이든 된다 는 뜻이다.
가령, "Action": "(별표시*)"라면 이는 "어떤 액션이든 가능함"이라는 뜻이다.

Create Policy

  • 사용자가 직접 원하는 정책을 생성할 수도 있다.
  • 이 때, Visual Editor에서 원하는 Effect, Action을 생성할 경우 JSON으로 보면 아래와 같이 "Sid"가 "VisualEditor0"으로 들어가게 된다.

상충하는 Effect

  • 가령 하나의 정책은 S3 버킷 생성을 허용하고, 다른 정책은 이를 불허할 경우 AWS는 "불허" 기준을 따르도록 한다.


권한 할당 예제

<예제 1>

  • 이와 같이 Policy와 Permission Boundary가 정의되어 있을 때, Policy에서는 S3 버킷에 대한 모든 Action을 허용했다고 하더라도 Permission Boundary에 의해 S3 요청이 모두 차단된다.........
    - 왜냐하면, Permission Boundary에는 S3에 대한 접근이 포함되어 있지 않기 때문이다. 즉, 묵시적 거부에 해당한다.
  • 그렇기 때문에, 아래와 같은 결과를 확인하게 된다.

<예제 2>

  • 이 경우, Policy에서는 명시적으로 log에 대한 것만 허용하고 있다. 반면, Permissioin에서는 S3에 대한 Get 요청이 허용되어 있다.
    - 이렇게 되면 Permission Boundary에서는 허용 했더라도 Policy에서 묵시적으로 Deny 하고 있는 것이다.
  • 그렇기 때문에 결과는 아래와 같다.

IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! 세션에서 참고 했습니다.

profile
쿄쿄

0개의 댓글