

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

# 네트워킹, 보안 그룹 및 IAM 인증 구성
<a name="best-practices-ecs-eks-networking-iam"></a>

Amazon ECS 또는 Amazon EKS의 컨테이너화된 배포를 Neptune에 연결하려면 올바른 네트워크 구성 및 IAM 자격 증명 관리가 필요합니다.

**보안 그룹 체크리스트**
+ Neptune 클러스터 보안 그룹은 Amazon EKS 노드 또는 포드 CIDR 범위에서 포트 8182(또는 Neptune 클러스터에 대해 구성된 사용자 지정 포트)의 인바운드 TCP를 허용해야 합니다.
+ 사용자 지정 네트워킹과 함께 Amazon VPC CNI 플러그인을 사용하는 경우 포드 서브넷에 Neptune 서브넷에 대한 경로가 있는지 확인합니다.
+ Neptune은 Amazon ECS 또는 Amazon EKS 클러스터와 동일한 Amazon VPC에 있거나 Amazon VPC 피어링 또는 Transit Gateway를 통해 연결되어 있어야 합니다.

**컨테이너 내부에서 연결 확인**

애플리케이션 수준 문제를 디버깅하기 전에 컨테이너 내부에서 다음 명령 중 하나를 실행하여 네트워크 경로를 확인합니다.

------
#### [ AWS CLI ]

```
aws neptunedata get-engine-status \
  --endpoint-url https://{{your-neptune-endpoint}}:8182
```

자세한 내용은 AWS CLI 명령 참조의 [get-engine-status](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/get-engine-status.html)를 참조하세요.

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    region_name='{{us-east-1}}',
    endpoint_url='https://{{your-neptune-endpoint}}:8182',
    config=Config(read_timeout=10)
)

response = client.get_engine_status()
print(response['status'])
```

------
#### [ awscurl ]

```
awscurl https://{{your-neptune-endpoint}}:8182/status \
  --region {{us-east-1}} \
  --service neptune-db
```

**참고**  
이 예제에서는 자격 AWS 증명이 환경에 구성되어 있다고 가정합니다. {{us-east-1}}을 Neptune 클러스터의 리전으로 바꿉니다.

------
#### [ curl ]

```
curl -k https://{{your-neptune-endpoint}}:8182/status
```

**참고**  
`-k` 플래그는 인증서 확인을 건너뜁니다. 프로덕션 코드가 아닌 연결 테스트에만 사용합니다.

------

응답이 성공하면 보안 그룹, 라우팅 및 DNS 확인이 모두 작동하는지 확인합니다. 제한 시간은 네트워크 수준 문제를 나타냅니다.

**IAM 자격 증명 새로 고침**

Neptune에서 [IAM 인증을](iam-auth.md) 사용하는 경우 포드가 만료되기 전에 자격 증명을 새로 고쳐야 합니다. 새 배포에는 [Amazon EKS Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)를 사용하는 것이 좋습니다. 서비스 계정에 대한 IAM 역할(IRSA)도 지원되며 널리 사용됩니다.

두 방법 중 하나를 사용하면 시작 시 한 번이 아니라 인증 생성기 함수 *내에서* 자격 증명을 검색합니다. IRSA 및 Pod Identity 토큰은 1시간 후에 만료됩니다. 초기화 시 자격 증명을 캐시하면 토큰이 만료된 `AccessDeniedException: security token expired` 후에서 요청이 실패합니다.
+ gremlin-go의 경우:에 전달된 `gen` 함수 `cfg.Credentials.Retrieve(ctx)` 내에서를 호출합니다`NewDynamicAuth`.
+ Java의 경우: 각 새 연결에서 SigV4 서명을 새로 고`HandshakeInterceptor`치는와 `NeptuneGremlinClient` 함께 사용합니다.

**교차 계정 액세스**

Neptune은 직접 교차 계정 IAM 인증을 지원하지 않습니다. Amazon EKS 클러스터가 Neptune 클러스터와 다른 AWS 계정에 있는 경우, 포드는 인증하기 전에 먼저 Neptune 계정에서 역할을 맡아야 합니다.

**Graph Explorer의 수신 구성**

컨테이너화된 환경에서 [Graph Explorer](https://github.com/aws/graph-explorer)를 실행하는 경우 만이 아니라 프록시가 모든 경로에 액세스할 수 있는지 확인합니다`/explorer`. Amazon EKS에서 모든 경로를 허용하도록 수신 컨트롤러 규칙을 구성합니다. Amazon ECS에서 모든 경로를 Graph Explorer 컨테이너로 전달하도록 Application Load Balancer 대상 그룹 및 리스너 규칙을 구성합니다. Graph Explorer의 프록시는 `/summary`, `/gremlin`, `/openCypher`및를 호출합니다`/sparql`. 경로 제한 라우팅 규칙은 프록시를 자동으로 중단합니다.