

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# IAM 정책을 사용하여 API 액세스 제어
<a name="ip-access"></a>

IAM 정책을 사용하여 IP 주소를 AWS 서비스 기반으로에 대한 액세스를 제어하는 경우 IPv6 주소 범위를 포함하도록 정책을 업데이트해야 할 수 있습니다. 이 가이드는 IPv4와 IPv6의 차이점을 설명하고, 두 프로토콜을 모두 지원하도록 IAM 정책을 업데이트하는 방법을 안내합니다. 이러한 변경을 구현하면 IPv6를 지원하면서도 AWS 리소스에 대한 보안 액세스를 유지할 수 있습니다.

## IPv6란?
<a name="what-is-ipv6"></a>

IPv6는 결국에는 IPv4를 대체하기 위해 개발된 차세대 IP 표준입니다. 이전 버전인 IPv4는 32비트 주소 지정 체계를 사용하여 43억 개의 디바이스를 지원합니다. IPv6는 128비트 주소 지정 체계를 사용하여 약 340조(또는 2의 128승) 개의 디바이스를 지원합니다.

자세한 내용은 [VPC IPv6 웹 페이지](https://aws.amazon.com/vpc/ipv6/)를 참조하세요.

다음은 IPv6 주소의 예시입니다.

```
2001:cdba:0000:0000:0000:0000:3257:9652 # This is a full, unabbreviated IPv6 address.
2001:cdba:0:0:0:0:3257:9652             # The same address with leading zeros in each group omitted
2001:cdba::3257:965                     # A compressed version of the same address.
```

## IAM 듀얼 스택(IPv4 및 IPv6) 정책
<a name="ipv6-access"></a>

IAM 정책을 사용하여 Secrets Manager API에 대한 액세스를 제어하고, 구성된 범위를 벗어난 IP 주소가 Secrets Manager API에 액세스하지 못하도록 할 수 있습니다.

Secrets Manager API의 *secretsmanager.\$1region\$1.amazonaws.com* 듀얼 스택 엔드포인트는 IPv6와 IPv4 모두를 지원합니다.

IPv4와 IPv6를 모두 지원해야 하는 경우, IPv6 주소를 처리하도록 IP 주소 필터링 정책을 업데이트해야 합니다. 그러지 않으면 IPv6를 통해 Secrets Manager에 연결할 수 없습니다.

### 누가 이 변경을 해야 하나요?
<a name="customers-impacted"></a>

`aws:sourceIp`를 포함한 정책에서 이중 주소 지정을 사용하는 경우, 이 변경이 필요합니다. *이중 주소 지정*이란 네트워크에서 IPv4와 IPv6를 모두 지원한다는 의미입니다.

이중 주소 지정을 사용하는 경우, 현재 IPv4 형식 주소만 사용하는 IAM 정책을 IPv6 형식 주소도 포함하도록 업데이트해야 합니다.

### 누가 이 변경을 하지 않아도 되나요?
<a name="customers-not-impacted"></a>

IPv4 네트워크*만* 사용하는 경우, 이 변경은 필요하지 않습니다.

## IAM 정책에 IPv6 추가
<a name="updating-for-ipv6"></a>

IAM 정책은 `aws:SourceIp` 조건 키를 사용하여 특정 IP 주소에서의 액세스를 제어합니다. 네트워크가 이중 주소 지정(IPv4 및 IPv6)을 사용하는 경우, IAM 정책을 IPv6 주소 범위도 포함하도록 업데이트해야 합니다.

정책의 `Condition` 요소에서는 IP 주소 조건에 `IpAddress` 및 `NotIpAddress` 연산자를 사용합니다. 문자열 연산자는 다양한 유효 IPv6 주소 형식을 처리할 수 없으므로 사용하지 마세요.

이 예제에서는 `aws:SourceIp`를 사용했습니다. VPC의 경우 `aws:VpcSourceIp`를 대신 사용하세요.

다음은 *IAM 사용 설명서*의 [소스 IP 참조 정책에 AWS 따라에 대한 액세스 거부](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html)입니다. `Condition` 요소의 `NotIpAddress`에 두 개의 IPv4 주소 범위(`192.0.2.0/24` 및 `203.0.113.0/24`)가 나열되어 있으며, 이 범위의 주소는 API에 대한 액세스가 거부됩니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "192.0.2.0/24",
                    "203.0.113.0/24"
                ]
            },
            "Bool": {
                "aws:ViaAWSService": "false"
            }
        }
    }
}
```

------

이 정책을 업데이트하려면 IPv6 주소 범위 `2001:DB8:1234:5678::/64` 및 `2001:cdba:3257:8593::/64`를 포함하도록 `Condition` 요소를 변경합니다.

**참고**  
기존 IPv4 주소는 삭제하지 마세요. 하위 호환성을 위해 필요합니다.

```
"Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "192.0.2.0/24", <<DO NOT REMOVE existing IPv4 address>>
                        "203.0.113.0/24", <<DO NOT REMOVE existing IPv4 address>>
                        "2001:DB8:1234:5678::/64", <<New IPv6 IP address>>
                        "2001:cdba:3257:8593::/64" <<New IPv6 IP address>>
                    ]
                },
                "Bool": {
                    "aws:ViaAWSService": "false"
                }
            }
