

# 튜토리얼: BYOIP 프리픽스에 대한 위임된 RPKI 설정
<a name="tutorials-byoip-bgp-security"></a>

이 튜토리얼에서는 모든 BGP 경로 보호 기능을 처음부터 끝까지 상세히 다룹니다. 어느 단계에서든 작업을 중단하더라도 설정한 항목을 그대로 사용할 수 있습니다. 1단계 및 2단계에서는 RIR 작업이 필요하지 않습니다. 3단계 이후부터는 해당 RIR과의 일회성 초기 설정 작업이 필요합니다. BGP 경로 보호 개념, 티어 요구 사항 및 지원 대상 RIR에 관한 자세한 내용은 [BGP 경로 보호 모니터링](monitor-bgp-route-security.md)을(를) 참조하세요.

## 사전 조건
<a name="tutorials-byoip-bgp-security-prereqs"></a>
+ 고급 티어에서 생성된 IPAM.
+ IPAM 풀에 프로비저닝된 1개 이상의 BYOIP 프리픽스.
+ 리전 인터넷 레지스트리 계정(ARIN, RIPE, APNIC 또는 LACNIC) 접근 권한.

## 1단계: BGP 경로 확인
<a name="tutorials-byoip-bgp-security-step1"></a>

BYOIP 프리픽스를 IPAM에 프로비저닝한 후, 중앙 대시보드에서 전파된 모든 경로를 확인할 수 있습니다.

------
#### [ AWS Management Console ]

**BGP 경로를 확인하는 방법**

