ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] aws 특정 EC2, S3에서 하나의 계정에만 접근 허용하기, IAM 정책 JSON, arn 문법구조
    TIL 2024. 2. 1. 17:07

     

     


    사용자, 그룹, 역할, 정책 


    역할과 정책의 차이점)

    역할은 일정시간이 지나면 자동으로 역할이 해제된다(임시적)

    반면 정책을 부여받았다면 정책을 다시 회수하는 작업이 필요하다






    IAM policy JSON 구조)


    전체 정책에 대한 Optional top-level elements가 있고, 이에 여러개의 Statement를 추가하는 형태.
    하나의 Statement에는 여러개의 permission 정보가 포함되어있다


    Optional top-level element)
    version : iam policy JSON 문서 양식 버전
    statement (array) : 권한 부여 규칙의 나열
    id : 정책 식별자를 지정



    IAM policy 구조)

    Effect : 명시된 정책에 대한 허용 or 차단 (allow or deny)
    ㄴ effect가 allow라면 특정 작업을 허용하는 정책

    principal : 접근을 허용 or 차단하고자 하는 주체 (사용자, 역할, aws 계정)
    ㄴ리소스 기반 정책에서만 사용

    action : 정책에서 수행가능한 작업
    ㄴ*은 해당 서비스의 모든작업
    ㄴs3:GetObject는 버킷에서 객체를 읽을 수 있는 작업

    resource : 정책이 허용 or 차단되는 자원 (s3의 버킷, ec2의 인스턴스)
    ㄴ resource를 사용하여 특정 서비스나 리소스에 대한 작업이 수행되도록 정책을 제한 할 수 있다
    ㄴ특정 버킷에 대한 작업을 지정하기위해 해당 버킷의 ARN을 resource로 사용할 수 있다


    principal : 정책이 적용되는 조건
    ㄴ예시) 특정 IP주소에서만 허용되도록 하는 조건



    팁)
    -나열되는 요소들의 순서는 중요하지않다. Resource가 먼저오든 action이 먼저 오든 상관없다

    -정책에서 condition 요소는 지정하지 않아도된다.

    - 하나의 요소내에 여러개를 지정해줄때는 리스트 이용

    -action / not action, principal / not principal, resource / notresource는 택일해야한다






    자격증명 기반정책과 리소스기반 정책)

    IAM 정책은 사용자에게 부여하는 방식을 이용할 수 도 있지만, 
    리소스에 부여하는 방식을 이용할 수도 있다.



    -자격 증명기반정책(identity-based policies) : User, Group, Role에 할당하는 IAM 정책
    ㄴ 특정 사용자에게 정책을 할당하는 방식이므로 principal을 기재하지 않는다



    -리소스 기반 정책 : 리소스 (S3 버킷, ec2 인스턴스)에 할당하는 IAM 정책
    ㄴ어떤 사용자에게 정책을 할당할지 써줘야하므로 principal을 기재한다



    arn 문법구조)

     arn (Amazon Resource Name) : AWS의 모든 리소스의 고유 아이디

    arn의 형식)
    ㄴarn:partition:service:region:account-id:resource-id

    partition : 리소스가 존재하는 aws 리전의 그룹

    service : aws 서비스 (s3)

    region : 리전

    account-id : aws 계정 id(123456789012), 리소스를 소유하고있는 aws 계정의 ID로 하이픈 없이 표기

    resource-id : 리소스이름 or 리소스 ID or 리소스 경로, *도 사용가능



    리소스마다 arn 형식이 다를 수 있고, region, account-id가 생략될 수도 있다

    s3버킷 arn에는 리전과 계정번호를 쓸 필요 없다

    arn:aws:s3:::bucket_name
    arn:aws:s3:::bucket_name/key_name





Designed by Tistory.