AWS Cross-account 기능을 이용한 S3 버킷권한 타계정 이전

2020-02-20

.

Data_Engineering_TIL_(20200220)

1. 실습목표

A 계정의 특정 S3 버킷을 B 계정이 접근하여 사용할 수 있도록 권한부여

2. 실습 상세내용

step 1) A 계정에서 특정 S3에 대한 접근 정책생성

step 1-1) A계정의 IAM 콘솔접속, ‘정책 생성’ 클릭

step 1-2) 메뉴에서 JSON을 클릭하고 하단에 아래와 같이 코드를 작성

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::minman" ## 여기서 minman은 B계정에서 접근하고 싶은 A계정의 버킷이름이다.
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::minman/*"
        }
    ]
}

step 1-3) 정책이름 부여 후 생성

step 2) B계정이 A계정으로 접근할 수 있는 역할 생성

step 2-1) A계정의 IAM 콘솔에서 ‘역할 만들기’ 클릭

step 2-2) ‘다른 AWS 계정’ 클릭

step 2-3) ‘계정 ID’에 B 계정의 ‘사용자 ARN’ 의 숫자 12자리 입력 후 ‘다음:권한’ 클릭

ex) B 계정의 ARN arn:aws:iam::123456789012:user/minsu.park 에서 123456789012 를 말함

step 2-4) step 1)에서 생성한 정책 이름을 검색하여 체크 후 ‘다음:태그’ 클릭

step 2-5) ‘다음:검토’ 클릭 후 역할 이름 부여하고 ‘역할 만들기’ 클릭

step 2-6) IAM 콘솔에서 역할 메뉴로 들어가서 방금 생성한 역할 클릭 아래와 같은 화면에서 ‘신뢰 관계’ -> ‘신뢰 관계 편집’ 클릭

1

step 2-7) 아래와 같이 편집화면에서 “AWS”: .. 이후 부분에 B 계정의 ARN arn:aws:iam::123456789012:user/minsu.park 으로 편집

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/minsu.park" ## 여기에 있는 줄을 B 계정의 ARN을 입력
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

step 2-8) ‘신뢰 정책 업데이트’ 클릭

step 3) B 계정에서 A계정으로 접근할 수 있는 역할을 부여받기 위한 정책 연결

step 3-1) 아래 그림과 같이 B 계정의 IAM 사용자 메뉴에서 우측에 ‘인라인 정책 추가’ 클릭

2

step 3-2) JSON 메뉴를 클릭하고 아래 그림과 같이 코드 작성 후 정책생성

“Resource”: “arn:aws:iam::98765432112:role/crossactest” 이부분은 step 2)에서 만든 역할의 ‘역할 ARN’을 말하는 것이며 step 2-6) 아래 그림에서 ‘역할 ARN’ 을 복붙한다.

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::98765432112:role/crossactest"
    }
}

step 4) B계정에서 A계정의 버킷으로 접근하는 테스트

step 4-1) 다시 A계정으로 돌아가서 step 2)에서 만든 역할로 들어가면 아래 그림과 같이 ‘콘솔에서 역할을 전환할 수 있는 사용자에게 이 링크 제공’ 부분에서 옆에 url 주소를 컨트롤 c로 복사한다.

4

step 4-2) B 계정으로 돌아와서 브라우저 상단에 새창을 띄우고 복사한 URL 주소를 붙어넣기하고 접속하면 아래와 같은 그림의 화면이 나온다. 그러면 하단에 ‘역할 전환’을 클릭한다.

3

step 4-3) 다음과 같이 역할 전환된 화면에서 B계정에서 A계정의 특정 s3 버킷을 접근할 수 있는 것을 확인할 수 있다.

버킷안의 특정 객체를 삭제하거나 수정도 할 수 있다.

5