1. [https://console.aws.amazon.com/ipam/](https://console.aws.amazon.com/ipam/)에서 IPAM 콘솔을 엽니다.

1. 탐색 탐색창에서 **IPAM**을(를) 선택한 다음 대상 IPAM을 선택합니다.

1. **모니터링**에서 **라우팅 모니터링**을(를) 선택합니다.

대시보드에는 프리픽스, 로캘, 전파 상태, ASN, RPKI 유효성, ROA 강도 및 경로 중복 정보를 포함한 모든 BYOIP 경로가 표시됩니다.

------
#### [ Command line ]

[get-ipam-discovered-routes](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-ipam-discovered-routes.html) 명령어를 사용하여 발견된 경로를 확인합니다. 이 명령어는 프리 티어 및 고급 티어 고객 모두 이용 가능합니다.

```
aws ec2 get-ipam-discovered-routes \
    --ipam-resource-discovery-id ipam-res-disco-0365d2977fc1672fe \
    --resource-region us-west-2
```

다음은 예제 출력입니다.

```
{
    "IpamDiscoveredRoutes": [
        {
            "IpamResourceDiscoveryId": "ipam-res-disco-0365d2977fc1672fe",
            "ResourceRegion": "us-west-2",
            "ResourceOwnerId": "123456789012",
            "Cidr": "203.0.113.0/24",
            "Asn": "64512",
            "State": "advertised",
            "AdvertisementType": "regional",
            "NetworkBorderGroup": "us-west-2",
            "PoolId": "ipv4pool-ec2-0a1b2c3d4e5f6g7h8",
            "IpamPoolId": "ipam-pool-0da89c821626f1e4b",
            "SampleTime": "2026-03-10T15:30:00+00:00"
        }
    ]
}
```

------

## 2단계: 라우팅 보호 조사 결과 검토
<a name="tutorials-byoip-bgp-security-step2"></a>

고급 티어 고객의 경우, IPAM이 게시된 ROA 데이터를 바탕으로 경로를 평가하고 [get-ipam-route-protection-findings](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-ipam-route-protection-findings.html) 명령어을 통해 결과를 출력합니다.

**참고**  
get-ipam-route-protection-findings 명령을 사용하려면 고급 티어가 필요합니다. 프리 티어 고객에게는 `UnsupportedOperation` 오류가 발생합니다.

1. 모든 검색 결과를 조회합니다.

   ```
   aws ec2 get-ipam-route-protection-findings \
       --ipam-id ipam-0a1b2c3d4e5f6g7h8
   ```

1. 유효하지 않거나 누락된 ROA 조건으로 필터링합니다.

   ```
   aws ec2 get-ipam-route-protection-findings \
       --ipam-id ipam-0a1b2c3d4e5f6g7h8 \
       --filters "Name=rpki-status,Values=invalid,unknown"
   ```

1. 특정 리전 내 상태 값에 따라 필터링합니다.

   ```
   aws ec2 get-ipam-route-protection-findings \
       --ipam-id ipam-0a1b2c3d4e5f6g7h8 \
       --filters "Name=rpki-status,Values=invalid" "Name=resource-region,Values=us-west-2"
   ```

다음은 예제 출력입니다.

```
{
    "IpamId": "ipam-0a1b2c3d4e5f6g7h8",
    "RouteProtectionFindings": [
        {
            "ResourceOwnerId": "123456789012",
            "ResourceRegion": "us-west-2",
            "IpamPoolId": "ipam-pool-0da89c821626f1e4b",
            "Cidr": "203.0.113.0/24",
            "State": "advertised",
            "AdvertisementType": "regional",
            "NetworkBorderGroup": "us-west-2",
            "PoolId": "ipv4pool-ec2-0a1b2c3d4e5f6g7h8",
            "Asn": "64512",
            "RpkiStatus": "valid",
            "RpkiStrength": "strict",
            "Roas": [
                {
                    "Asn": "64512",
                    "Prefix": "203.0.113.0/24",
                    "MaxLength": 24,
                    "Match": true,
                    "Expiration": "2027-06-15T00:00:00Z"
                }
            ],
            "RouteOverlaps": [
                {
                    "Prefix": "203.0.113.128/25",
                    "Asn": "64513",
                    "DetectedAt": "2026-03-10T15:45:00+00:00"
                }
            ],
            "SampleTime": "2026-03-10T15:30:00+00:00",
            "RoaSampleTime": "2026-03-10T16:00:00+00:00"
        }
    ]
}
```

유효한 필터 이름은 `cidr`, `account-id`, `resource-region`, `byoip-cidr-state`, `advertisement-type`, `network-border-group`, `ipam-pool-id`, `rpki-status` 및 `asn`입니다. 이러한 EC2 스타일의 필터 이름이 반환되는 필드명과 항상 일치하지는 않습니다. `account-id` 조건으로 필터링하더라도 응답에는 `ResourceOwnerId` 필드가 반환되고, `byoip-cidr-state` 조건으로 필터링하지만 실제 필드명은 `State`입니다. ROA 강도 항목은 필터링할 수 없습니다.

## 3단계: 위임된 RPKI 구성
<a name="tutorials-byoip-bgp-security-step3"></a>

위임된 RPKI를 사용하면 AWS에 사용자를 대리하여 ROA를 관리할 권한을 부여할 수 있습니다.

1. **인터넷 레지스트리 연결 생성.**

   ```
   aws ec2 create-ipam-internet-registry-association --region us-east-1 \
       --ipam-id ipam-0de83dba6694560a9 \
       --rir ARIN --org-handle my-arin-org
   ```

   다음은 예제 출력입니다.

   ```
   {
       "IpamInternetRegistryAssociation": {
           "IpamInternetRegistryAssociationId": "ipam-internet-registry-assoc-036486dfa6af58ee0",
           "State": "create-in-progress"
       }
   }
   ```

   `pending-enable` 상태가 될 때까지 다음 명령어를 실행합니다.

   ```
   aws ec2 describe-ipam-internet-registry-associations --region us-east-1 \
       --ipam-internet-registry-association-ids ipam-internet-registry-assoc-036486dfa6af58ee0
   ```

   `pending-enable` 상태로 바뀌면 ChildRequestXml을 RIR에 제출할 준비가 완료된 것입니다. IPAM은 공개된 VRP(검증된 ROA 페이로드) 데이터를 기반으로 ROA를 스테이징합니다. 해당 항목은 보류 상태이며 인터넷 레지스트리 연결이 활성화되면 적용됩니다.

1. **스테이징된 ROA 검토.**

   ```
   aws ec2 get-ipam-route-origin-authorizations --region us-east-1 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0
   ```

   다음은 예제 출력입니다.

   ```
   {
       "Roas": [
           {
               "prefix": "18.96.0.0/14",
               "asn": "77221",
               "maxLength": "24",
               "state": "pending-activate"
           }
       ]
   }
   ```

1. **인터넷 레지스트리 연결 활성화.**

   ChildRequestXml 항목을 복사하여 RIR 포털에 입력하고 위임 요청을 제출합니다. RIR이 부모 응답 XML을 반환합니다. 해당 응답에서 RpkiVersion, ServiceUri, ChildHandle, ParentHandle, ParentBpkiTa 필드값을 추출합니다. 그런 다음 아래 명령어를 실행합니다.

   ```
   aws ec2 enable-ipam-internet-registry-association --region us-east-1 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0 \
       --rpki-version "..." \
       --service-uri "..." \
       --child-handle "..." \
       --parent-handle "..." \
       --parent-bpki-ta "..."
   ```

   다음은 예제 출력입니다.

   ```
   {
       "IpamInternetRegistryAssociation": {
           "IpamInternetRegistryAssociationId": "ipam-internet-registry-assoc-036486dfa6af58ee0",
           "State": "enable-in-progress"
       }
   }
   ```

   `enable-complete`상태가 될 때까지 다음 명령어를 실행합니다.

   ```
   aws ec2 describe-ipam-internet-registry-associations --region us-east-1 \
       --ipam-internet-registry-association-ids ipam-internet-registry-assoc-036486dfa6af58ee0
   ```

   `enable-complete` 상태가 되면 스테이징된 ROA가 `create-complete` 상태로 전환됩니다. 이제 AWS에서 이 연결에 속한 모든 CIDR의 ROA 라이프사이클을 관리합니다.

1. **연결된 CIDR 확인.**

   ```
   aws ec2 get-ipam-internet-registry-association-cidrs --region us-east-1 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0
   ```

   다음은 예제 출력입니다.

   ```
   {
       "IpamInternetRegistryAssociationCidrs": [
           {
               "Cidr": "18.96.0.0/14",
               "LastObservedAt": "2026-07-30T18:00:00.000Z"
           }
       ]
   }
   ```

1. **연결된 ASN 확인.**

   ```
   aws ec2 get-ipam-internet-registry-association-asns --region us-east-1 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0
   ```

   다음은 예제 출력입니다.

   ```
   {
       "IpamInternetRegistryAssociationAsns": [
           {
               "Asn": "77221",
               "LastObservedAt": "2026-07-30T18:00:00.000Z"
           }
       ]
   }
   ```

## 4단계: 자동 ROA 생성을 통한 BYOIP 프로비저닝
<a name="tutorials-byoip-bgp-security-step4"></a>

위임된 RPKI가 활성화되면 프로비저닝 절차가 간소화됩니다.


| 변경 전 (위임된 RPKI 미사용 시) | 변경 후 (위임된 RPKI 사용 시) | 
| --- | --- | 
| --cidr-authorization-context 항목을 필수 제공해야 함 | 여전히 --cidr-authorization-context을(를) 전달하지만 Message="CoveredByInternetRegistryAssociation",Signature=""사용 시 서명된 메시지가 필요하지 않음 | 
| WHOIS 또는 DNS TXT 레코드를 통한 사전 검증 필요 | 불필요 — IPAM이 연결된 CIDR을 기준으로 자체 검증 | 
| 전파 전 RIR에서 ROA를 수동으로 생성해야 함 | 프로비저닝 시 ROA 자동 생성 | 
| 만료 전 ROA를 수동으로 갱신해야 함 | AWS 자동 갱신 — 별도의 조치 불필요 | 

```
aws ec2 provision-ipam-pool-cidr \
    --cidr 18.97.16.0/24 \
    --ipam-pool-id ipam-pool-0da89c821626f1e4b \
    --cidr-authorization-context Message="CoveredByInternetRegistryAssociation",Signature="" \
    --region us-east-1
```

IPAM은 인터넷 레지스트리 연결을 통해 소유권을 검증하고, 풀의 로캘 및 ASN과 정확히 일치하는 엄격한 ROA를 생성합니다. 수동 ROA 설정 단계가 필요 없습니다.

## 5단계: 온프레미스 프리픽스에 대한 ROA 관리
<a name="tutorials-byoip-bgp-security-step5"></a>

AWS(으)로 가져오지 않은 IP 공간의 경우 라우팅 정책 등록(RPR)을 사용합니다.

1. **RPR 생성**

   ```
   aws ec2 create-ipam-routing-policy-registration --region us-east-1 \
       --ipam-id ipam-0de83dba6694560a9 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0 \
       --cidr 18.96.0.0/14 --asns 77221,13446 \
       --permit-more-specific-announcements
   ```

   다음은 예제 출력입니다.

   ```
   {
       "deltaId": "0130c368-1f8c-4283-8f16-66e67e633086",
       "state": "PENDING"
   }
   ```

1. **델타 상태 확인** 변경으로 인해 기존 경로가 무효화되는 경우 오류를 반환하며 실패합니다. 강제로 적용하려면 `--force` 옵션을 사용합니다.

   ```
   aws ec2 get-ipam-routing-policy-registration-deltas --region us-east-1 \
       --ipam-id ipam-0de83dba6694560a9 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0 \
       --delta-id 0130c368-1f8c-4283-8f16-66e67e633086
   ```

1. **배치 업데이트(원자성 보장).** 배치 업데이트는 트랜잭션 단위로 일괄 성공하거나 일괄 실패합니다. 부분 적용은 지원되지 않습니다.

   ```
   aws ec2 batch-modify-ipam-routing-policy-registrations --region us-east-1 \
       --ipam-id ipam-0de83dba6694560a9 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0 \
       --delta-json file://delta.json
   ```

   `delta.json` 항목에는 다음 내용이 포함됩니다.

   ```
   {
       "Add": [
           {
               "prefix": "18.96.0.0/14",
               "asns": ["77221", "13446"],
               "permit-more-specific-announcements": "false"
           }
       ],
       "Delete": [
           {
               "prefix": "18.97.16.0/24",
               "asns": ["77221", "13446"],
               "permit-more-specific-announcements": "false"
           }
       ]
   }
   ```

1. **연결의 모든 등록 항목 확인.**

   ```
   aws ec2 get-ipam-routing-policy-registrations --region us-east-1 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0
   ```

   다음은 예제 출력입니다.

   ```
   {
       "IpamRoutingPolicyRegistrations": [
           {
               "Cidr": "18.96.0.0/14",
               "Asns": ["77221", "13446"],
               "PermitMoreSpecificAnnouncements": false,
               "MaxLength": 14,
               "LatestDeltaId": "0130c368-1f8c-4283-8f16-66e67e633086",
               "State": "create-complete"
           },
           {
               "Cidr": "18.97.16.0/24",
               "Asns": ["77221", "13446"],
               "PermitMoreSpecificAnnouncements": false,
               "MaxLength": 24,
               "LatestDeltaId": "0130c368-1f8c-4283-8f16-66e67e633086",
               "State": "create-complete"
           }
       ]
   }
   ```

1. **특정 프리픽스로 필터링.**

   ```
   aws ec2 get-ipam-routing-policy-registrations --region us-east-1 \
       --ipam-internet-registry-association-id ipam-internet-registry-assoc-036486dfa6af58ee0 \
       --cidr 18.96.0.0/14
   ```

## 6단계: 경로 이상 감지를 위한 CloudWatch 경보 설정
<a name="tutorials-byoip-bgp-security-step6"></a>

IPAM은 각 BYOIP 경로에 대한 CloudWatch 지표(Metrics)를 글로벌 IPAM 계정으로 전송합니다. `RoaExpiration` 지표는 `Cidr`, `RoaPrefix`, `Asn` 및 `MaxLength` 디멘션과 함께 `AWS/IPAM` 네임스페이스로 게시됩니다.


| 유형 | 이름 | 설명 | 
| --- | --- | --- | 
| 지표 | RoaExpiration | ROA 만료까지 남은 일수 | 
| 측정 기준 | ASN | 프리픽스의 ASN | 
| 측정 기준 | Cidr | BYOIP로 가져온 CIDR | 
| 측정 기준 | MaxLength | ROA의 MaxLength | 
| 측정 기준 | RoaPrefix | ROA의 프리픽스 | 

`RoaExpiration`지표는 ROA 만료까지 남은 일수를 반환하므로, 해당 값이 설정한 임계값 이하로 떨어질 때 알람이 발생하도록 설정하세요. 단일 ROA를 대상으로 지정하려면 4가지 디멘션을 모두 입력해야 합니다. 지표가 게시되는 동일한 계정 및 리전에서 알람을 생성합니다.

```
aws cloudwatch put-metric-alarm --region us-east-1 \
    --alarm-name "IPAM-RoaExpiration-203.0.113.0-24" \
    --alarm-description "Alert when the ROA for 203.0.113.0/24 is within 30 days of expiration" \
    --namespace "AWS/IPAM" \
    --metric-name RoaExpiration \
    --dimensions Name=Cidr,Value=203.0.113.0/24 Name=RoaPrefix,Value=203.0.113.0/24 Name=Asn,Value=64512 Name=MaxLength,Value=24 \
    --statistic Minimum \
    --period 86400 \
    --evaluation-periods 1 \
    --threshold 30 \
    --comparison-operator LessThanOrEqualToThreshold \
    --treat-missing-data notBreaching \
    --alarm-actions arn:aws:sns:us-east-1:123456789012:roa-expiry-notifications
```

## 정리
<a name="tutorials-byoip-bgp-security-cleanup"></a>

위임된 RPKI 리소스를 제거하는 방법:

1. 모든 라우팅 정책 등록을 삭제합니다.

1. 인터넷 레지스트리 연결을 연결 해제합니다.

1. (선택 사항) 해당 RIR 포털에서 위임 권한을 제거합니다.

**중요**  
인터넷 레지스트리 연결을 삭제하면 해당 연결과 관련된 모든 AWS 관리형 ROA가 삭제됩니다. 연결을 해제하기 전에 해당 경로를 보호할 대체 ROA 설정이 마련되어 있는지 반드시 확인하세요.

## 관련 리소스
<a name="tutorials-byoip-bgp-security-related"></a>
+ [BGP 경로 보호 모니터링](monitor-bgp-route-security.md)
+ [자습서: IPAM으로 IP 주소 가져오기](tutorials-byoip-ipam.md)
+ [자습서: IPAM으로 ASN 가져오기](tutorials-byoasn.md)
+ [Amazon CloudWatch를 사용하여 IPAM 모니터링](cloudwatch-ipam.md)