티스토리 뷰

배경

시작은 오류 메세지였다.

Some controls have been disabled because you are missing the correct permission(s). The missing permission(s) are: aws-marketplace:ViewSubscriptions, aws-marketplace:Subscribe.

 

1. AWS MarketPlace에서 특정 제품을 구독하기 위해  'Continue to Subscribe' 버튼을 눌렀더니 아래와 같이 메세지가 나왔다.

2. 그 동안 클라우드 경험상 이건 분명 저 권한이 없기 때문에 뜬건 아닌 것 같다는 느낌이 들었고, 역시나 난 Administrator였다.

3. cloudtrail도 찾아보고(해당 리전에서 안나오면 글로벌 서비스가 수행되는 버니지나안 오하이오 중심으로 다시 찾아봐야된다 ㅠ) 이거저거 다 봤지만 결론적으로 아래와 같은 오류만 찾을 수 있었다.(하지만 역시 이또한 AWS에서 보여주는 오류랑은 관계가 없다.)

4. SCP를 봐도 차단 정책이 없었고, IP 기반 접근 정책을 위해 설정한 정책만이 존재했다.

5. 그렇다 위 정책이 문제였다.

분석

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "X.X.X.X/32"
                ]
            },
            "Bool": {
                "aws:ViaAWSService": "false"
            }
        }
    }
}

정책 자체는 간단하다. 출발지 IP가 X.X.X.X가 아니고 AWS서비스를 경유하지 않으면 Deny가 된다.

기본적으로 우리가 사용하는 대부분의 경우는 ViaAWSService가 false가 된다.(ViaAWSService에 대한 예시는 여기)

하지만, 조건에서 지정한 IP 범위가 일치하기 때문에 권한 사용이 가능하다.

실제로 전역 조건 키를 보면 아래와 같이 나와있다.

뭐 어찌됐건 대부분의 경우 ViaAWSService는 false가 리턴된다는걸 알았다.(사용자에게 부여되어 있는 정책에 서비스가 호출 할 일은 별로 없으니)

그럼 안되는 케이스는 하나로 압축된다.

MarketPlace에서 사용자의 권한을 이용해서(?) 요청이 들어가도록 구성된다.

 

자 증명의 시간이다. 먼저 아래와 같이 정책을 셋팅한다.

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "Bool": {
                "aws:ViaAWSService": "false"
            }
        }
    }
}

당연히 안된다. 놀라울게 전혀 없다. 그럼 이제 IP만으로 제어해서 시도해보자. 아마 될 것이다.

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "X.X.X.X/32"
                ]
            }
        }
    }
}

어림도 없다; 아니 이게 왜 안되지? IP만으로 제어하면 되는게 정상인데..? 그래서 CloudTrail에서 로그를 찾아봤다.(서울 리전에서 찾아보다가 안나와서 보니 문서에 글로벌 서비스라고 되어있어 버지니아에서 찾아봤다.)

근데 아무리 봐도 아래 오류를 제외하고는 찾을 수가 없었다.

일단 빠르게 결론을 내기 위해 정책을 아예 삭제하니까 아래와 같이 아주매우 잘된다 -_-

그래서 MarketPlace 문서를 뒤지기 시작했다. 하지만 문서를 기반으로는 도저히 결론을 내릴 수 없었다 ㅠㅠ

결국 개인적인 판단으로는 아래와 같다고 생각된다.

MarketPlace가 사용자의 정책을 사용해서 구독을 진행하도록 만들어져 있다.

 

물론 아닐 수도 있지만 일단 당장 현상을 봤을 땐 위와 같은 결론 외에 다른 결론을 내리는건 불가능하다고 생각된다.

여기저기 수소문해서 이 글을 업데이트 할 수 있는 날이 왔으면 좋겠다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함