

# IP 주소 범위를 AWS 계정으로 가져올 준비를 합니다: 권한 부여
<a name="using-byoip.prepare"></a>

IP 주소 스페이스를 Amazon으로 본인만 가져올 수 있도록 하려면 2가지 권한 부여가 필요합니다.
+ Amazon에 IP 주소 범위를 알릴 수 있는 권한을 부여해야 합니다.
+ IP 주소 범위를 소유하고 있다는 증거를 제공해야 하므로 AWS에 가져올 권한이 있어야 합니다.
**참고**  
BYOIP를 사용하여 IP 주소 범위를 AWS으(로) 가져오는 경우, 이를 알리는 동안 해당 주소 범위의 소유권을 다른 계정 또는 회사로 이전할 수 없습니다. 또한 IP 주소 범위를 하나의 AWS 계정에서 다른 계정으로 직접 전송할 수 없습니다. 소유권을 이전하거나 AWS 계정 간에 이전하려면 주소 범위를 프로비저닝 해제한 다음 새 소유자가 단계에 따라 AWS 계정에 주소 범위를 추가해야 합니다.

Amazon에게 IP 주소 범위를 알리도록 권한을 부여하려면 서명된 권한 부여 메시지를 Amazon에 제공합니다. ROA(Route Origin Authorization)를 사용하여 이 권한 부여를 제공합니다. ROA는 RIR(지역 인터넷 등록 기관)을 통해 생성된 라우팅 공지에 대한 암호화 설명입니다. ROA는 IP 주소 범위, IP 주소 범위를 알릴 수 있는 ASN(자율 시스템 번호) 및 만료 날짜를 포함합니다. ROA는 Amazon에 AS(특정 자율 시스템)에 따라 IP 주소 범위를 알릴 수 있는 권한을 부여합니다.

ROA는 IP 주소 범위를 AWS으(로) 가져오기 위해 AWS 계정에 권한을 부여하지 않습니다. 이 권한 부여를 제공하려면 IP 주소 범위에 대한 RDAP(레지스트리 데이터 액세스 프로토콜) 비고에 자체 서명된 X.509 인증서를 게시해야 합니다. 이 인증서에는 제공된 권한 부여-컨텍스트 서명을 확인하기 위해 AWS이(가) 사용하는 퍼블릭 키가 포함되어 있습니다. 프라이빗 키는 안전하게 보관하고, 권한 부여-컨텍스트 메시지에 서명하는 데 사용합니다.

