제목에 Cmdlet과 간략한 설명을 같이 쓰려니 길어지네요. 만들기도 거시기한 내용입니다만, 두 세줄 라인을 쳐야 하는 것을 한 줄로 줄여주는 것만으로 만족하는 빅두입니다. ㅋㅋㅋ
먼저 AWS 페이지에서 제공하는 AWS IP Address Ranges 페이지를 살펴보시죠
AWS IP Address Ranges : http://docs.aws.amazon.com/ko_kr/general/latest/gr/aws-ip-ranges.html
여러가지 설명이 있습니다만, 한마디로 줄이면 "AWS에서 사용하는 ip-ranges를 담고있는 .json 파일을 제공한다"는 것입니다. 그럼 우리는 이 ip-ranges.json 파일을 다운로드 받아서 Powershell에서 불러와서 Powershell에서 쓸 수 있는 Object형식으로 Convert해서 Filter를 적용해 봐야 그제서야 ip-ranges를 볼 수 있습니다.
쓰고나니 한 3~4줄정도의 cmdlet을 쓰면 되겠네요. 먼저 ip-ranges.json 파일을 다운로드 받아 Powershell에 불러오는 방법을 생각해 봅시다. Linux를 사용하시는 분들은 curl 이라는 간단한 명령어를 생각하실 텐데요. 당연히 Powershell에도 해당 기능의 cmdlet이 있습니다. 놀랍지 않습니까?
그럼 확인해 봅시다.
PS> Invoke-WebRequest https://ip-ranges.amazonaws.com/ip-ranges.json
역시 Powershell답게 Output이 Object형식으로 생성되네요. 우리가 원하는 정보는 누가 봐도 json 형식인 Content겠네요. 그럼 위 명령을 변수에 담고, Content 값만 출력 받아 json형식을 Object형식으로 convert해 봅시다.
PS> $IP_ranges_url = Invoke-WebRequest https://ip-ranges.amazonaws.com/ip-ranges.json
PS> $IP_ranges_url.content |
ConvertFrom-Json
Convert된 내용을 보니 Prefixes의 정보가 우리가 알고 싶어하는 정보인 것 같네요. 그럼 변수에 다시 저장하여 Prefixes 값을 출력해 봅시다.
PS> $IP_ranges_json = $IP_ranges_url.content | ConvertFrom-Json
PS> $IP_ranges_json.prefixes
어마어마하게 나오네요. Count함수로 확인해 보니 542개 ip-ranges 가 확인됩니다. 그럼 이쯤에서 AWS 문서를 다시 확인해 보겠습니다. 저희가 확인해 볼 내용은 다음 내용입니다.
위 결과값에서 우리가 filter를 적용할 수 있는 부분들에 대한 내용인데요. Ip_prefix는 대략적인 IP대역을 찾을 때 쓸 수 있을것 같고, Region과 Service에 대한 내용들은 지정하여 확인해 보실 수 있겠습니다. 그런데 EC2, CloudFront, Route53, 이외의 서비스들은 정확하게 ip_prefix를 가지고 있지 않아 보이네요? AMAZON이라는 이름 아래에 공통으로 쓰는 것 처럼 보입니다. 제가 느끼기에는 AWS에서 Managed 해주는 서비스들은 전부 AMAZON이라는 Service로 묶어둔 것 같습니다.
위에서 정의한 내용들을 조금 편하게 사용하기 위하여 Get-AWSIpRanges.ps1 을 만들어 보았습니다. 개인적으로 쓰려고 만든거라 서명되지 않은 script 입니다. Powershell 설명 그대로 작성해 보겠습니다.
이름
Get-AWSIpRanges
개요
AWS에서 제공하는 ip-ranges.json 파일을 불러와서 입력받은 값으로 필터링하여 CIDR block을 출력한다.
구문
Get-AWSIpRanges [-All] <CommonParameters>
Get-AWSIpRanges [-Regions <Striong[]>] [-Services <Striong[]>] <CommonParameters>
Get-AWSIpRanges [-Likeip <Striong>] <CommonParameters>
Get-AWSIpRanges [-Rangeip <Striong>] <CommonParameters>
설명
AWS에서 제공하는 ip-ranges.json 파일을 불러와서 입력받은 값으로 필터링하여 CIDR block을 출력한다.
매개 변수
-All [<SwitchParameter>]
설명.
-Regions <String[]>
설명.
Valid values: ap-northeast-1 | ap-southeast-1 | ap-southeast-2 | cn-north-1 | eu-central-1 | eu-west-1 | sa-east-1 | us-east-1 | us-gov-west-1 | us-west-1 | us-west-2 | GLOBAL
-Services <String[]>
설명.
Valid values: AMAZON | EC2 | CLOUDFRONT | ROUTE53 | ROUTE53_HEALTHCHECKS
-Likeip <String>
설명.
-Rangeip <String>
설명.
<CommonParameters>
이 cmdlet은 Verbose, Debug, ErrorAction, ErrorVariable,
WarningAction, WarningVariable, OutBuffer, PipelineVariable 및
OutVariable과 같은 일반 매개 변수를 지원합니다. 자세한 내용은
about_CommonParameters(http://go.microsoft.com/fwlink/?LinkID=113216)를 참조하십시오.
-------------------------- EXAMPLE 1 --------------------------
PS C:\>Get-AWSIpRanges
AWS에서 제공하는 ip-ranges를 전부 보여줍니다.
-------------------------- EXAMPLE 2 --------------------------
PS C:\>Get-AWSIpRanges -All
EXAMPLE 1과 같이 AWS에서 제공하는 ip-ranges를 전부 보여줍니다.
-------------------------- EXAMPLE 3 --------------------------
PS C:\>Get-AWSIpRanges -Regions ap-northeast-1
지정한 Region에 해당하는 ip-ranges를 보여줍니다.
사용 가능한 값: ap-northeast-1 | ap-southeast-1 | ap-southeast-2 | cn-north-1 | eu-central-1 | eu-west-1 |
sa-east-1 | us-east-1 | us-gov-west-1 | us-west-1 | us-west-2 | GLOBAL
-------------------------- EXAMPLE 4 --------------------------
PS C:\>Get-AWSIpRanges -Services EC2
지정한 Services에 해당하는 ip-ranges를 보여줍니다.
사용 가능한 값: AMAZON | EC2 | CLOUDFRONT | ROUTE53 | ROUTE53_HEALTHCHECKS
-------------------------- EXAMPLE 5 --------------------------
PS C:\>Get-AWSIpRanges -Regions ap-northeast-1 -Services EC2
지정한 Region과 Services에 해당하는 ip-ranges를 보여줍니다.
-------------------------- EXAMPLE 6 --------------------------
PS C:\>Get-AWSIpRanges -Likeip "54."
입력한 문자열 값을 포함하는 ip-ranges를 보여줍니다. 입력한 문자열이 중간에 위치하면 찾지 못합니다.
위의 입력 결과는 내부적으로 "54.*" 으로 입력됩니다.
-------------------------- EXAMPLE 7 --------------------------
PS C:\>Get-AWSIpRanges -Rangeip 54.240.250.229
입력한 IP를 포함하는 ip-Range를 보여줍니다.
ip_prefix region service
--------- ------ -------
54.240.248.0/21 us-west-2 AMAZON
파일 첨부해 드리겠습니다. (원활한 다운로드를 위해 압축하였습니다.) 앞으로 어떻게 공유해야할지가 고민이네요...
첨부파일 :
'AWS > 내맘대로 AWS cmdlet' 카테고리의 다른 글
#1 [서론] 이 게시판은 뭔가요? (0) | 2016.01.25 |
---|