Cloud Infra Architecture (AWS)/AWS SAA-C03

IAM - Policy(정책)이란? (이론 및 실습)

seongduck 2022. 12. 27. 23:16

IAM 정책이란?


  • AWS 리소스에 대한 액세스 권한을 정의한 것
  • 사용자, 그룹, 역할에 이 정책을 연결하여 사용
  • 정책외에 요청은 모두 거부(Deny)된다.
  • JSON 형태로 이루어져 있음

 

 

JSON 구조 자세히 살펴보기


1. Effect

  • Statement에 대한 Access 또는 Deny
  • Effect뒤에 Access 혹은 Deny를 적어서 사용

2. Action

  • 정책에 대한 작업 목록
  • EC2 생성 및 관련 허용 가능

3. Resource

  • 권한이 적용되는 리소스

4. Condition

  • 정책이 적용되는 세부조건
  • 특정 ip 주소 및 리전에서만 적용되도록 할 수 있는 옵션사항

 

 

JSON 정책 구문


  • Version은 Language에 대한 날짜이고 Statement문으로 하나로 묶여있다.
  • lambda 서비스에 대한 모든 행위를 Allow하고 그에 대한 모든 Resouce를 Allow한다.
  • 즉, Lambda  서비스에 대한 정책의 명시
  • 기본적으로 모든 권한을 허용

 

  • Deny는 함수 생성 및 삭제를 거부한다.
  • 모든 리소스에 대해 함수의 생성 및 삭제를 거부한다.
  • 조건은 이 220.100.16.0/20 IP 네트워크로 부터 함수 생성 및 삭제는 권한을 거부한다.

 

이들을 사용자 및 그룹에 적용할 수 있다.

다음 예시를 또 살펴보자

  • 정책은 두가지로 이루어져 있다. 
  • ec2에 대한 정책이고 TerminateInstances에 대해는 Allow 한다.
  • 모든 Resource에 대해 Allow 하고 조건은 Source Ip가 10.100.100.0/24 의 네트워크 일때 허용한다.
  • 즉,  10.100.100.0/24 의 네트워크 일 경우에만 ec2 인스턴스를 종료할 수 있음

 

  • 모든 ec2에 대해 Deny 한다.
  • 또한 모든 Resource에 대해 서도 Deny한다.
  • 조건은 us-east-1의 Region가 아닌것에 대해 이뤄나는 것에서 Deny
  • 즉, us-east-1 Region이 아닌 경우에는 모든 작업이 거부된다.

 

 

IAM - 권한 경계 (Permission Boundary)


  • IAM 사용자 또는 역할에 최대 권한을 제한하는 기능

  • S3와 Cloudwatch, ec2에 대한 모든 권한을 허용하는 것
  • 즉 이 IAM 사용자에게 이 3가지만 관리할 수 있도록 정책을 만든 것 (다른 작업은 할 수 없음)

 

 

IAM 권한 및 정책 실습 (권한 삭제 및 개별 부여)


 

Root 계정으로 로그인하여 진행한다.

IAM으로 들어가 사용자 그룹을 클릭 후 만들어 놓은 그룹으로 들어간다.

 

만들어 놓은 사용자를 체크하고 제거한다.

 

그리고 사용자에 들어가 사용자 이름을 클릭하면

 

권한이 지워진 것을 알 수 있다.

다시 권한 추가를 눌러 개별 권한을 부여해주자

 

정책은 JSON 형식으로 되어 있는데 살펴보면

ec2에 대한 모든 권한을 Allow하고 모든 Resource에 대해서도 Allow한다.

정책 요약을 통해 간편하게 확인도 가능하다.

그리고 권한을 추가해준다.

 

잘 완료된 것을 확인할 수 있다.

이 계정에 들어가서 정책이 잘 적용됐는지 확인해보자

 

IAM 계정 권한 확인


보다시피 EC2를 제외한 모든 서비스는 정책에 따라 제한되고 있다.

 

반면 EC2에 대한 모든 권한을 부여했기 때문에 EC2 부분은 잘 되는 것을 확인할 수 있다.

 

EC2도 잘 생성된 것을 확인할 수 있다.

 

Root 계정에서 Permissions boundary를 통한 최대 권한 제한하기


 

클릭 후에 [AmazonEC2ReadOnlyAccess]를 선택해서 정책을 부여해준다.

위와 같이 설정이 된 것을 볼 수 있다.

이렇게 설정을 했으니 실제로 적용이 됐는지 확인해보자!

 

IAM 계정으로 EC2 시작해서 확인해보기


이렇게 시작이 실패한 것을 볼 수 있다.

위 권한 경계에서 읽기 용도로만 정책을 부여했으므로 당연히 생성은 불가능하다.

 

 

IAM 계정으로 인스턴스 종료하기


종료는 삭제라는 뜻이다.

 

당연히 삭제할 수 없다!! 삭제권한이 없기 때문이다!

 

그러면 Root에서 다시 이 정책을 지우고 다시해보자

 

잘 종료되는 것을 확인할 수 있다.

 

  • 즉 정책은 AWS Resourec에 Access 권한을 설정하는 것이며 사용자 및 그룹별로 설정할 수 있다.
  • 경계설정으로 최대 설정할 수 있으며 정책 문법들은 JSON 형태로 저장되어 있다.
  • 물론 이 정책은 이용자가 스스로 만들 수 있다. (JSON 코딩 혹인 시각적 편집기)