```

이 정책을 VPC에 맞게 업데이트하려면 `aws:SourceIp` 대신 `aws:VpcSourceIp`를 사용하세요.

```
"Condition": {
                "NotIpAddress": {
                    "aws:VpcSourceIp": [
                        "10.0.2.0/24", <<DO NOT REMOVE existing IPv4 address>>
                        "10.0.113.0/24", <<DO NOT REMOVE existing IPv4 address>>
                        "fc00:DB8:1234:5678::/64", <<New IPv6 IP address>>
                        "fc00:cdba:3257:8593::/64" <<New IPv6 IP address>>
                    ]
                },
                "Bool": {
                    "aws:ViaAWSService": "false"
                }
            }
```

## 클라이언트가 IPv6를 지원하는지 확인하기
<a name="testing-connection"></a>

*secretsmanager.\$1region\$1.amazonaws.com* 엔드포인트를 사용하는 경우, 연결이 가능한지 확인해야 합니다. 다음 단계에서는 확인을 수행하는 방법을 설명합니다.

이 예제에서는 Linux와 curl 8.6.0 버전을 사용하며, IPv6가 활성화된 [AWS Secrets Manager 서비스](https://docs.aws.amazon.com/general/latest/gr/secretsmanager.html) 엔드포인트(**amazonaws.com**)를 대상으로 합니다.

**참고**  
**secretsmanager.\$1region\$1.amazonaws.com**은 [일반적인 듀얼 스택 명명 규칙](https://docs.aws.amazon.com/general/latest/gr/rande.html#dual-stack-endpoints)과 다릅니다. Secrets Manager 엔드포인트의 전체 목록은 [AWS Secrets Manager 엔드포인트](asm_access.md#endpoints) 섹션을 참조하세요.  
를 서비스가 위치한 리전과 동일한 리전 AWS 리전 으로 변경합니다. 이 예제에서는 미국 동부(버지니아 북부) – `us-east-1` 엔드포인트를 사용합니다.

1. 다음 `dig` 명령을 사용하여 엔드포인트가 IPv6 주소로 환원되는지 확인합니다.

   ```
   $ dig +short AAAA secretsmanager.us-east-1.amazonaws.com 
   
   > 2600:1f18:e2f:4e05:1a8a:948e:7c08:c1c3
   ```

1. 이제 다음 `curl` 명령을 사용하여 클라이언트 네트워크에서 IPv6 연결을 만들 수 있는지 확인합니다. 404 응답 코드는 연결 성공, 0 응답 코드는 연결 실패를 의미합니다.

   ```
   $ curl --ipv6 -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://secretsmanager.us-east-1.amazonaws.com 
   
   > remote ip: 2600:1f18:e2f:4e05:1a8a:948e:7c08:c1c3
   > response code: 404
   ```

원격 IP 주소가 식별되었으며 **동시에** 응답 코드가 `0`이 아닌 경우 IPv6를 사용하여 엔드포인트에 네트워크가 성공적으로 연결되었습니다. 운영 체제가 클라이언트에 유효한 프로토콜을 선택해야 하므로 원격 IP가 IPv6 주소여야 합니다.

원격 IP가 비어 있거나 응답 코드가 `0`인 경우 클라이언트 네트워크 또는 엔드포인트에 대한 네트워크 경로는 IPv4 전용입니다. 다음 `curl` 명령으로 이 구성을 확인할 수 있습니다.

```
$ curl -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://secretsmanager.us-east-1.amazonaws.com 

> remote ip: 3.123.154.250
> response code: 404
```