[AWS] IAM Policy

송준섭 Junseop Song·2024년 3월 26일
0
post-thumbnail


AWS에서 인증과 권한 부여(인가)의 주체는?
인증의 주체: User
인가의 주체: IAM Policy
IAM Policy는 User에 붙일 수도 있고, Group, Role에도 붙을 수도 있음

IAM Policy가 Role에도 붙을 수 있다는 것은 Role도 인증의 주체라는 것
Role은 임시 자격 증명(Temporary Credential, User는 Long Term Credential)
즉 아이디, 비밀번호로 인증하는 유저와 달리 Role은 만료 시간이 정해져 있음
Role은 다른 AWS 서비스들이 권한을 부여받고 싶을 때 사용
ex) EC2가 S3에 접근하고 싶다, Lambda가 S3에 접근하고 싶다

IAM Group은 공통의 권한을 가지는 사용자의 집합
그룹 생성 후 IAM Policy 연결, 사용자 추가 → 사용자는 그릅의 Policy 권한을 부여받음

IAM User에게 Policy를 직접 추가해줄 수도 있음
IAM User 인증은 두 가지 방식이 있음
1. 아이디와 패스워드를 가지고 인증(+ MFA 디바이스)
2. 액세스 키, 시크릿 액세스 키를 이용한 키 방식 → 주로 개발이나 Shell, CLI 환경에서 활용

IAM Policy는 JSON 형식의 문서
AWS 서비스의 접근 권한을 세부적으로 관리

IAM Policy 종류

  • AWS 관리 정책 (사전 정의된 권한 세트)
    AWS가 미리 만들어 놓은 관리 정책, 사용자는 편집 불가
  • 사용자 관리 정책 (사용자 지정 권한 세트)
    사용자가 직접 생성한 정책
    기존 정책으로부터 생성 및 수정 또는 직접 생성 가능
    GUI 편집기(쉬움) / JSON 편집기(어려움) 모두 사용 가능
  • JSON 예시들
    • Administrator Access Policy JSON 예시
    {
      "Version": "2012-10-17",  // 버전은 꼭 지정된 날짜를 써야 함
      "Statement": [
        {
          "Effect": "Allow",  // 허용 또는 거부
          "Action": "*",  // 허용하는 동작 API
          "Resource": "*"  // 허용하는 AWS 리소스 (EC2, S3, ,,,)
        }
      ]
    }
    • Power User Policy JSON 예시
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "NotAction": "iam:*",  // IAM 서비스 관련 API들은 해당되지 않음
          "Resource": "*"
        }
      ]
    }  // 현재는 이 버전에서 패스워드 변경 등 몇 정책은 허용됨
    • S3 Full Permission JSON 예시
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "s3:*",  // S3 서비스 관련 API들만 허용
          "Resource": "*"
        }
      ]
    }
    • S3 특정 버킷 읽기 전용 정책
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [  // 보통 읽기 API들은 Get, List로 시작, 즉 read only 정책
            "s3:Get*",
            "s3:List*"
          ],
          "Resource": [  // S3 저장소의 mydata라는 버켓 안에 모든 리소스 허용
            "arn:ars:s3:::mydata",
            "arn:ars:s3:::mydata/*"
          ]
        }
      ]
    }
          

위 두가지 외 1회성 정책인 Inline 정책도 존재

0개의 댓글