다음의 섹션에서는 이러한 권한 부여 업무를 완료하기 위한 자세한 단계를 다룹니다. 이러한 단계의 명령은 Linux에서 지원됩니다. Windows를 사용하는 경우, [Linux용 Windows 하위 시스템](https://docs.microsoft.com/en-us/windows/wsl/about)에 액세스하여 Linux 명령을 실행할 수 있습니다.

## 권한 부여를 제공하는 단계
<a name="using-byoip.prepare-steps"></a>
+ [1단계: ROA 객체 생성](#using-byoip.prepare-steps-1)
+ [2단계: 자체 서명된 X.509 인증서 생성](#using-byoip.prepare-steps-2)
+ [3단계: 서명된 권한 부여 메시지 생성](#using-byoip.prepare-steps-3)

## 1단계: ROA 객체 생성
<a name="using-byoip.prepare-steps-1"></a>

ROA 객체를 생성하여 Amazon ASN 16509에 주소 범위를 알릴 수 있는 권한을 부여합니다. 현재 IP 주소 범위를 알릴 수 있는 권한을 부여받은 ASN도 마찬가지입니다. ROA는 AWS으(로) 가져오려는 /24 IP 주소가 포함되어야 하며 최대 길이를 /24로 설정해야 합니다.

ROA 요청 생성에 대한 자세한 내용은 IP 주소 범위를 등록했던 위치에 따라서, 다음 섹션을 참조하세요.
+ ARIN: [ROA 요청](https://www.arin.net/resources/rpki/roarequest.html)
+ RIPE: [ROA 관리](https://www.ripe.net/manage-ips-and-asns/resource-management/certification/resource-certification-roa-management)
+ APNIC: [라우팅 관리](https://www.apnic.net/wp-content/uploads/2017/01/route-roa-management-guide.pdf)

## 2단계: 자체 서명된 X.509 인증서 생성
<a name="using-byoip.prepare-steps-2"></a>

키 쌍과 자체 서명된 X.509 인증서를 생성한 다음 RIR의 RDAP 레코드에 인증서를 추가합니다. 다음 단계에서는 이러한 업무를 수행하는 방법을 설명합니다.

**참고**  
이러한 단계의 `openssl` 명령에는 OpenSSL 버전 1.0.2 이상이 필요합니다.

## X.509 인증서를 생성하고 추가하려면


1. 다음의 명령을 사용하여 RSA 2048-비트 키 쌍을 생성합니다.

   ```
   openssl genrsa -out private.key 2048
   ```

1. 다음의 명령을 사용하여 키 쌍에서 퍼블릭 X.509 인증서를 생성합니다.

   ```
   openssl req -new -x509 -key private.key -days 365 | tr -d "\n" > publickey.cer
   ```

   이 예제에서 인증서가 365일 후에 만료되며, 이 기간이 지난 후에는 신뢰할 수 없습니다. 명령을 실행할 때 올바른 만료를 위해 `–days` 옵션을 원하는 값으로 설정해야 합니다. 다른 정보를 입력하라는 메시지가 표시되면 기본값을 수락할 수 있습니다.

1. RIR에 따라서, 다음의 단계를 사용하여 X.509 인증서로 RIR에 대한 RDAP 레코드를 업데이트합니다.

   1. 다음의 명령을 사용하여 인증서를 확인합니다.

      ```
      cat publickey.cer
      ```

   1. RIR에 대한 RDAP 레코드에 이전에 생성되었던 인증서를 추가합니다. 인코딩된 부분 앞과 뒤에 `-----BEGIN CERTIFICATE-----` 및 `-----END CERTIFICATE-----` 문자열을 포함해야 합니다. 이 모든 내용은 하나의 긴 줄에 있어야 합니다. RDAP를 업데이트하는 절차는 RIR에 따라 다릅니다.
      + ARIN의 경우, [계정 관리자 포털](https://account.arin.net/public/secure/dashboard)을 사용하여 주소 범위를 나타내는 ‘네트워크 정보’ 객체의 ‘공개 주석’ 섹션에 인증서를 추가합니다. 조직의 주석 섹션에 추가하지 않습니다.
      + RIPE의 경우, 주소 범위를 나타내는 ‘inetnum’ 또는 ‘inet6num’ 객체에 새 ‘descr’ 필드로서 인증서를 추가합니다. 대체로 [RIPE 데이터베이스 포털](https://apps.db.ripe.net/db-web-ui/myresources/overview)의 “내 리소스” 섹션에서 찾을 수 있습니다. 조직의 주석 섹션이나 위 객체의 ‘비고’ 필드에 추가하지 않습니다.
      + APNIC의 경우, 이메일을 통해 인증서를 [helpdesk@apnic.net](mailto:helpdesk@apnic.net)로 전송하여 주소 범위의 ‘비고’ 필드에 수동으로 추가합니다. IP 주소의 APNIC 공인 연락처를 사용하여 이메일을 전송합니다.

      아래 프로비저닝 단계가 완료된 후 RIR 레코드에서 인증서를 제거할 수 있습니다.

## 3단계: 서명된 권한 부여 메시지 생성
<a name="using-byoip.prepare-steps-3"></a>

서명된 권한 부여 메시지를 생성하여 Amazon이 IP 주소 범위를 알릴 수 있도록 합니다.

메시지 형식은 다음과 같으며, 여기서 `YYYYMMDD` 날짜는 메시지의 만료 날짜입니다.

```
1|aws|aws-account|address-range|YYYYMMDD|SHA256|RSAPSS
```

## 서명된 권한 부여 메시지를 생성하려면


1. 다음의 예제와 같이 일반 텍스트 권한 부여 메시지를 생성하고 `text_message`으(로) 명명된 변수에 저장합니다. 예제 계정 번호, IP 주소 범위 및 만료 날짜를 고유 값으로 대체합니다.

   ```
   text_message="1|aws|123456789012|203.0.113.0/24|20191201|SHA256|RSAPSS"
   ```

1. 이전 섹션에서 생성된 키 쌍을 사용하여 `text_message`에서 권한 부여 메시지를 서명합니다.

1. 다음의 예제와 같이 메시지를 `signed_message`으(로) 명명된 변수에 저장합니다.

   ```
   signed_message=$(echo $text_message | tr -d "\n" | openssl dgst -sha256 -sigopt 
   						rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign private.key -keyform PEM | openssl base64 | 
   						tr -- '+=/' '-_~' | tr -d "\n")
   ```